@zzzen/pyright-internal 1.1.255 → 1.2.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1409) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  4. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  5. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.js +9 -2
  8. package/dist/analyzer/binder.js.map +1 -1
  9. package/dist/analyzer/checker.js +19 -26
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowUtils.js +33 -0
  12. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  13. package/dist/analyzer/dataClasses.js +6 -4
  14. package/dist/analyzer/dataClasses.js.map +1 -1
  15. package/dist/analyzer/declaration.js +11 -1
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResult.js +7 -0
  18. package/dist/analyzer/importResult.js.map +1 -1
  19. package/dist/analyzer/importStatementUtils.js +10 -1
  20. package/dist/analyzer/importStatementUtils.js.map +1 -1
  21. package/dist/analyzer/namedTuples.js +1 -1
  22. package/dist/analyzer/namedTuples.js.map +1 -1
  23. package/dist/analyzer/packageTypeReport.js +10 -1
  24. package/dist/analyzer/packageTypeReport.js.map +1 -1
  25. package/dist/analyzer/parseTreeUtils.js +11 -2
  26. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  27. package/dist/analyzer/program.d.ts +2 -1
  28. package/dist/analyzer/program.js +27 -23
  29. package/dist/analyzer/program.js.map +1 -1
  30. package/dist/analyzer/protocols.js +3 -1
  31. package/dist/analyzer/protocols.js.map +1 -1
  32. package/dist/analyzer/scope.js +22 -1
  33. package/dist/analyzer/scope.js.map +1 -1
  34. package/dist/analyzer/service.d.ts +20 -8
  35. package/dist/analyzer/service.js +39 -19
  36. package/dist/analyzer/service.js.map +1 -1
  37. package/dist/analyzer/sourceFile.js +1 -1
  38. package/dist/analyzer/sourceFile.js.map +1 -1
  39. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
  40. package/dist/analyzer/sourceFileInfoUtils.js +15 -0
  41. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
  42. package/dist/analyzer/symbol.d.ts +3 -1
  43. package/dist/analyzer/symbol.js +39 -1
  44. package/dist/analyzer/symbol.js.map +1 -1
  45. package/dist/analyzer/typeDocStringUtils.js +10 -2
  46. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  47. package/dist/analyzer/typeEvaluator.js +86 -32
  48. package/dist/analyzer/typeEvaluator.js.map +1 -1
  49. package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
  50. package/dist/analyzer/typeEvaluatorTypes.js +65 -1
  51. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  52. package/dist/analyzer/typeGuards.d.ts +2 -0
  53. package/dist/analyzer/typeGuards.js +113 -69
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typePrinter.js +23 -1
  56. package/dist/analyzer/typePrinter.js.map +1 -1
  57. package/dist/analyzer/typeUtils.js +119 -28
  58. package/dist/analyzer/typeUtils.js.map +1 -1
  59. package/dist/analyzer/typedDicts.js +2 -1
  60. package/dist/analyzer/typedDicts.js.map +1 -1
  61. package/dist/analyzer/types.d.ts +1 -0
  62. package/dist/analyzer/types.js +195 -1
  63. package/dist/analyzer/types.js.map +1 -1
  64. package/dist/backgroundAnalysisBase.d.ts +1 -1
  65. package/dist/commands/commands.js +9 -0
  66. package/dist/commands/commands.js.map +1 -1
  67. package/dist/common/commandLineOptions.js +8 -1
  68. package/dist/common/commandLineOptions.js.map +1 -1
  69. package/dist/common/core.js +7 -1
  70. package/dist/common/core.js.map +1 -1
  71. package/dist/common/diagnostic.js +9 -1
  72. package/dist/common/diagnostic.js.map +1 -1
  73. package/dist/common/host.js +7 -1
  74. package/dist/common/host.js.map +1 -1
  75. package/dist/common/pathUtils.d.ts +1 -0
  76. package/dist/common/pathUtils.js +34 -1
  77. package/dist/common/pathUtils.js.map +1 -1
  78. package/dist/common/stringUtils.d.ts +1 -0
  79. package/dist/common/stringUtils.js +8 -1
  80. package/dist/common/stringUtils.js.map +1 -1
  81. package/dist/languageServerBase.d.ts +10 -3
  82. package/dist/languageServerBase.js +40 -14
  83. package/dist/languageServerBase.js.map +1 -1
  84. package/dist/languageService/analyzerServiceExecutor.js +3 -0
  85. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  86. package/dist/languageService/autoImporter.js +2 -1
  87. package/dist/languageService/autoImporter.js.map +1 -1
  88. package/dist/languageService/completionProvider.d.ts +2 -2
  89. package/dist/languageService/completionProvider.js +3 -5
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/parser/parseNodes.d.ts +3 -0
  92. package/dist/parser/parseNodes.js +110 -2
  93. package/dist/parser/parseNodes.js.map +1 -1
  94. package/dist/parser/parser.d.ts +0 -1
  95. package/dist/parser/parser.js +26 -12
  96. package/dist/parser/parser.js.map +1 -1
  97. package/dist/parser/stringTokenUtils.js +8 -1
  98. package/dist/parser/stringTokenUtils.js.map +1 -1
  99. package/dist/parser/tokenizerTypes.js +155 -1
  100. package/dist/parser/tokenizerTypes.js.map +1 -1
  101. package/dist/pyright.js +6 -1
  102. package/dist/pyright.js.map +1 -1
  103. package/dist/tests/chainedSourceFiles.test.js +12 -9
  104. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  105. package/dist/tests/checker.test.js +4 -0
  106. package/dist/tests/checker.test.js.map +1 -1
  107. package/dist/tests/config.test.js +14 -13
  108. package/dist/tests/config.test.js.map +1 -1
  109. package/dist/tests/debug.test.js +6 -0
  110. package/dist/tests/debug.test.js.map +1 -1
  111. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
  112. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
  113. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
  114. package/dist/tests/fourslash/fourslash.d.ts +16 -0
  115. package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
  116. package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
  117. package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
  118. package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
  119. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  120. package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
  121. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  122. package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
  123. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  124. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  125. package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
  126. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  127. package/dist/tests/harness/fourslash/testState.d.ts +4 -3
  128. package/dist/tests/harness/fourslash/testState.js +27 -11
  129. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  130. package/dist/tests/harness/vfs/pathValidation.js +25 -1
  131. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  132. package/dist/tests/pathUtils.test.js +17 -0
  133. package/dist/tests/pathUtils.test.js.map +1 -1
  134. package/dist/tests/testUtils.js +1 -1
  135. package/dist/tests/testUtils.js.map +1 -1
  136. package/dist/tests/typeEvaluator1.test.js +9 -1
  137. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  138. package/dist/tests/typeEvaluator2.test.js +9 -1
  139. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  140. package/dist/tests/typeEvaluator3.test.js +4 -0
  141. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  142. package/dist/workspaceMap.d.ts +2 -1
  143. package/dist/workspaceMap.js +25 -3
  144. package/dist/workspaceMap.js.map +1 -1
  145. package/package.json +45 -45
  146. package/src/analyzer/aliasDeclarationUtils.ts +0 -169
  147. package/src/analyzer/analysis.ts +0 -92
  148. package/src/analyzer/analyzerFileInfo.ts +0 -56
  149. package/src/analyzer/analyzerNodeInfo.ts +0 -198
  150. package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
  151. package/src/analyzer/binder.ts +0 -4081
  152. package/src/analyzer/checker.ts +0 -5507
  153. package/src/analyzer/circularDependency.ts +0 -52
  154. package/src/analyzer/codeFlowEngine.ts +0 -1548
  155. package/src/analyzer/codeFlowTypes.ts +0 -266
  156. package/src/analyzer/codeFlowUtils.ts +0 -436
  157. package/src/analyzer/commentUtils.ts +0 -174
  158. package/src/analyzer/constraintSolver.ts +0 -926
  159. package/src/analyzer/constructorTransform.ts +0 -317
  160. package/src/analyzer/dataClasses.ts +0 -999
  161. package/src/analyzer/declaration.ts +0 -252
  162. package/src/analyzer/declarationUtils.ts +0 -238
  163. package/src/analyzer/docStringConversion.ts +0 -850
  164. package/src/analyzer/docStringUtils.ts +0 -112
  165. package/src/analyzer/functionTransform.ts +0 -137
  166. package/src/analyzer/importResolver.ts +0 -2308
  167. package/src/analyzer/importResult.ts +0 -98
  168. package/src/analyzer/importStatementUtils.ts +0 -834
  169. package/src/analyzer/namedTuples.ts +0 -422
  170. package/src/analyzer/packageTypeReport.ts +0 -108
  171. package/src/analyzer/packageTypeVerifier.ts +0 -1466
  172. package/src/analyzer/parentDirectoryCache.ts +0 -88
  173. package/src/analyzer/parseTreeCleaner.ts +0 -35
  174. package/src/analyzer/parseTreeUtils.ts +0 -2165
  175. package/src/analyzer/parseTreeWalker.ts +0 -663
  176. package/src/analyzer/patternMatching.ts +0 -1356
  177. package/src/analyzer/program.ts +0 -2778
  178. package/src/analyzer/properties.ts +0 -534
  179. package/src/analyzer/protocols.ts +0 -660
  180. package/src/analyzer/pyTypedUtils.ts +0 -52
  181. package/src/analyzer/pythonPathUtils.ts +0 -201
  182. package/src/analyzer/scope.ts +0 -202
  183. package/src/analyzer/scopeUtils.ts +0 -81
  184. package/src/analyzer/service.ts +0 -1679
  185. package/src/analyzer/sourceFile.ts +0 -1401
  186. package/src/analyzer/sourceMapper.ts +0 -717
  187. package/src/analyzer/staticExpressions.ts +0 -308
  188. package/src/analyzer/symbol.ts +0 -249
  189. package/src/analyzer/symbolNameUtils.ts +0 -50
  190. package/src/analyzer/symbolUtils.ts +0 -49
  191. package/src/analyzer/testWalker.ts +0 -101
  192. package/src/analyzer/tracePrinter.ts +0 -264
  193. package/src/analyzer/typeCache.ts +0 -181
  194. package/src/analyzer/typeDocStringUtils.ts +0 -371
  195. package/src/analyzer/typeEvaluator.ts +0 -23395
  196. package/src/analyzer/typeEvaluatorTypes.ts +0 -452
  197. package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
  198. package/src/analyzer/typeGuards.ts +0 -1828
  199. package/src/analyzer/typePrinter.ts +0 -807
  200. package/src/analyzer/typeStubWriter.ts +0 -727
  201. package/src/analyzer/typeUtils.ts +0 -3126
  202. package/src/analyzer/typeVarContext.ts +0 -330
  203. package/src/analyzer/typedDicts.ts +0 -950
  204. package/src/analyzer/types.ts +0 -2857
  205. package/src/backgroundAnalysis.ts +0 -49
  206. package/src/backgroundAnalysisBase.ts +0 -606
  207. package/src/backgroundThreadBase.ts +0 -143
  208. package/src/commands/commandController.ts +0 -62
  209. package/src/commands/commandResult.ts +0 -21
  210. package/src/commands/commands.ts +0 -16
  211. package/src/commands/createTypeStub.ts +0 -56
  212. package/src/commands/quickActionCommand.ts +0 -40
  213. package/src/commands/restartServer.ts +0 -20
  214. package/src/common/cancellationUtils.ts +0 -71
  215. package/src/common/chokidarFileWatcherProvider.ts +0 -74
  216. package/src/common/collectionUtils.ts +0 -379
  217. package/src/common/commandLineOptions.ts +0 -132
  218. package/src/common/configOptions.ts +0 -1291
  219. package/src/common/console.ts +0 -201
  220. package/src/common/core.ts +0 -152
  221. package/src/common/crypto.ts +0 -60
  222. package/src/common/debug.ts +0 -144
  223. package/src/common/deferred.ts +0 -78
  224. package/src/common/diagnostic.ts +0 -191
  225. package/src/common/diagnosticRules.ts +0 -80
  226. package/src/common/diagnosticSink.ts +0 -150
  227. package/src/common/editAction.ts +0 -46
  228. package/src/common/extensibility.ts +0 -35
  229. package/src/common/extensions.ts +0 -21
  230. package/src/common/fileBasedCancellationUtils.ts +0 -274
  231. package/src/common/fileSystem.ts +0 -152
  232. package/src/common/fullAccessHost.ts +0 -203
  233. package/src/common/host.ts +0 -49
  234. package/src/common/logTracker.ts +0 -157
  235. package/src/common/lspUtils.ts +0 -18
  236. package/src/common/memUtils.ts +0 -36
  237. package/src/common/pathConsts.ts +0 -16
  238. package/src/common/pathUtils.ts +0 -987
  239. package/src/common/positionUtils.ts +0 -78
  240. package/src/common/progressReporter.ts +0 -53
  241. package/src/common/pythonVersion.ts +0 -74
  242. package/src/common/realFileSystem.ts +0 -433
  243. package/src/common/stringUtils.ts +0 -161
  244. package/src/common/textEditUtils.ts +0 -31
  245. package/src/common/textRange.ts +0 -225
  246. package/src/common/textRangeCollection.ts +0 -122
  247. package/src/common/timing.ts +0 -105
  248. package/src/common/uriParser.ts +0 -26
  249. package/src/common/workspaceEditUtils.ts +0 -100
  250. package/src/languageServerBase.ts +0 -1556
  251. package/src/languageService/analyzerServiceExecutor.ts +0 -144
  252. package/src/languageService/autoImporter.ts +0 -926
  253. package/src/languageService/callHierarchyProvider.ts +0 -476
  254. package/src/languageService/codeActionProvider.ts +0 -85
  255. package/src/languageService/completionProvider.ts +0 -3103
  256. package/src/languageService/definitionProvider.ts +0 -235
  257. package/src/languageService/documentHighlightProvider.ts +0 -61
  258. package/src/languageService/documentSymbolCollector.ts +0 -466
  259. package/src/languageService/documentSymbolProvider.ts +0 -466
  260. package/src/languageService/hoverProvider.ts +0 -499
  261. package/src/languageService/importAdder.ts +0 -437
  262. package/src/languageService/importSorter.ts +0 -196
  263. package/src/languageService/indentationUtils.ts +0 -813
  264. package/src/languageService/quickActions.ts +0 -113
  265. package/src/languageService/referencesProvider.ts +0 -316
  266. package/src/languageService/renameModuleProvider.ts +0 -1400
  267. package/src/languageService/signatureHelpProvider.ts +0 -227
  268. package/src/languageService/tooltipUtils.ts +0 -147
  269. package/src/localization/localize.ts +0 -1272
  270. package/src/localization/package.nls.de.json +0 -3
  271. package/src/localization/package.nls.en-us.json +0 -636
  272. package/src/localization/package.nls.es.json +0 -3
  273. package/src/localization/package.nls.fr.json +0 -3
  274. package/src/localization/package.nls.ja.json +0 -3
  275. package/src/localization/package.nls.ru.json +0 -3
  276. package/src/localization/package.nls.zh-cn.json +0 -3
  277. package/src/localization/package.nls.zh-tw.json +0 -3
  278. package/src/nodeMain.ts +0 -21
  279. package/src/nodeServer.ts +0 -30
  280. package/src/parser/characterStream.ts +0 -145
  281. package/src/parser/characters.ts +0 -285
  282. package/src/parser/parseNodes.ts +0 -2338
  283. package/src/parser/parser.ts +0 -4859
  284. package/src/parser/stringTokenUtils.ts +0 -564
  285. package/src/parser/tokenizer.ts +0 -1379
  286. package/src/parser/tokenizerTypes.ts +0 -420
  287. package/src/parser/unicode.ts +0 -2917
  288. package/src/pyright.ts +0 -824
  289. package/src/pyrightFileSystem.ts +0 -237
  290. package/src/readonlyAugmentedFileSystem.ts +0 -204
  291. package/src/server.ts +0 -298
  292. package/src/tests/chainedSourceFiles.test.ts +0 -183
  293. package/src/tests/checker.test.ts +0 -445
  294. package/src/tests/collectionUtils.test.ts +0 -178
  295. package/src/tests/common.test.ts +0 -117
  296. package/src/tests/config.test.ts +0 -291
  297. package/src/tests/debug.test.ts +0 -120
  298. package/src/tests/deferred.test.ts +0 -54
  299. package/src/tests/diagnosticOverrides.test.ts +0 -104
  300. package/src/tests/docStringConversion.test.ts +0 -823
  301. package/src/tests/docStringUtils.test.ts +0 -57
  302. package/src/tests/documentSymbolCollector.test.ts +0 -735
  303. package/src/tests/filesystem.test.ts +0 -215
  304. package/src/tests/fourSlashParser.test.ts +0 -330
  305. package/src/tests/fourSlashRunner.test.ts +0 -36
  306. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
  307. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
  308. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
  309. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
  310. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
  311. package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
  312. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
  313. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
  314. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
  315. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
  316. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
  317. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
  318. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
  319. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
  320. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
  321. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
  322. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
  323. package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
  324. package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
  325. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
  326. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
  327. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
  328. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
  329. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
  330. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
  331. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
  332. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
  333. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
  334. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
  335. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
  336. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
  337. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
  338. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
  339. package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
  340. package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
  341. package/src/tests/fourslash/completions.fourslash.ts +0 -51
  342. package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
  343. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
  344. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
  345. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
  346. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
  347. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
  348. package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
  349. package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
  350. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
  351. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
  352. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
  353. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
  354. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
  355. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
  356. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
  357. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
  358. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
  359. package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
  360. package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
  361. package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
  362. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
  363. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
  364. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
  365. package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
  366. package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
  367. package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
  368. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
  369. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
  370. package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
  371. package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
  372. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
  373. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
  374. package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
  375. package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
  376. package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
  377. package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
  378. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
  379. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
  380. package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
  381. package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
  382. package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
  383. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
  384. package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
  385. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
  386. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
  387. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
  388. package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
  389. package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
  390. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
  391. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
  392. package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
  393. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
  394. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
  395. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
  396. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
  397. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
  398. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
  399. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
  400. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
  401. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
  402. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
  403. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
  404. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
  405. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
  406. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
  407. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
  408. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
  409. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
  410. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
  411. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
  412. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
  413. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
  414. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
  415. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
  416. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
  417. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
  418. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
  419. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
  420. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
  421. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
  422. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
  423. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
  424. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
  425. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
  426. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
  427. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
  428. package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
  429. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
  430. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
  431. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
  432. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
  433. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
  434. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
  435. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
  436. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
  437. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
  438. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
  439. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
  440. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
  441. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
  442. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
  443. package/src/tests/fourslash/fourslash.ts +0 -411
  444. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
  445. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
  446. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
  447. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
  448. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
  449. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
  450. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
  451. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
  452. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
  453. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
  454. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
  455. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
  456. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
  457. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
  458. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
  459. package/src/tests/fourslash/hover.fourslash.ts +0 -20
  460. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
  461. package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
  462. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
  463. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
  464. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
  465. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
  466. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
  467. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
  468. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
  469. package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
  470. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
  471. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
  472. package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
  473. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
  474. package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
  475. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
  476. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
  477. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
  478. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
  479. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
  480. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
  481. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
  482. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
  483. package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
  484. package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
  485. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
  486. package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
  487. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
  488. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
  489. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
  490. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
  491. package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
  492. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
  493. package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
  494. package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
  495. package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
  496. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
  497. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
  498. package/src/tests/fourslash/rename.fourslash.ts +0 -29
  499. package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
  500. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
  501. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
  502. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
  503. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
  504. package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
  505. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
  506. package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
  507. package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
  508. package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
  509. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
  510. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
  511. package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
  512. package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
  513. package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
  514. package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
  515. package/src/tests/harness/fourslash/runner.ts +0 -99
  516. package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
  517. package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
  518. package/src/tests/harness/fourslash/testState.ts +0 -1993
  519. package/src/tests/harness/testAccessHost.ts +0 -23
  520. package/src/tests/harness/testHost.ts +0 -177
  521. package/src/tests/harness/utils.ts +0 -355
  522. package/src/tests/harness/vfs/factory.ts +0 -199
  523. package/src/tests/harness/vfs/filesystem.ts +0 -1893
  524. package/src/tests/harness/vfs/pathValidation.ts +0 -154
  525. package/src/tests/importAdder.test.ts +0 -1361
  526. package/src/tests/importResolver.test.ts +0 -534
  527. package/src/tests/importStatementUtils.test.ts +0 -526
  528. package/src/tests/indentationUtils.ptvs.test.ts +0 -388
  529. package/src/tests/indentationUtils.reindent.test.ts +0 -403
  530. package/src/tests/indentationUtils.test.ts +0 -455
  531. package/src/tests/ipythonMode.test.ts +0 -365
  532. package/src/tests/localizer.test.ts +0 -47
  533. package/src/tests/parseTreeUtils.test.ts +0 -281
  534. package/src/tests/parser.test.ts +0 -99
  535. package/src/tests/pathUtils.test.ts +0 -321
  536. package/src/tests/pyrightFileSystem.test.ts +0 -183
  537. package/src/tests/renameModule.folder.test.ts +0 -261
  538. package/src/tests/renameModule.fromImports.test.ts +0 -952
  539. package/src/tests/renameModule.imports.test.ts +0 -450
  540. package/src/tests/renameModule.misc.test.ts +0 -765
  541. package/src/tests/renameModule.relativePath.test.ts +0 -277
  542. package/src/tests/renameModuleTestUtils.ts +0 -210
  543. package/src/tests/samples/abstractClass1.py +0 -51
  544. package/src/tests/samples/abstractClass2.py +0 -25
  545. package/src/tests/samples/abstractClass3.py +0 -30
  546. package/src/tests/samples/abstractClass4.py +0 -30
  547. package/src/tests/samples/abstractClass5.py +0 -42
  548. package/src/tests/samples/abstractClass6.py +0 -25
  549. package/src/tests/samples/abstractClass7.py +0 -22
  550. package/src/tests/samples/abstractClass8.py +0 -27
  551. package/src/tests/samples/annotated1.py +0 -72
  552. package/src/tests/samples/annotatedVar1.py +0 -22
  553. package/src/tests/samples/annotatedVar2.py +0 -28
  554. package/src/tests/samples/annotatedVar3.py +0 -54
  555. package/src/tests/samples/annotatedVar4.py +0 -24
  556. package/src/tests/samples/annotatedVar5.py +0 -37
  557. package/src/tests/samples/annotatedVar6.py +0 -22
  558. package/src/tests/samples/annotatedVar7.py +0 -13
  559. package/src/tests/samples/annotatedVar8.py +0 -29
  560. package/src/tests/samples/annotations1.py +0 -98
  561. package/src/tests/samples/annotations2.py +0 -33
  562. package/src/tests/samples/annotations3.py +0 -43
  563. package/src/tests/samples/annotations4.py +0 -54
  564. package/src/tests/samples/annotations5.py +0 -9
  565. package/src/tests/samples/annotations6.py +0 -29
  566. package/src/tests/samples/assert1.py +0 -22
  567. package/src/tests/samples/assertType1.py +0 -46
  568. package/src/tests/samples/assignment1.py +0 -58
  569. package/src/tests/samples/assignment10.py +0 -14
  570. package/src/tests/samples/assignment2.py +0 -40
  571. package/src/tests/samples/assignment3.py +0 -46
  572. package/src/tests/samples/assignment4.py +0 -20
  573. package/src/tests/samples/assignment5.py +0 -16
  574. package/src/tests/samples/assignment6.py +0 -25
  575. package/src/tests/samples/assignment7.py +0 -13
  576. package/src/tests/samples/assignment8.py +0 -40
  577. package/src/tests/samples/assignment9.py +0 -25
  578. package/src/tests/samples/assignmentExpr1.py +0 -23
  579. package/src/tests/samples/assignmentExpr2.py +0 -49
  580. package/src/tests/samples/assignmentExpr3.py +0 -27
  581. package/src/tests/samples/assignmentExpr4.py +0 -49
  582. package/src/tests/samples/assignmentExpr5.py +0 -15
  583. package/src/tests/samples/assignmentExpr6.py +0 -10
  584. package/src/tests/samples/assignmentExpr7.py +0 -13
  585. package/src/tests/samples/assignmentExpr8.py +0 -11
  586. package/src/tests/samples/assignmentExpr9.py +0 -28
  587. package/src/tests/samples/async1.py +0 -49
  588. package/src/tests/samples/augmentedAssignment1.py +0 -62
  589. package/src/tests/samples/augmentedAssignment2.py +0 -23
  590. package/src/tests/samples/augmentedAssignment3.py +0 -8
  591. package/src/tests/samples/await1.py +0 -23
  592. package/src/tests/samples/await2.py +0 -25
  593. package/src/tests/samples/badToken1.py +0 -6
  594. package/src/tests/samples/builtins1.py +0 -2
  595. package/src/tests/samples/call1.py +0 -93
  596. package/src/tests/samples/call2.py +0 -118
  597. package/src/tests/samples/call3.py +0 -168
  598. package/src/tests/samples/call4.py +0 -13
  599. package/src/tests/samples/call5.py +0 -95
  600. package/src/tests/samples/call6.py +0 -35
  601. package/src/tests/samples/call7.py +0 -57
  602. package/src/tests/samples/callSite1.py +0 -6
  603. package/src/tests/samples/callSite2.py +0 -12
  604. package/src/tests/samples/callable1.py +0 -53
  605. package/src/tests/samples/callable2.py +0 -58
  606. package/src/tests/samples/callable3.py +0 -28
  607. package/src/tests/samples/callable4.py +0 -32
  608. package/src/tests/samples/callable5.py +0 -40
  609. package/src/tests/samples/callable6.py +0 -83
  610. package/src/tests/samples/callbackProtocol1.py +0 -119
  611. package/src/tests/samples/callbackProtocol2.py +0 -29
  612. package/src/tests/samples/callbackProtocol3.py +0 -23
  613. package/src/tests/samples/callbackProtocol4.py +0 -73
  614. package/src/tests/samples/callbackProtocol5.py +0 -66
  615. package/src/tests/samples/callbackProtocol6.py +0 -66
  616. package/src/tests/samples/callbackProtocol7.py +0 -16
  617. package/src/tests/samples/callbackProtocol8.py +0 -16
  618. package/src/tests/samples/capturedVariable1.py +0 -106
  619. package/src/tests/samples/circular1.py +0 -16
  620. package/src/tests/samples/circular2.py +0 -38
  621. package/src/tests/samples/circularBaseClass.py +0 -17
  622. package/src/tests/samples/classGetItem1.py +0 -30
  623. package/src/tests/samples/classVar1.py +0 -41
  624. package/src/tests/samples/classVar2.py +0 -29
  625. package/src/tests/samples/classVar3.py +0 -46
  626. package/src/tests/samples/classVar4.py +0 -36
  627. package/src/tests/samples/classes1.py +0 -50
  628. package/src/tests/samples/classes3.py +0 -48
  629. package/src/tests/samples/classes4.py +0 -15
  630. package/src/tests/samples/classes5.py +0 -260
  631. package/src/tests/samples/classes6.py +0 -16
  632. package/src/tests/samples/classes7.py +0 -18
  633. package/src/tests/samples/classes8.py +0 -47
  634. package/src/tests/samples/codeFlow1.py +0 -65
  635. package/src/tests/samples/codeFlow2.py +0 -26
  636. package/src/tests/samples/codeFlow3.py +0 -8
  637. package/src/tests/samples/codeFlow4.py +0 -133
  638. package/src/tests/samples/codeFlow5.py +0 -10
  639. package/src/tests/samples/codeFlow6.py +0 -35
  640. package/src/tests/samples/codeFlow7.py +0 -35
  641. package/src/tests/samples/comparison1.py +0 -77
  642. package/src/tests/samples/comparison2.py +0 -37
  643. package/src/tests/samples/complex1.py +0 -17
  644. package/src/tests/samples/constant1.py +0 -40
  645. package/src/tests/samples/constants1.py +0 -64
  646. package/src/tests/samples/constructor1.py +0 -30
  647. package/src/tests/samples/constructor10.py +0 -19
  648. package/src/tests/samples/constructor11.py +0 -32
  649. package/src/tests/samples/constructor12.py +0 -20
  650. package/src/tests/samples/constructor13.py +0 -15
  651. package/src/tests/samples/constructor2.py +0 -180
  652. package/src/tests/samples/constructor3.py +0 -18
  653. package/src/tests/samples/constructor4.py +0 -25
  654. package/src/tests/samples/constructor5.py +0 -25
  655. package/src/tests/samples/constructor6.py +0 -70
  656. package/src/tests/samples/constructor7.py +0 -11
  657. package/src/tests/samples/constructor8.py +0 -99
  658. package/src/tests/samples/constructor9.py +0 -19
  659. package/src/tests/samples/coroutines1.py +0 -60
  660. package/src/tests/samples/coroutines2.py +0 -20
  661. package/src/tests/samples/coroutines3.py +0 -37
  662. package/src/tests/samples/dataclass1.py +0 -44
  663. package/src/tests/samples/dataclass10.py +0 -45
  664. package/src/tests/samples/dataclass11.py +0 -53
  665. package/src/tests/samples/dataclass12.py +0 -32
  666. package/src/tests/samples/dataclass13.py +0 -42
  667. package/src/tests/samples/dataclass14.py +0 -38
  668. package/src/tests/samples/dataclass15.py +0 -58
  669. package/src/tests/samples/dataclass16.py +0 -21
  670. package/src/tests/samples/dataclass17.py +0 -46
  671. package/src/tests/samples/dataclass18.py +0 -57
  672. package/src/tests/samples/dataclass19.py +0 -44
  673. package/src/tests/samples/dataclass2.py +0 -30
  674. package/src/tests/samples/dataclass20.py +0 -71
  675. package/src/tests/samples/dataclass21.py +0 -13
  676. package/src/tests/samples/dataclass3.py +0 -18
  677. package/src/tests/samples/dataclass4.py +0 -64
  678. package/src/tests/samples/dataclass5.py +0 -81
  679. package/src/tests/samples/dataclass6.py +0 -29
  680. package/src/tests/samples/dataclass7.py +0 -93
  681. package/src/tests/samples/dataclass8.py +0 -22
  682. package/src/tests/samples/dataclass9.py +0 -24
  683. package/src/tests/samples/dataclassPostInit1.py +0 -61
  684. package/src/tests/samples/dataclassTransform1.py +0 -71
  685. package/src/tests/samples/dataclassTransform2.py +0 -78
  686. package/src/tests/samples/dataclassTransform3.py +0 -83
  687. package/src/tests/samples/dataclassTransform4.py +0 -87
  688. package/src/tests/samples/decorator1.py +0 -20
  689. package/src/tests/samples/decorator2.py +0 -31
  690. package/src/tests/samples/decorator3.py +0 -27
  691. package/src/tests/samples/decorator4.py +0 -37
  692. package/src/tests/samples/decorator5.py +0 -29
  693. package/src/tests/samples/decorator6.py +0 -34
  694. package/src/tests/samples/defaultInitializer1.py +0 -26
  695. package/src/tests/samples/deprecated1.py +0 -37
  696. package/src/tests/samples/descriptor1.py +0 -134
  697. package/src/tests/samples/descriptor2.py +0 -29
  698. package/src/tests/samples/dictionary1.py +0 -42
  699. package/src/tests/samples/dictionary2.py +0 -14
  700. package/src/tests/samples/dictionary3.py +0 -30
  701. package/src/tests/samples/dictionary4.py +0 -106
  702. package/src/tests/samples/dunderAll1.py +0 -32
  703. package/src/tests/samples/dunderAll2.py +0 -16
  704. package/src/tests/samples/dunderAll3.pyi +0 -16
  705. package/src/tests/samples/duplicateDeclaration1.py +0 -115
  706. package/src/tests/samples/duplicateDeclaration2.py +0 -45
  707. package/src/tests/samples/duplicateImports1.py +0 -13
  708. package/src/tests/samples/ellipsis1.pyi +0 -48
  709. package/src/tests/samples/emptyContainers1.py +0 -89
  710. package/src/tests/samples/enums1.py +0 -52
  711. package/src/tests/samples/enums2.py +0 -15
  712. package/src/tests/samples/enums3.py +0 -24
  713. package/src/tests/samples/enums4.py +0 -23
  714. package/src/tests/samples/enums5.py +0 -16
  715. package/src/tests/samples/enums6.py +0 -33
  716. package/src/tests/samples/enums7.py +0 -54
  717. package/src/tests/samples/enums8.py +0 -14
  718. package/src/tests/samples/expressions1.py +0 -54
  719. package/src/tests/samples/expressions2.py +0 -29
  720. package/src/tests/samples/expressions3.py +0 -26
  721. package/src/tests/samples/expressions4.py +0 -23
  722. package/src/tests/samples/expressions5.py +0 -70
  723. package/src/tests/samples/expressions6.py +0 -14
  724. package/src/tests/samples/expressions7.py +0 -40
  725. package/src/tests/samples/expressions8.py +0 -26
  726. package/src/tests/samples/expressions9.py +0 -14
  727. package/src/tests/samples/final1.py +0 -14
  728. package/src/tests/samples/final2.py +0 -86
  729. package/src/tests/samples/final3.py +0 -179
  730. package/src/tests/samples/final4.pyi +0 -21
  731. package/src/tests/samples/final5.py +0 -18
  732. package/src/tests/samples/forLoop1.py +0 -88
  733. package/src/tests/samples/forLoop2.py +0 -48
  734. package/src/tests/samples/fstring1.py +0 -66
  735. package/src/tests/samples/fstring2.py +0 -12
  736. package/src/tests/samples/fstring3.py +0 -35
  737. package/src/tests/samples/fstring4.py +0 -17
  738. package/src/tests/samples/fstring5.py +0 -17
  739. package/src/tests/samples/fstring6.py +0 -14
  740. package/src/tests/samples/function1.py +0 -12
  741. package/src/tests/samples/function10.py +0 -20
  742. package/src/tests/samples/function11.py +0 -36
  743. package/src/tests/samples/function2.py +0 -7
  744. package/src/tests/samples/function3.py +0 -82
  745. package/src/tests/samples/function4.py +0 -13
  746. package/src/tests/samples/function6.py +0 -24
  747. package/src/tests/samples/function7.py +0 -13
  748. package/src/tests/samples/function8.py +0 -38
  749. package/src/tests/samples/function9.py +0 -75
  750. package/src/tests/samples/functionAnnotation1.py +0 -61
  751. package/src/tests/samples/functionAnnotation2.py +0 -26
  752. package/src/tests/samples/functionAnnotation3.py +0 -37
  753. package/src/tests/samples/functionAnnotation4.py +0 -22
  754. package/src/tests/samples/functionMember1.py +0 -18
  755. package/src/tests/samples/functionMember2.py +0 -45
  756. package/src/tests/samples/generators1.py +0 -122
  757. package/src/tests/samples/generators10.py +0 -18
  758. package/src/tests/samples/generators11.py +0 -27
  759. package/src/tests/samples/generators12.py +0 -25
  760. package/src/tests/samples/generators13.py +0 -65
  761. package/src/tests/samples/generators14.py +0 -19
  762. package/src/tests/samples/generators15.py +0 -26
  763. package/src/tests/samples/generators2.py +0 -31
  764. package/src/tests/samples/generators3.py +0 -42
  765. package/src/tests/samples/generators4.py +0 -33
  766. package/src/tests/samples/generators5.py +0 -24
  767. package/src/tests/samples/generators6.py +0 -14
  768. package/src/tests/samples/generators7.py +0 -18
  769. package/src/tests/samples/generators8.py +0 -12
  770. package/src/tests/samples/generators9.py +0 -19
  771. package/src/tests/samples/generic1.py +0 -41
  772. package/src/tests/samples/genericTypes1.py +0 -12
  773. package/src/tests/samples/genericTypes10.py +0 -38
  774. package/src/tests/samples/genericTypes11.py +0 -26
  775. package/src/tests/samples/genericTypes12.py +0 -14
  776. package/src/tests/samples/genericTypes13.py +0 -27
  777. package/src/tests/samples/genericTypes14.py +0 -22
  778. package/src/tests/samples/genericTypes15.py +0 -13
  779. package/src/tests/samples/genericTypes16.py +0 -15
  780. package/src/tests/samples/genericTypes17.py +0 -24
  781. package/src/tests/samples/genericTypes18.py +0 -135
  782. package/src/tests/samples/genericTypes19.py +0 -32
  783. package/src/tests/samples/genericTypes2.py +0 -40
  784. package/src/tests/samples/genericTypes20.py +0 -44
  785. package/src/tests/samples/genericTypes21.py +0 -29
  786. package/src/tests/samples/genericTypes22.py +0 -23
  787. package/src/tests/samples/genericTypes23.py +0 -27
  788. package/src/tests/samples/genericTypes24.py +0 -32
  789. package/src/tests/samples/genericTypes25.py +0 -37
  790. package/src/tests/samples/genericTypes26.py +0 -31
  791. package/src/tests/samples/genericTypes27.py +0 -14
  792. package/src/tests/samples/genericTypes28.py +0 -51
  793. package/src/tests/samples/genericTypes29.py +0 -24
  794. package/src/tests/samples/genericTypes3.py +0 -13
  795. package/src/tests/samples/genericTypes30.py +0 -32
  796. package/src/tests/samples/genericTypes31.py +0 -30
  797. package/src/tests/samples/genericTypes32.py +0 -25
  798. package/src/tests/samples/genericTypes33.py +0 -46
  799. package/src/tests/samples/genericTypes34.py +0 -54
  800. package/src/tests/samples/genericTypes35.py +0 -45
  801. package/src/tests/samples/genericTypes36.py +0 -35
  802. package/src/tests/samples/genericTypes37.py +0 -26
  803. package/src/tests/samples/genericTypes38.py +0 -15
  804. package/src/tests/samples/genericTypes39.py +0 -82
  805. package/src/tests/samples/genericTypes4.py +0 -37
  806. package/src/tests/samples/genericTypes40.py +0 -38
  807. package/src/tests/samples/genericTypes41.py +0 -16
  808. package/src/tests/samples/genericTypes42.py +0 -32
  809. package/src/tests/samples/genericTypes43.py +0 -24
  810. package/src/tests/samples/genericTypes44.py +0 -33
  811. package/src/tests/samples/genericTypes45.py +0 -43
  812. package/src/tests/samples/genericTypes46.py +0 -66
  813. package/src/tests/samples/genericTypes47.py +0 -39
  814. package/src/tests/samples/genericTypes48.py +0 -18
  815. package/src/tests/samples/genericTypes49.py +0 -41
  816. package/src/tests/samples/genericTypes5.py +0 -42
  817. package/src/tests/samples/genericTypes50.py +0 -62
  818. package/src/tests/samples/genericTypes51.py +0 -55
  819. package/src/tests/samples/genericTypes52.py +0 -34
  820. package/src/tests/samples/genericTypes53.py +0 -42
  821. package/src/tests/samples/genericTypes54.py +0 -31
  822. package/src/tests/samples/genericTypes55.py +0 -61
  823. package/src/tests/samples/genericTypes56.py +0 -19
  824. package/src/tests/samples/genericTypes57.py +0 -30
  825. package/src/tests/samples/genericTypes58.py +0 -52
  826. package/src/tests/samples/genericTypes59.py +0 -71
  827. package/src/tests/samples/genericTypes6.py +0 -49
  828. package/src/tests/samples/genericTypes60.py +0 -27
  829. package/src/tests/samples/genericTypes61.py +0 -34
  830. package/src/tests/samples/genericTypes62.py +0 -26
  831. package/src/tests/samples/genericTypes63.py +0 -32
  832. package/src/tests/samples/genericTypes64.py +0 -16
  833. package/src/tests/samples/genericTypes65.py +0 -15
  834. package/src/tests/samples/genericTypes66.py +0 -30
  835. package/src/tests/samples/genericTypes67.py +0 -57
  836. package/src/tests/samples/genericTypes68.py +0 -14
  837. package/src/tests/samples/genericTypes69.py +0 -45
  838. package/src/tests/samples/genericTypes7.py +0 -24
  839. package/src/tests/samples/genericTypes70.py +0 -31
  840. package/src/tests/samples/genericTypes71.py +0 -72
  841. package/src/tests/samples/genericTypes72.py +0 -24
  842. package/src/tests/samples/genericTypes73.py +0 -14
  843. package/src/tests/samples/genericTypes74.py +0 -23
  844. package/src/tests/samples/genericTypes75.py +0 -45
  845. package/src/tests/samples/genericTypes76.py +0 -107
  846. package/src/tests/samples/genericTypes77.py +0 -26
  847. package/src/tests/samples/genericTypes78.py +0 -23
  848. package/src/tests/samples/genericTypes79.py +0 -37
  849. package/src/tests/samples/genericTypes8.py +0 -26
  850. package/src/tests/samples/genericTypes80.py +0 -10
  851. package/src/tests/samples/genericTypes81.py +0 -32
  852. package/src/tests/samples/genericTypes82.py +0 -19
  853. package/src/tests/samples/genericTypes83.py +0 -28
  854. package/src/tests/samples/genericTypes84.py +0 -11
  855. package/src/tests/samples/genericTypes85.py +0 -20
  856. package/src/tests/samples/genericTypes86.py +0 -15
  857. package/src/tests/samples/genericTypes87.py +0 -21
  858. package/src/tests/samples/genericTypes88.py +0 -25
  859. package/src/tests/samples/genericTypes89.py +0 -17
  860. package/src/tests/samples/genericTypes9.py +0 -109
  861. package/src/tests/samples/genericTypes90.py +0 -12
  862. package/src/tests/samples/genericTypes91.py +0 -20
  863. package/src/tests/samples/import1.py +0 -7
  864. package/src/tests/samples/import10.py +0 -11
  865. package/src/tests/samples/import11.py +0 -11
  866. package/src/tests/samples/import12.py +0 -5
  867. package/src/tests/samples/import13.py +0 -6
  868. package/src/tests/samples/import14.py +0 -10
  869. package/src/tests/samples/import2.py +0 -27
  870. package/src/tests/samples/import3.py +0 -8
  871. package/src/tests/samples/import4.py +0 -15
  872. package/src/tests/samples/import5.py +0 -6
  873. package/src/tests/samples/import6.py +0 -17
  874. package/src/tests/samples/import7.py +0 -14
  875. package/src/tests/samples/import8.py +0 -7
  876. package/src/tests/samples/import9.py +0 -7
  877. package/src/tests/samples/inconsistentConstructor1.py +0 -23
  878. package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
  879. package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
  880. package/src/tests/samples/index1.py +0 -97
  881. package/src/tests/samples/inferredTypes1.py +0 -25
  882. package/src/tests/samples/initVar1.py +0 -23
  883. package/src/tests/samples/initsubclass1.py +0 -46
  884. package/src/tests/samples/initsubclass2.py +0 -16
  885. package/src/tests/samples/isinstance1.py +0 -57
  886. package/src/tests/samples/isinstance10.py +0 -15
  887. package/src/tests/samples/isinstance2.py +0 -28
  888. package/src/tests/samples/isinstance3.py +0 -59
  889. package/src/tests/samples/isinstance4.py +0 -57
  890. package/src/tests/samples/isinstance5.py +0 -8
  891. package/src/tests/samples/isinstance6.py +0 -19
  892. package/src/tests/samples/isinstance7.py +0 -42
  893. package/src/tests/samples/isinstance9.py +0 -26
  894. package/src/tests/samples/kwargsUnpack1.py +0 -116
  895. package/src/tests/samples/lambda1.py +0 -77
  896. package/src/tests/samples/lambda2.py +0 -26
  897. package/src/tests/samples/lambda3.py +0 -34
  898. package/src/tests/samples/lambda4.py +0 -70
  899. package/src/tests/samples/lambda5.py +0 -23
  900. package/src/tests/samples/lambda6.py +0 -15
  901. package/src/tests/samples/lines1.py +0 -14
  902. package/src/tests/samples/list1.py +0 -90
  903. package/src/tests/samples/listComprehension1.py +0 -45
  904. package/src/tests/samples/listComprehension2.py +0 -17
  905. package/src/tests/samples/listComprehension3.py +0 -12
  906. package/src/tests/samples/listComprehension4.py +0 -15
  907. package/src/tests/samples/listComprehension5.py +0 -20
  908. package/src/tests/samples/listComprehension6.py +0 -14
  909. package/src/tests/samples/listComprehension7.py +0 -15
  910. package/src/tests/samples/listComprehension8.py +0 -15
  911. package/src/tests/samples/literalString1.py +0 -43
  912. package/src/tests/samples/literals1.py +0 -48
  913. package/src/tests/samples/literals2.py +0 -30
  914. package/src/tests/samples/literals3.py +0 -40
  915. package/src/tests/samples/literals4.py +0 -10
  916. package/src/tests/samples/literals5.py +0 -28
  917. package/src/tests/samples/literals6.py +0 -90
  918. package/src/tests/samples/literals7.py +0 -38
  919. package/src/tests/samples/loops1.py +0 -45
  920. package/src/tests/samples/loops10.py +0 -11
  921. package/src/tests/samples/loops11.py +0 -22
  922. package/src/tests/samples/loops12.py +0 -18
  923. package/src/tests/samples/loops13.py +0 -13
  924. package/src/tests/samples/loops14.py +0 -22
  925. package/src/tests/samples/loops15.py +0 -22
  926. package/src/tests/samples/loops16.py +0 -322
  927. package/src/tests/samples/loops17.py +0 -9
  928. package/src/tests/samples/loops18.py +0 -23
  929. package/src/tests/samples/loops19.py +0 -14
  930. package/src/tests/samples/loops2.py +0 -25
  931. package/src/tests/samples/loops20.py +0 -41
  932. package/src/tests/samples/loops21.py +0 -18
  933. package/src/tests/samples/loops22.py +0 -21
  934. package/src/tests/samples/loops23.py +0 -16
  935. package/src/tests/samples/loops24.py +0 -12
  936. package/src/tests/samples/loops25.py +0 -45
  937. package/src/tests/samples/loops26.py +0 -12
  938. package/src/tests/samples/loops3.py +0 -11
  939. package/src/tests/samples/loops4.py +0 -17
  940. package/src/tests/samples/loops5.py +0 -14
  941. package/src/tests/samples/loops6.py +0 -25
  942. package/src/tests/samples/loops7.py +0 -14
  943. package/src/tests/samples/loops8.py +0 -17
  944. package/src/tests/samples/loops9.py +0 -25
  945. package/src/tests/samples/match1.py +0 -190
  946. package/src/tests/samples/match10.py +0 -67
  947. package/src/tests/samples/match2.py +0 -340
  948. package/src/tests/samples/match3.py +0 -364
  949. package/src/tests/samples/match4.py +0 -100
  950. package/src/tests/samples/match5.py +0 -70
  951. package/src/tests/samples/match6.py +0 -64
  952. package/src/tests/samples/match7.py +0 -65
  953. package/src/tests/samples/match8.py +0 -19
  954. package/src/tests/samples/match9.py +0 -53
  955. package/src/tests/samples/maxParseDepth1.py +0 -499
  956. package/src/tests/samples/maxParseDepth2.py +0 -16
  957. package/src/tests/samples/memberAccess1.py +0 -70
  958. package/src/tests/samples/memberAccess10.py +0 -65
  959. package/src/tests/samples/memberAccess11.py +0 -37
  960. package/src/tests/samples/memberAccess12.py +0 -36
  961. package/src/tests/samples/memberAccess13.py +0 -17
  962. package/src/tests/samples/memberAccess14.py +0 -63
  963. package/src/tests/samples/memberAccess15.py +0 -20
  964. package/src/tests/samples/memberAccess16.py +0 -12
  965. package/src/tests/samples/memberAccess17.py +0 -31
  966. package/src/tests/samples/memberAccess18.py +0 -31
  967. package/src/tests/samples/memberAccess2.py +0 -45
  968. package/src/tests/samples/memberAccess3.py +0 -64
  969. package/src/tests/samples/memberAccess4.py +0 -91
  970. package/src/tests/samples/memberAccess5.py +0 -26
  971. package/src/tests/samples/memberAccess6.py +0 -52
  972. package/src/tests/samples/memberAccess7.py +0 -36
  973. package/src/tests/samples/memberAccess8.py +0 -75
  974. package/src/tests/samples/memberAccess9.py +0 -11
  975. package/src/tests/samples/metaclass1.py +0 -7
  976. package/src/tests/samples/metaclass2.py +0 -35
  977. package/src/tests/samples/metaclass3.py +0 -43
  978. package/src/tests/samples/metaclass4.py +0 -26
  979. package/src/tests/samples/metaclass5.py +0 -33
  980. package/src/tests/samples/metaclass6.py +0 -15
  981. package/src/tests/samples/metaclass7.py +0 -38
  982. package/src/tests/samples/metaclass8.py +0 -20
  983. package/src/tests/samples/metaclass9.py +0 -77
  984. package/src/tests/samples/methodOverride1.py +0 -507
  985. package/src/tests/samples/methodOverride2.py +0 -74
  986. package/src/tests/samples/methodOverride3.py +0 -111
  987. package/src/tests/samples/methodOverride4.py +0 -36
  988. package/src/tests/samples/missingSuper1.py +0 -73
  989. package/src/tests/samples/module1.py +0 -13
  990. package/src/tests/samples/module2.py +0 -7
  991. package/src/tests/samples/mro1.py +0 -16
  992. package/src/tests/samples/mro2.py +0 -45
  993. package/src/tests/samples/mro3.py +0 -30
  994. package/src/tests/samples/mro4.py +0 -30
  995. package/src/tests/samples/nameBindings1.py +0 -48
  996. package/src/tests/samples/nameBindings2.py +0 -9
  997. package/src/tests/samples/nameBindings3.py +0 -36
  998. package/src/tests/samples/nameBindings4.py +0 -10
  999. package/src/tests/samples/nameBindings5.py +0 -53
  1000. package/src/tests/samples/namedTuples1.py +0 -103
  1001. package/src/tests/samples/namedTuples2.py +0 -56
  1002. package/src/tests/samples/namedTuples3.py +0 -15
  1003. package/src/tests/samples/namedTuples4.py +0 -24
  1004. package/src/tests/samples/namedTuples5.py +0 -15
  1005. package/src/tests/samples/namedTuples6.py +0 -31
  1006. package/src/tests/samples/namedTuples7.py +0 -27
  1007. package/src/tests/samples/never1.py +0 -12
  1008. package/src/tests/samples/never2.py +0 -43
  1009. package/src/tests/samples/newType1.py +0 -34
  1010. package/src/tests/samples/newType2.py +0 -25
  1011. package/src/tests/samples/newType3.py +0 -34
  1012. package/src/tests/samples/newType4.py +0 -8
  1013. package/src/tests/samples/none1.py +0 -29
  1014. package/src/tests/samples/none2.py +0 -22
  1015. package/src/tests/samples/noreturn1.py +0 -78
  1016. package/src/tests/samples/noreturn2.py +0 -37
  1017. package/src/tests/samples/noreturn3.py +0 -16
  1018. package/src/tests/samples/noreturn4.py +0 -29
  1019. package/src/tests/samples/operators1.py +0 -101
  1020. package/src/tests/samples/operators2.py +0 -30
  1021. package/src/tests/samples/operators3.py +0 -8
  1022. package/src/tests/samples/operators4.py +0 -22
  1023. package/src/tests/samples/operators5.py +0 -5
  1024. package/src/tests/samples/operators6.py +0 -10
  1025. package/src/tests/samples/operators7.py +0 -24
  1026. package/src/tests/samples/operators8.py +0 -125
  1027. package/src/tests/samples/optional1.py +0 -77
  1028. package/src/tests/samples/optional2.py +0 -23
  1029. package/src/tests/samples/overload1.py +0 -50
  1030. package/src/tests/samples/overload10.py +0 -48
  1031. package/src/tests/samples/overload2.py +0 -37
  1032. package/src/tests/samples/overload3.py +0 -29
  1033. package/src/tests/samples/overload4.py +0 -46
  1034. package/src/tests/samples/overload5.py +0 -333
  1035. package/src/tests/samples/overload6.py +0 -64
  1036. package/src/tests/samples/overload7.py +0 -376
  1037. package/src/tests/samples/overload8.py +0 -89
  1038. package/src/tests/samples/overload9.py +0 -19
  1039. package/src/tests/samples/package1/__init__.py +0 -3
  1040. package/src/tests/samples/package1/psyche/pysche.py +0 -4
  1041. package/src/tests/samples/package1/psyche.py +0 -4
  1042. package/src/tests/samples/package1/sub/__init__.py +0 -5
  1043. package/src/tests/samples/package1/sub.py +0 -4
  1044. package/src/tests/samples/package1/sub.pyi +0 -2
  1045. package/src/tests/samples/paramInference1.py +0 -27
  1046. package/src/tests/samples/paramNames1.py +0 -39
  1047. package/src/tests/samples/paramSpec1.py +0 -64
  1048. package/src/tests/samples/paramSpec10.py +0 -57
  1049. package/src/tests/samples/paramSpec11.py +0 -36
  1050. package/src/tests/samples/paramSpec12.py +0 -88
  1051. package/src/tests/samples/paramSpec13.py +0 -112
  1052. package/src/tests/samples/paramSpec14.py +0 -30
  1053. package/src/tests/samples/paramSpec15.py +0 -28
  1054. package/src/tests/samples/paramSpec16.py +0 -28
  1055. package/src/tests/samples/paramSpec17.py +0 -34
  1056. package/src/tests/samples/paramSpec18.py +0 -43
  1057. package/src/tests/samples/paramSpec19.py +0 -93
  1058. package/src/tests/samples/paramSpec2.py +0 -29
  1059. package/src/tests/samples/paramSpec20.py +0 -87
  1060. package/src/tests/samples/paramSpec21.py +0 -58
  1061. package/src/tests/samples/paramSpec22.py +0 -26
  1062. package/src/tests/samples/paramSpec23.py +0 -21
  1063. package/src/tests/samples/paramSpec24.py +0 -67
  1064. package/src/tests/samples/paramSpec25.py +0 -36
  1065. package/src/tests/samples/paramSpec26.py +0 -25
  1066. package/src/tests/samples/paramSpec27.py +0 -57
  1067. package/src/tests/samples/paramSpec28.py +0 -39
  1068. package/src/tests/samples/paramSpec29.py +0 -37
  1069. package/src/tests/samples/paramSpec3.py +0 -71
  1070. package/src/tests/samples/paramSpec30.py +0 -49
  1071. package/src/tests/samples/paramSpec31.py +0 -16
  1072. package/src/tests/samples/paramSpec32.py +0 -57
  1073. package/src/tests/samples/paramSpec33.py +0 -29
  1074. package/src/tests/samples/paramSpec34.py +0 -29
  1075. package/src/tests/samples/paramSpec35.py +0 -24
  1076. package/src/tests/samples/paramSpec36.py +0 -43
  1077. package/src/tests/samples/paramSpec37.py +0 -25
  1078. package/src/tests/samples/paramSpec4.py +0 -109
  1079. package/src/tests/samples/paramSpec5.py +0 -29
  1080. package/src/tests/samples/paramSpec6.py +0 -17
  1081. package/src/tests/samples/paramSpec7.py +0 -22
  1082. package/src/tests/samples/paramSpec8.py +0 -45
  1083. package/src/tests/samples/paramSpec9.py +0 -57
  1084. package/src/tests/samples/paramType1.py +0 -71
  1085. package/src/tests/samples/parameters1.py +0 -16
  1086. package/src/tests/samples/partial1.py +0 -163
  1087. package/src/tests/samples/partial2.py +0 -31
  1088. package/src/tests/samples/private1.py +0 -55
  1089. package/src/tests/samples/private2.py +0 -11
  1090. package/src/tests/samples/project1/pyrightconfig.json +0 -5
  1091. package/src/tests/samples/project1/sample1.py +0 -0
  1092. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  1093. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  1094. package/src/tests/samples/project2/pyrightconfig.json +0 -3
  1095. package/src/tests/samples/project3/pyrightconfig.json +0 -7
  1096. package/src/tests/samples/project4/presentfile.py +0 -0
  1097. package/src/tests/samples/project4/pyrightconfig.json +0 -11
  1098. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  1099. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  1100. package/src/tests/samples/project5/pyrightconfig.json +0 -4
  1101. package/src/tests/samples/project6/app1.py +0 -0
  1102. package/src/tests/samples/project6/app2.py +0 -0
  1103. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  1104. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  1105. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  1106. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  1107. package/src/tests/samples/project_src/src/module1.py +0 -0
  1108. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  1109. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  1110. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
  1111. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  1112. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
  1113. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  1114. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
  1115. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
  1116. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
  1117. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  1118. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  1119. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
  1120. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  1121. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  1122. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  1123. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  1124. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  1125. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  1126. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
  1127. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  1128. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  1129. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  1130. package/src/tests/samples/properties1.py +0 -64
  1131. package/src/tests/samples/properties10.py +0 -19
  1132. package/src/tests/samples/properties11.py +0 -45
  1133. package/src/tests/samples/properties12.py +0 -23
  1134. package/src/tests/samples/properties13.py +0 -15
  1135. package/src/tests/samples/properties2.py +0 -34
  1136. package/src/tests/samples/properties3.py +0 -93
  1137. package/src/tests/samples/properties4.py +0 -17
  1138. package/src/tests/samples/properties5.py +0 -29
  1139. package/src/tests/samples/properties6.py +0 -35
  1140. package/src/tests/samples/properties7.py +0 -30
  1141. package/src/tests/samples/properties8.py +0 -26
  1142. package/src/tests/samples/properties9.py +0 -24
  1143. package/src/tests/samples/protocol1.py +0 -132
  1144. package/src/tests/samples/protocol10.py +0 -36
  1145. package/src/tests/samples/protocol11.py +0 -32
  1146. package/src/tests/samples/protocol12.py +0 -12
  1147. package/src/tests/samples/protocol13.py +0 -26
  1148. package/src/tests/samples/protocol14.py +0 -27
  1149. package/src/tests/samples/protocol15.py +0 -27
  1150. package/src/tests/samples/protocol16.py +0 -22
  1151. package/src/tests/samples/protocol17.py +0 -94
  1152. package/src/tests/samples/protocol18.py +0 -27
  1153. package/src/tests/samples/protocol19.py +0 -39
  1154. package/src/tests/samples/protocol2.py +0 -38
  1155. package/src/tests/samples/protocol20.py +0 -22
  1156. package/src/tests/samples/protocol21.py +0 -26
  1157. package/src/tests/samples/protocol22.py +0 -43
  1158. package/src/tests/samples/protocol23.py +0 -41
  1159. package/src/tests/samples/protocol24.py +0 -74
  1160. package/src/tests/samples/protocol25.py +0 -31
  1161. package/src/tests/samples/protocol26.py +0 -40
  1162. package/src/tests/samples/protocol27.py +0 -76
  1163. package/src/tests/samples/protocol28.py +0 -32
  1164. package/src/tests/samples/protocol29.py +0 -26
  1165. package/src/tests/samples/protocol3.py +0 -110
  1166. package/src/tests/samples/protocol30.py +0 -30
  1167. package/src/tests/samples/protocol31.py +0 -22
  1168. package/src/tests/samples/protocol32.py +0 -67
  1169. package/src/tests/samples/protocol33.py +0 -39
  1170. package/src/tests/samples/protocol34.py +0 -21
  1171. package/src/tests/samples/protocol4.py +0 -22
  1172. package/src/tests/samples/protocol5.py +0 -25
  1173. package/src/tests/samples/protocol6.py +0 -65
  1174. package/src/tests/samples/protocol7.py +0 -24
  1175. package/src/tests/samples/protocol8.py +0 -34
  1176. package/src/tests/samples/protocol9.py +0 -35
  1177. package/src/tests/samples/protocolModule1.py +0 -15
  1178. package/src/tests/samples/protocolModule2.py +0 -83
  1179. package/src/tests/samples/protocolModule3.py +0 -14
  1180. package/src/tests/samples/protocolModule4.py +0 -26
  1181. package/src/tests/samples/pseudoGeneric1.py +0 -20
  1182. package/src/tests/samples/pyrightIgnore1.py +0 -11
  1183. package/src/tests/samples/pyrightIgnore2.py +0 -24
  1184. package/src/tests/samples/python2.py +0 -31
  1185. package/src/tests/samples/recursiveTypeAlias1.py +0 -79
  1186. package/src/tests/samples/recursiveTypeAlias2.py +0 -32
  1187. package/src/tests/samples/recursiveTypeAlias3.py +0 -26
  1188. package/src/tests/samples/recursiveTypeAlias4.py +0 -55
  1189. package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
  1190. package/src/tests/samples/recursiveTypeAlias6.py +0 -25
  1191. package/src/tests/samples/recursiveTypeAlias7.py +0 -15
  1192. package/src/tests/samples/recursiveTypeAlias8.py +0 -38
  1193. package/src/tests/samples/recursiveTypeAlias9.py +0 -22
  1194. package/src/tests/samples/required1.py +0 -47
  1195. package/src/tests/samples/required2.py +0 -56
  1196. package/src/tests/samples/required3.py +0 -22
  1197. package/src/tests/samples/returnTypes1.py +0 -26
  1198. package/src/tests/samples/revealedType1.py +0 -30
  1199. package/src/tests/samples/sample1.py +0 -6
  1200. package/src/tests/samples/self1.py +0 -93
  1201. package/src/tests/samples/self2.py +0 -195
  1202. package/src/tests/samples/self3.py +0 -9
  1203. package/src/tests/samples/self4.py +0 -18
  1204. package/src/tests/samples/self5.py +0 -26
  1205. package/src/tests/samples/setComprehension1.py +0 -34
  1206. package/src/tests/samples/slots1.py +0 -63
  1207. package/src/tests/samples/slots2.py +0 -38
  1208. package/src/tests/samples/slots3.py +0 -35
  1209. package/src/tests/samples/specialization1.py +0 -78
  1210. package/src/tests/samples/specialization2.py +0 -51
  1211. package/src/tests/samples/staticExpressions1.py +0 -52
  1212. package/src/tests/samples/strings1.py +0 -22
  1213. package/src/tests/samples/subscript1.py +0 -74
  1214. package/src/tests/samples/subscript2.py +0 -55
  1215. package/src/tests/samples/subscript3.py +0 -135
  1216. package/src/tests/samples/suiteExpectedColon1.py +0 -4
  1217. package/src/tests/samples/suiteExpectedColon2.py +0 -2
  1218. package/src/tests/samples/suiteExpectedColon3.py +0 -2
  1219. package/src/tests/samples/super1.py +0 -57
  1220. package/src/tests/samples/super2.py +0 -29
  1221. package/src/tests/samples/super3.py +0 -10
  1222. package/src/tests/samples/super4.py +0 -24
  1223. package/src/tests/samples/super5.py +0 -28
  1224. package/src/tests/samples/super6.py +0 -17
  1225. package/src/tests/samples/super7.py +0 -52
  1226. package/src/tests/samples/super8.py +0 -7
  1227. package/src/tests/samples/super9.py +0 -36
  1228. package/src/tests/samples/test_file1.py +0 -0
  1229. package/src/tests/samples/threePartVersion1.py +0 -33
  1230. package/src/tests/samples/totalOrdering1.py +0 -52
  1231. package/src/tests/samples/tryExcept1.py +0 -39
  1232. package/src/tests/samples/tryExcept10.py +0 -12
  1233. package/src/tests/samples/tryExcept2.py +0 -16
  1234. package/src/tests/samples/tryExcept3.py +0 -12
  1235. package/src/tests/samples/tryExcept4.py +0 -28
  1236. package/src/tests/samples/tryExcept5.py +0 -30
  1237. package/src/tests/samples/tryExcept6.py +0 -27
  1238. package/src/tests/samples/tryExcept7.py +0 -17
  1239. package/src/tests/samples/tryExcept8.py +0 -69
  1240. package/src/tests/samples/tryExcept9.py +0 -42
  1241. package/src/tests/samples/tupleUnpack1.py +0 -63
  1242. package/src/tests/samples/tupleUnpack2.py +0 -56
  1243. package/src/tests/samples/tupleUnpack3.py +0 -28
  1244. package/src/tests/samples/tuples1.py +0 -185
  1245. package/src/tests/samples/tuples10.py +0 -30
  1246. package/src/tests/samples/tuples11.py +0 -21
  1247. package/src/tests/samples/tuples12.py +0 -31
  1248. package/src/tests/samples/tuples13.py +0 -26
  1249. package/src/tests/samples/tuples15.py +0 -16
  1250. package/src/tests/samples/tuples16.py +0 -14
  1251. package/src/tests/samples/tuples2.py +0 -23
  1252. package/src/tests/samples/tuples3.py +0 -15
  1253. package/src/tests/samples/tuples4.py +0 -21
  1254. package/src/tests/samples/tuples5.py +0 -16
  1255. package/src/tests/samples/tuples6.py +0 -56
  1256. package/src/tests/samples/tuples7.py +0 -61
  1257. package/src/tests/samples/tuples8.py +0 -98
  1258. package/src/tests/samples/tuples9.py +0 -17
  1259. package/src/tests/samples/typeAlias1.py +0 -37
  1260. package/src/tests/samples/typeAlias10.py +0 -45
  1261. package/src/tests/samples/typeAlias11.py +0 -37
  1262. package/src/tests/samples/typeAlias12.py +0 -20
  1263. package/src/tests/samples/typeAlias13.py +0 -53
  1264. package/src/tests/samples/typeAlias14.py +0 -29
  1265. package/src/tests/samples/typeAlias15.py +0 -24
  1266. package/src/tests/samples/typeAlias16.py +0 -24
  1267. package/src/tests/samples/typeAlias2.py +0 -26
  1268. package/src/tests/samples/typeAlias3.py +0 -35
  1269. package/src/tests/samples/typeAlias4.py +0 -68
  1270. package/src/tests/samples/typeAlias5.py +0 -56
  1271. package/src/tests/samples/typeAlias6.py +0 -51
  1272. package/src/tests/samples/typeAlias7.py +0 -50
  1273. package/src/tests/samples/typeAlias8.py +0 -24
  1274. package/src/tests/samples/typeAlias9.py +0 -35
  1275. package/src/tests/samples/typeGuard1.py +0 -68
  1276. package/src/tests/samples/typeGuard2.py +0 -58
  1277. package/src/tests/samples/typeGuard3.py +0 -98
  1278. package/src/tests/samples/typeIgnore1.py +0 -10
  1279. package/src/tests/samples/typeIgnore2.py +0 -20
  1280. package/src/tests/samples/typeIgnore3.py +0 -22
  1281. package/src/tests/samples/typeIgnore4.py +0 -10
  1282. package/src/tests/samples/typeIgnore5.py +0 -7
  1283. package/src/tests/samples/typeNarrowing1.py +0 -56
  1284. package/src/tests/samples/typeNarrowing2.py +0 -14
  1285. package/src/tests/samples/typeNarrowing3.py +0 -47
  1286. package/src/tests/samples/typeNarrowing4.py +0 -24
  1287. package/src/tests/samples/typeNarrowing5.py +0 -19
  1288. package/src/tests/samples/typeNarrowing6.py +0 -27
  1289. package/src/tests/samples/typeNarrowing7.py +0 -71
  1290. package/src/tests/samples/typeNarrowingAssert1.py +0 -24
  1291. package/src/tests/samples/typeNarrowingCallable1.py +0 -78
  1292. package/src/tests/samples/typeNarrowingEnum1.py +0 -58
  1293. package/src/tests/samples/typeNarrowingEnum2.py +0 -71
  1294. package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
  1295. package/src/tests/samples/typeNarrowingIn1.py +0 -97
  1296. package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
  1297. package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
  1298. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
  1299. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
  1300. package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
  1301. package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
  1302. package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
  1303. package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
  1304. package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
  1305. package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
  1306. package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
  1307. package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
  1308. package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
  1309. package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
  1310. package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
  1311. package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
  1312. package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
  1313. package/src/tests/samples/typeNarrowingTuple1.py +0 -23
  1314. package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
  1315. package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
  1316. package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
  1317. package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
  1318. package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
  1319. package/src/tests/samples/typePromotions1.py +0 -30
  1320. package/src/tests/samples/typeVar1.py +0 -23
  1321. package/src/tests/samples/typeVar10.py +0 -21
  1322. package/src/tests/samples/typeVar11.py +0 -12
  1323. package/src/tests/samples/typeVar2.py +0 -26
  1324. package/src/tests/samples/typeVar3.py +0 -73
  1325. package/src/tests/samples/typeVar4.py +0 -45
  1326. package/src/tests/samples/typeVar5.py +0 -75
  1327. package/src/tests/samples/typeVar6.py +0 -115
  1328. package/src/tests/samples/typeVar7.py +0 -171
  1329. package/src/tests/samples/typeVar8.py +0 -30
  1330. package/src/tests/samples/typeVar9.py +0 -118
  1331. package/src/tests/samples/typedDict1.py +0 -63
  1332. package/src/tests/samples/typedDict10.py +0 -34
  1333. package/src/tests/samples/typedDict11.py +0 -12
  1334. package/src/tests/samples/typedDict12.py +0 -103
  1335. package/src/tests/samples/typedDict13.py +0 -14
  1336. package/src/tests/samples/typedDict14.py +0 -25
  1337. package/src/tests/samples/typedDict15.py +0 -53
  1338. package/src/tests/samples/typedDict16.py +0 -103
  1339. package/src/tests/samples/typedDict17.py +0 -24
  1340. package/src/tests/samples/typedDict18.py +0 -43
  1341. package/src/tests/samples/typedDict2.py +0 -56
  1342. package/src/tests/samples/typedDict3.py +0 -40
  1343. package/src/tests/samples/typedDict4.py +0 -68
  1344. package/src/tests/samples/typedDict5.py +0 -50
  1345. package/src/tests/samples/typedDict6.py +0 -77
  1346. package/src/tests/samples/typedDict7.py +0 -22
  1347. package/src/tests/samples/typedDict8.py +0 -19
  1348. package/src/tests/samples/typedDict9.py +0 -22
  1349. package/src/tests/samples/unbound1.py +0 -18
  1350. package/src/tests/samples/unbound2.py +0 -12
  1351. package/src/tests/samples/unbound3.py +0 -13
  1352. package/src/tests/samples/unbound4.py +0 -25
  1353. package/src/tests/samples/unicode1.py +0 -39
  1354. package/src/tests/samples/uninitializedVariable1.py +0 -27
  1355. package/src/tests/samples/unions1.py +0 -79
  1356. package/src/tests/samples/unions2.py +0 -15
  1357. package/src/tests/samples/unions3.py +0 -48
  1358. package/src/tests/samples/unions4.py +0 -20
  1359. package/src/tests/samples/unions5.py +0 -43
  1360. package/src/tests/samples/unnecessaryCast1.py +0 -13
  1361. package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
  1362. package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
  1363. package/src/tests/samples/unpack1.py +0 -56
  1364. package/src/tests/samples/unpack2.py +0 -27
  1365. package/src/tests/samples/unpack3.py +0 -16
  1366. package/src/tests/samples/unpack4.py +0 -15
  1367. package/src/tests/samples/unreachable1.py +0 -112
  1368. package/src/tests/samples/unusedCallResult1.py +0 -67
  1369. package/src/tests/samples/unusedCoroutine1.py +0 -23
  1370. package/src/tests/samples/unusedExpression1.py +0 -34
  1371. package/src/tests/samples/unusedVariable1.py +0 -21
  1372. package/src/tests/samples/variadicTypeVar1.py +0 -51
  1373. package/src/tests/samples/variadicTypeVar10.py +0 -65
  1374. package/src/tests/samples/variadicTypeVar11.py +0 -72
  1375. package/src/tests/samples/variadicTypeVar12.py +0 -26
  1376. package/src/tests/samples/variadicTypeVar13.py +0 -35
  1377. package/src/tests/samples/variadicTypeVar14.py +0 -72
  1378. package/src/tests/samples/variadicTypeVar2.py +0 -63
  1379. package/src/tests/samples/variadicTypeVar3.py +0 -86
  1380. package/src/tests/samples/variadicTypeVar4.py +0 -71
  1381. package/src/tests/samples/variadicTypeVar5.py +0 -131
  1382. package/src/tests/samples/variadicTypeVar6.py +0 -78
  1383. package/src/tests/samples/variadicTypeVar7.py +0 -59
  1384. package/src/tests/samples/variadicTypeVar8.py +0 -116
  1385. package/src/tests/samples/variadicTypeVar9.py +0 -38
  1386. package/src/tests/samples/with1.py +0 -117
  1387. package/src/tests/samples/with2.py +0 -63
  1388. package/src/tests/samples/with3.py +0 -66
  1389. package/src/tests/samples/with4.py +0 -24
  1390. package/src/tests/samples/with5.py +0 -33
  1391. package/src/tests/samples/zipfs/bad.egg +0 -1
  1392. package/src/tests/samples/zipfs/bad.zip +0 -1
  1393. package/src/tests/samples/zipfs/basic.egg +0 -0
  1394. package/src/tests/samples/zipfs/basic.zip +0 -0
  1395. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1396. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1397. package/src/tests/sourceFile.test.ts +0 -25
  1398. package/src/tests/stringUtils.test.ts +0 -63
  1399. package/src/tests/symbolNameUtils.test.ts +0 -77
  1400. package/src/tests/testState.test.ts +0 -579
  1401. package/src/tests/testUtils.ts +0 -251
  1402. package/src/tests/tokenizer.test.ts +0 -1534
  1403. package/src/tests/typeEvaluator1.test.ts +0 -1372
  1404. package/src/tests/typeEvaluator2.test.ts +0 -1253
  1405. package/src/tests/typeEvaluator3.test.ts +0 -1279
  1406. package/src/tests/typeEvaluator4.test.ts +0 -1178
  1407. package/src/tests/updateSymbolReference.test.ts +0 -1107
  1408. package/src/tests/zipfs.test.ts +0 -116
  1409. package/src/workspaceMap.ts +0 -76
@@ -1,1548 +0,0 @@
1
- /*
2
- * codeFlowEngine.ts
3
- * Copyright (c) Microsoft Corporation.
4
- * Licensed under the MIT license.
5
- * Author: Eric Traut
6
- *
7
- * Code that traverses the code flow graph to determine the (narrowed)
8
- * type of a variable or expression or the reachability of a statement.
9
- *
10
- * This is largely based on the code flow engine in the
11
- * TypeScript compiler.
12
- */
13
-
14
- import { assert, fail } from '../common/debug';
15
- import { convertOffsetToPosition } from '../common/positionUtils';
16
- import { ExpressionNode, ParseNode, ParseNodeType } from '../parser/parseNodes';
17
- import { getFileInfo, getImportInfo } from './analyzerNodeInfo';
18
- import {
19
- CodeFlowReferenceExpressionNode,
20
- createKeyForReference,
21
- createKeysForReferenceSubexpressions,
22
- FlowAssignment,
23
- FlowBranchLabel,
24
- FlowCall,
25
- FlowCondition,
26
- FlowExhaustedMatch,
27
- FlowFlags,
28
- FlowLabel,
29
- FlowNarrowForPattern,
30
- FlowNode,
31
- FlowPostContextManagerLabel,
32
- FlowPostFinally,
33
- FlowPreFinallyGate,
34
- FlowVariableAnnotation,
35
- FlowWildcardImport,
36
- } from './codeFlowTypes';
37
- import { formatControlFlowGraph } from './codeFlowUtils';
38
- import { isMatchingExpression, isPartialMatchingExpression, printExpression } from './parseTreeUtils';
39
- import {
40
- CachedType,
41
- IncompleteSubtypeInfo,
42
- IncompleteType,
43
- isIncompleteType,
44
- SpeculativeTypeTracker,
45
- TypeCache,
46
- } from './typeCache';
47
- import { EvaluatorFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes';
48
- import { getTypeNarrowingCallback } from './typeGuards';
49
- import {
50
- ClassType,
51
- combineTypes,
52
- FunctionType,
53
- isClass,
54
- isClassInstance,
55
- isFunction,
56
- isInstantiableClass,
57
- isNever,
58
- isOverloadedFunction,
59
- isTypeSame,
60
- isTypeVar,
61
- maxTypeRecursionCount,
62
- NeverType,
63
- removeIncompleteUnknownFromUnion,
64
- Type,
65
- TypeVarType,
66
- UnboundType,
67
- UnknownType,
68
- } from './types';
69
- import { ClassMemberLookupFlags, doForEachSubtype, isTypeAliasPlaceholder, lookUpClassMember } from './typeUtils';
70
-
71
- export interface FlowNodeTypeResult {
72
- type: Type | undefined;
73
- isIncomplete: boolean;
74
- isRecursionSentinel?: boolean;
75
- generationCount?: number | undefined;
76
- incompleteType?: Type | undefined;
77
- incompleteSubtypes?: IncompleteSubtypeInfo[] | undefined;
78
- }
79
-
80
- export interface CodeFlowAnalyzer {
81
- getTypeFromCodeFlow: (
82
- flowNode: FlowNode,
83
- reference: CodeFlowReferenceExpressionNode | undefined,
84
- targetSymbolId: number | undefined,
85
- initialType: Type | undefined,
86
- isInitialTypeIncomplete: boolean,
87
- ignoreNoReturn: boolean
88
- ) => FlowNodeTypeResult;
89
- }
90
-
91
- export interface CodeFlowEngine {
92
- createCodeFlowAnalyzer: () => CodeFlowAnalyzer;
93
- isFlowNodeReachable: (flowNode: FlowNode, sourceFlowNode?: FlowNode, ignoreNoReturn?: boolean) => boolean;
94
- narrowConstrainedTypeVar: (flowNode: FlowNode, typeVar: TypeVarType) => Type | undefined;
95
- }
96
-
97
- // This debugging option prints the control flow graph when getTypeFromCodeFlow is called.
98
- const isPrintControlFlowGraphEnabled = false;
99
-
100
- // This debugging option prints the results of calls to isCallNoReturn.
101
- const isPrintCallNoReturnEnabled = false;
102
-
103
- export function getCodeFlowEngine(
104
- evaluator: TypeEvaluator,
105
- speculativeTypeTracker: SpeculativeTypeTracker
106
- ): CodeFlowEngine {
107
- const isReachableRecursionMap = new Map<number, true>();
108
- const callIsNoReturnCache = new Map<number, boolean>();
109
- const isExceptionContextManagerCache = new Map<number, boolean>();
110
- let flowIncompleteGeneration = 1;
111
- let noReturnAnalysisDepth = 0;
112
- let contextManagerAnalysisDepth = 0;
113
-
114
- // Creates a new code flow analyzer that can be used to narrow the types
115
- // of the expressions within an execution context. Each code flow analyzer
116
- // instance maintains a cache of types it has already determined.
117
- function createCodeFlowAnalyzer(): CodeFlowAnalyzer {
118
- const flowNodeTypeCacheSet = new Map<string, TypeCache>();
119
-
120
- function getFlowNodeTypeCacheForReference(referenceKey: string) {
121
- let flowNodeTypeCache = flowNodeTypeCacheSet.get(referenceKey);
122
- if (!flowNodeTypeCache) {
123
- flowNodeTypeCache = new Map<number, CachedType | undefined>();
124
- flowNodeTypeCacheSet.set(referenceKey, flowNodeTypeCache);
125
- }
126
-
127
- return flowNodeTypeCache;
128
- }
129
-
130
- function getTypeFromCodeFlow(
131
- flowNode: FlowNode,
132
- reference: CodeFlowReferenceExpressionNode | undefined,
133
- targetSymbolId: number | undefined,
134
- initialType: Type | undefined,
135
- isInitialTypeIncomplete: boolean,
136
- ignoreNoReturn: boolean
137
- ): FlowNodeTypeResult {
138
- if (isPrintControlFlowGraphEnabled) {
139
- printControlFlowGraph(flowNode, reference, 'getTypeFromCodeFlow');
140
- }
141
-
142
- const referenceKey = reference !== undefined ? createKeyForReference(reference) : undefined;
143
- let subexpressionReferenceKeys: string[] | undefined;
144
- const referenceKeyWithSymbolId =
145
- referenceKey !== undefined && targetSymbolId !== undefined
146
- ? referenceKey + `.${targetSymbolId.toString()}`
147
- : '.';
148
- const flowNodeTypeCache = getFlowNodeTypeCacheForReference(referenceKeyWithSymbolId);
149
-
150
- // Caches the type of the flow node in our local cache, keyed by the flow node ID.
151
- function setCacheEntry(
152
- flowNode: FlowNode,
153
- type: Type | undefined,
154
- isIncomplete: boolean,
155
- isRecursionSentinel?: boolean
156
- ): FlowNodeTypeResult {
157
- if (!isIncomplete) {
158
- flowIncompleteGeneration++;
159
- } else if (type) {
160
- const prevEntry = flowNodeTypeCache.get(flowNode.id);
161
- if (prevEntry === undefined) {
162
- flowIncompleteGeneration++;
163
- } else if ((prevEntry as IncompleteType).isIncompleteType) {
164
- const prevIncompleteType = prevEntry as IncompleteType;
165
- if (prevIncompleteType.type && !isTypeSame(prevIncompleteType.type, type)) {
166
- flowIncompleteGeneration++;
167
- }
168
- }
169
- }
170
-
171
- // For speculative or incomplete types, we'll create a separate
172
- // object. For non-speculative and complete types, we'll store
173
- // the type directly.
174
- const entry: CachedType | undefined = isIncomplete
175
- ? {
176
- isIncompleteType: true,
177
- type,
178
- incompleteSubtypes: [],
179
- generationCount: flowIncompleteGeneration,
180
- isRecursionSentinel,
181
- }
182
- : type;
183
-
184
- flowNodeTypeCache.set(flowNode.id, entry);
185
- speculativeTypeTracker.trackEntry(flowNodeTypeCache, flowNode.id);
186
-
187
- return {
188
- type,
189
- isIncomplete,
190
- isRecursionSentinel,
191
- generationCount: flowIncompleteGeneration,
192
- incompleteSubtypes: isIncomplete ? [] : undefined,
193
- };
194
- }
195
-
196
- function setIncompleteSubtype(
197
- flowNode: FlowNode,
198
- index: number,
199
- type: Type | undefined,
200
- isIncomplete: boolean,
201
- isPending: boolean,
202
- evaluationCount: number
203
- ) {
204
- const cachedEntry = flowNodeTypeCache.get(flowNode.id);
205
- if (cachedEntry === undefined || !isIncompleteType(cachedEntry)) {
206
- fail('setIncompleteSubtype can be called only on a valid incomplete cache entry');
207
- }
208
-
209
- const incompleteEntries = cachedEntry.incompleteSubtypes;
210
- if (index < incompleteEntries.length) {
211
- const oldEntry = incompleteEntries[index];
212
- if (
213
- oldEntry.isIncomplete !== isIncomplete ||
214
- oldEntry.type === undefined ||
215
- type === undefined ||
216
- !isTypeSame(oldEntry.type, type)
217
- ) {
218
- incompleteEntries[index] = { type, isIncomplete, isPending, evaluationCount };
219
- flowIncompleteGeneration++;
220
- } else if (oldEntry.isPending !== isPending) {
221
- incompleteEntries[index] = { type, isIncomplete, isPending, evaluationCount };
222
- }
223
- } else {
224
- assert(incompleteEntries.length === index);
225
- incompleteEntries.push({ type, isIncomplete, isPending, evaluationCount });
226
- flowIncompleteGeneration++;
227
- }
228
-
229
- return getCacheEntry(flowNode);
230
- }
231
-
232
- function getCacheEntry(flowNode: FlowNode): FlowNodeTypeResult | undefined {
233
- if (!flowNodeTypeCache.has(flowNode.id)) {
234
- return undefined;
235
- }
236
-
237
- const cachedEntry = flowNodeTypeCache.get(flowNode.id);
238
- if (cachedEntry === undefined) {
239
- return {
240
- type: cachedEntry,
241
- isIncomplete: false,
242
- };
243
- }
244
-
245
- if (!isIncompleteType(cachedEntry)) {
246
- return {
247
- type: cachedEntry,
248
- isIncomplete: false,
249
- };
250
- }
251
-
252
- let type = cachedEntry.type;
253
-
254
- if (cachedEntry.incompleteSubtypes.length > 0) {
255
- // Recompute the effective type based on all of the incomplete
256
- // types we've accumulated so far.
257
- const typesToCombine: Type[] = [];
258
- cachedEntry.incompleteSubtypes.forEach((t) => {
259
- if (t.type) {
260
- typesToCombine.push(t.type);
261
- }
262
- });
263
- type = typesToCombine.length > 0 ? combineTypes(typesToCombine) : undefined;
264
- }
265
-
266
- return {
267
- type,
268
- isIncomplete: true,
269
- incompleteSubtypes: cachedEntry.incompleteSubtypes,
270
- generationCount: cachedEntry.generationCount,
271
- isRecursionSentinel: cachedEntry.isRecursionSentinel,
272
- };
273
- }
274
-
275
- function deleteCacheEntry(flowNode: FlowNode) {
276
- flowNodeTypeCache.delete(flowNode.id);
277
- }
278
-
279
- function evaluateAssignmentFlowNode(flowNode: FlowAssignment): TypeResult | undefined {
280
- // For function and class nodes, the reference node is the name
281
- // node, but we need to use the parent node (the FunctionNode or ClassNode)
282
- // to access the decorated type in the type cache.
283
- let nodeForCacheLookup: ParseNode = flowNode.node;
284
- const parentNode = flowNode.node.parent;
285
- if (parentNode) {
286
- if (parentNode.nodeType === ParseNodeType.Function || parentNode.nodeType === ParseNodeType.Class) {
287
- nodeForCacheLookup = parentNode;
288
- }
289
- }
290
-
291
- return evaluator.evaluateTypeForSubnode(nodeForCacheLookup, () => {
292
- evaluator.evaluateTypesForStatement(flowNode.node);
293
- });
294
- }
295
-
296
- // If this flow has no knowledge of the target expression, it returns undefined.
297
- // If the start flow node for this scope is reachable, the typeAtStart value is
298
- // returned.
299
- function getTypeFromFlowNode(flowNode: FlowNode): FlowNodeTypeResult {
300
- let curFlowNode = flowNode;
301
-
302
- // This is a frequently-called routine, so it's a good place to call
303
- // the cancellation check. If the operation is canceled, an exception
304
- // will be thrown at this point.
305
- evaluator.checkForCancellation();
306
-
307
- while (true) {
308
- // Have we already been here? If so, use the cached value.
309
- const cachedEntry = getCacheEntry(curFlowNode);
310
- if (cachedEntry) {
311
- if (!cachedEntry.isIncomplete) {
312
- return cachedEntry;
313
- }
314
-
315
- // If the cached entry is incomplete, we can use it only if nothing
316
- // has changed that may cause the previously-reported incomplete type to change.
317
- if (cachedEntry.generationCount === flowIncompleteGeneration) {
318
- return { type: cachedEntry.type, isIncomplete: true };
319
- }
320
- }
321
-
322
- if (curFlowNode.flags & FlowFlags.Unreachable) {
323
- // We can get here if there are nodes in a compound logical expression
324
- // (e.g. "False and x") that are never executed but are evaluated.
325
- return setCacheEntry(curFlowNode, NeverType.createNever(), /* isIncomplete */ false);
326
- }
327
-
328
- if (curFlowNode.flags & FlowFlags.VariableAnnotation) {
329
- const varAnnotationNode = curFlowNode as FlowVariableAnnotation;
330
- curFlowNode = varAnnotationNode.antecedent;
331
- continue;
332
- }
333
-
334
- if (curFlowNode.flags & FlowFlags.Call) {
335
- const callFlowNode = curFlowNode as FlowCall;
336
-
337
- // If this function returns a "NoReturn" type, that means
338
- // it always raises an exception or otherwise doesn't return,
339
- // so we can assume that the code before this is unreachable.
340
- if (!ignoreNoReturn && isCallNoReturn(evaluator, callFlowNode)) {
341
- return setCacheEntry(curFlowNode, /* type */ undefined, /* isIncomplete */ false);
342
- }
343
-
344
- curFlowNode = callFlowNode.antecedent;
345
- continue;
346
- }
347
-
348
- if (curFlowNode.flags & FlowFlags.Assignment) {
349
- const assignmentFlowNode = curFlowNode as FlowAssignment;
350
-
351
- // Are we targeting the same symbol? We need to do this extra check because the same
352
- // symbol name might refer to different symbols in different scopes (e.g. a list
353
- // comprehension introduces a new scope).
354
- if (reference) {
355
- if (
356
- targetSymbolId === assignmentFlowNode.targetSymbolId &&
357
- isMatchingExpression(reference, assignmentFlowNode.node)
358
- ) {
359
- // Is this a special "unbind" assignment? If so,
360
- // we can handle it immediately without any further evaluation.
361
- if (curFlowNode.flags & FlowFlags.Unbind) {
362
- return setCacheEntry(curFlowNode, UnboundType.create(), /* isIncomplete */ false);
363
- }
364
-
365
- // If there was a cache entry already, that means we hit a recursive
366
- // case (something like "int: int = 4"). Avoid infinite recursion
367
- // by returning an undefined type.
368
- if (cachedEntry?.isRecursionSentinel) {
369
- return { type: undefined, isIncomplete: true };
370
- }
371
-
372
- // Set the cache entry to undefined before evaluating the
373
- // expression in case it depends on itself.
374
- setCacheEntry(
375
- curFlowNode,
376
- reference ? undefined : initialType,
377
- /* isIncomplete */ true,
378
- /* isRecursionSentinel */ true
379
- );
380
- let flowTypeResult = evaluateAssignmentFlowNode(assignmentFlowNode);
381
- if (flowTypeResult) {
382
- if (isTypeAliasPlaceholder(flowTypeResult.type)) {
383
- flowTypeResult = undefined;
384
- } else if (
385
- reference.nodeType === ParseNodeType.MemberAccess &&
386
- evaluator.isAsymmetricDescriptorAssignment(assignmentFlowNode.node)
387
- ) {
388
- flowTypeResult = undefined;
389
- }
390
- }
391
- return setCacheEntry(curFlowNode, flowTypeResult?.type, !!flowTypeResult?.isIncomplete);
392
- } else if (isPartialMatchingExpression(reference, assignmentFlowNode.node)) {
393
- // If the node partially matches the reference, we need to "kill" any narrowed
394
- // types further above this point. For example, if we see the sequence
395
- // a.b = 3
396
- // a = Foo()
397
- // x = a.b
398
- // The type of "a.b" can no longer be assumed to be Literal[3].
399
- return {
400
- type: initialType,
401
- isIncomplete: isInitialTypeIncomplete,
402
- };
403
- }
404
- }
405
-
406
- curFlowNode = assignmentFlowNode.antecedent;
407
- continue;
408
- }
409
-
410
- if (curFlowNode.flags & FlowFlags.BranchLabel) {
411
- const branchFlowNode = curFlowNode as FlowBranchLabel;
412
- if (curFlowNode.flags & FlowFlags.PostContextManager) {
413
- // Determine whether any of the context managers support exception
414
- // suppression. If not, none of its antecedents are reachable.
415
- const contextMgrNode = curFlowNode as FlowPostContextManagerLabel;
416
- const contextManagerSwallowsExceptions = contextMgrNode.expressions.some((expr) =>
417
- isExceptionContextManager(evaluator, expr, contextMgrNode.isAsync)
418
- );
419
-
420
- if (contextManagerSwallowsExceptions === contextMgrNode.blockIfSwallowsExceptions) {
421
- // Do not explore any further along this code flow path.
422
- return setCacheEntry(curFlowNode, /* type */ undefined, /* isIncomplete */ false);
423
- }
424
- }
425
-
426
- // Is the current symbol modified in any way within the scope of the branch?
427
- // If not, we can skip all processing within the branch scope.
428
- if (reference && branchFlowNode.preBranchAntecedent && branchFlowNode.affectedExpressions) {
429
- if (!subexpressionReferenceKeys) {
430
- subexpressionReferenceKeys = createKeysForReferenceSubexpressions(reference);
431
- }
432
-
433
- if (
434
- !subexpressionReferenceKeys.some((key) =>
435
- branchFlowNode.affectedExpressions!.has(key)
436
- ) &&
437
- isFlowNodeReachable(curFlowNode, branchFlowNode.preBranchAntecedent)
438
- ) {
439
- curFlowNode = branchFlowNode.preBranchAntecedent;
440
- continue;
441
- }
442
- }
443
-
444
- return getTypeFromBranchFlowNode(curFlowNode as FlowLabel);
445
- }
446
-
447
- if (curFlowNode.flags & FlowFlags.LoopLabel) {
448
- const loopNode = curFlowNode as FlowLabel;
449
-
450
- // Is the current symbol modified in any way within the loop? If not, we can skip all
451
- // processing within the loop and assume that the type comes from the first antecedent,
452
- // which feeds the loop.
453
- if (reference) {
454
- if (!subexpressionReferenceKeys) {
455
- subexpressionReferenceKeys = createKeysForReferenceSubexpressions(reference);
456
- }
457
-
458
- if (!subexpressionReferenceKeys.some((key) => loopNode.affectedExpressions!.has(key))) {
459
- curFlowNode = loopNode.antecedents[0];
460
- continue;
461
- }
462
- }
463
-
464
- return getTypeFromLoopFlowNode(loopNode);
465
- }
466
-
467
- if (curFlowNode.flags & (FlowFlags.TrueCondition | FlowFlags.FalseCondition)) {
468
- const conditionalFlowNode = curFlowNode as FlowCondition;
469
-
470
- if (reference) {
471
- // Was an incomplete entry added to prevent recursion?
472
- if (cachedEntry?.isRecursionSentinel) {
473
- return cachedEntry;
474
- }
475
-
476
- // Before calling getTypeNarrowingCallback, set the type
477
- // of this flow node in the cache to prevent recursion.
478
- setCacheEntry(
479
- curFlowNode,
480
- /* type */ undefined,
481
- /* isIncomplete */ true,
482
- /* isRecursionSentinel */ true
483
- );
484
-
485
- try {
486
- const typeNarrowingCallback = getTypeNarrowingCallback(
487
- evaluator,
488
- reference,
489
- conditionalFlowNode.expression,
490
- !!(
491
- conditionalFlowNode.flags &
492
- (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition)
493
- )
494
- );
495
-
496
- if (typeNarrowingCallback) {
497
- const flowTypeResult = getTypeFromFlowNode(conditionalFlowNode.antecedent);
498
- let flowType = flowTypeResult.type;
499
- if (flowType) {
500
- flowType = typeNarrowingCallback(flowType);
501
- }
502
-
503
- return setCacheEntry(curFlowNode, flowType, flowTypeResult.isIncomplete);
504
- }
505
-
506
- deleteCacheEntry(curFlowNode);
507
- } catch (e) {
508
- // We don't use finally here because the debugger
509
- // doesn't handle it well during single stepping.
510
- deleteCacheEntry(curFlowNode);
511
- throw e;
512
- }
513
- }
514
-
515
- curFlowNode = conditionalFlowNode.antecedent;
516
- continue;
517
- }
518
-
519
- if (curFlowNode.flags & (FlowFlags.TrueNeverCondition | FlowFlags.FalseNeverCondition)) {
520
- const conditionalFlowNode = curFlowNode as FlowCondition;
521
- if (conditionalFlowNode.reference) {
522
- // Don't allow apply if the conditional expression references the expression
523
- // we're already narrowing. This case will be handled by the TrueCondition
524
- // or FalseCondition node.
525
- if (createKeyForReference(conditionalFlowNode.reference) !== referenceKey) {
526
- // Make sure the reference type has a declared type. If not,
527
- // don't bother trying to infer its type because that would be
528
- // too expensive.
529
- const symbolWithScope = evaluator.lookUpSymbolRecursive(
530
- conditionalFlowNode.reference,
531
- conditionalFlowNode.reference.value,
532
- /* honorCodeFlow */ false
533
- );
534
- if (symbolWithScope && symbolWithScope.symbol.getTypedDeclarations().length > 0) {
535
- // Before calling getTypeNarrowingCallback, set the type
536
- // of this flow node in the cache to prevent recursion.
537
- setCacheEntry(
538
- curFlowNode,
539
- reference ? undefined : initialType,
540
- /* isIncomplete */ true,
541
- /* isRecursionSentinel */ true
542
- );
543
-
544
- try {
545
- const typeNarrowingCallback = getTypeNarrowingCallback(
546
- evaluator,
547
- conditionalFlowNode.reference,
548
- conditionalFlowNode.expression,
549
- !!(
550
- conditionalFlowNode.flags &
551
- (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition)
552
- )
553
- );
554
-
555
- if (typeNarrowingCallback) {
556
- const refTypeInfo = evaluator.getTypeOfExpression(
557
- conditionalFlowNode.reference!
558
- );
559
- const narrowedType =
560
- typeNarrowingCallback(refTypeInfo.type) || refTypeInfo.type;
561
-
562
- // If the narrowed type is "never", don't allow further exploration.
563
- if (isNever(narrowedType)) {
564
- return setCacheEntry(
565
- curFlowNode,
566
- undefined,
567
- !!refTypeInfo.isIncomplete
568
- );
569
- }
570
- }
571
-
572
- deleteCacheEntry(curFlowNode);
573
- } catch (e) {
574
- // We don't use finally here because the debugger
575
- // doesn't handle it well during single stepping.
576
- deleteCacheEntry(curFlowNode);
577
- throw e;
578
- }
579
- }
580
- }
581
- }
582
- curFlowNode = conditionalFlowNode.antecedent;
583
- continue;
584
- }
585
-
586
- if (curFlowNode.flags & FlowFlags.ExhaustedMatch) {
587
- const exhaustedMatchFlowNode = curFlowNode as FlowExhaustedMatch;
588
- const narrowedTypeResult = evaluator.evaluateTypeForSubnode(exhaustedMatchFlowNode.node, () => {
589
- evaluator.evaluateTypesForMatchStatement(exhaustedMatchFlowNode.node);
590
- });
591
-
592
- // If the narrowed type is "never", don't allow further exploration.
593
- if (narrowedTypeResult && isNever(narrowedTypeResult.type)) {
594
- return setCacheEntry(curFlowNode, /* type */ undefined, !!narrowedTypeResult.isIncomplete);
595
- }
596
-
597
- curFlowNode = exhaustedMatchFlowNode.antecedent;
598
- continue;
599
- }
600
-
601
- if (curFlowNode.flags & FlowFlags.NarrowForPattern) {
602
- const patternFlowNode = curFlowNode as FlowNarrowForPattern;
603
- if (!reference || isMatchingExpression(reference, patternFlowNode.subjectExpression)) {
604
- const typeResult = evaluator.evaluateTypeForSubnode(patternFlowNode.statement, () => {
605
- if (patternFlowNode.statement.nodeType === ParseNodeType.Case) {
606
- evaluator.evaluateTypesForCaseStatement(patternFlowNode.statement);
607
- } else {
608
- evaluator.evaluateTypesForMatchStatement(patternFlowNode.statement);
609
- }
610
- });
611
-
612
- if (typeResult) {
613
- if (!reference) {
614
- if (isNever(typeResult.type)) {
615
- return setCacheEntry(
616
- curFlowNode,
617
- /* type */ undefined,
618
- !!typeResult.isIncomplete
619
- );
620
- }
621
- } else {
622
- return setCacheEntry(curFlowNode, typeResult.type, !!typeResult.isIncomplete);
623
- }
624
- }
625
- }
626
- curFlowNode = patternFlowNode.antecedent;
627
- continue;
628
- }
629
-
630
- if (curFlowNode.flags & FlowFlags.PreFinallyGate) {
631
- return getTypeFromPreFinallyGateFlowNode(curFlowNode as FlowPreFinallyGate);
632
- }
633
-
634
- if (curFlowNode.flags & FlowFlags.PostFinally) {
635
- return getTypeFromPostFinallyFlowNode(curFlowNode as FlowPostFinally);
636
- }
637
-
638
- if (curFlowNode.flags & FlowFlags.Start) {
639
- return setCacheEntry(curFlowNode, initialType, isInitialTypeIncomplete);
640
- }
641
-
642
- if (curFlowNode.flags & FlowFlags.WildcardImport) {
643
- const wildcardImportFlowNode = curFlowNode as FlowWildcardImport;
644
- if (reference && reference.nodeType === ParseNodeType.Name) {
645
- const nameValue = reference.value;
646
- if (wildcardImportFlowNode.names.some((name) => name === nameValue)) {
647
- // Before calling getTypeFromWildcardImport, set the cache entry to prevent infinite recursion.
648
- setCacheEntry(
649
- curFlowNode,
650
- /* type */ undefined,
651
- /* isIncomplete */ true,
652
- /* isRecursionSentinel */ true
653
- );
654
-
655
- try {
656
- const type = getTypeFromWildcardImport(wildcardImportFlowNode, nameValue);
657
- return setCacheEntry(curFlowNode, type, /* isIncomplete */ false);
658
- } catch (e) {
659
- deleteCacheEntry(curFlowNode);
660
- throw e;
661
- }
662
- }
663
- }
664
-
665
- curFlowNode = wildcardImportFlowNode.antecedent;
666
- continue;
667
- }
668
-
669
- // We shouldn't get here.
670
- fail('Unexpected flow node flags');
671
- return setCacheEntry(curFlowNode, /* type */ undefined, /* isIncomplete */ false);
672
- }
673
- }
674
-
675
- function getTypeFromBranchFlowNode(branchNode: FlowLabel) {
676
- const typesToCombine: Type[] = [];
677
-
678
- let sawIncomplete = false;
679
- let isProvenReachable = false;
680
-
681
- // Set the cache entry to undefined before evaluating the
682
- // expression in case it depends on itself.
683
- setCacheEntry(
684
- branchNode,
685
- reference ? undefined : initialType,
686
- /* isIncomplete */ true,
687
- /* isRecursionSentinel */ true
688
- );
689
-
690
- branchNode.antecedents.forEach((antecedent) => {
691
- // If we're solving for "reachability", and we have now proven
692
- // reachability, there's no reason to do more work.
693
- if (reference === undefined && isProvenReachable) {
694
- return;
695
- }
696
-
697
- const flowTypeResult = getTypeFromFlowNode(antecedent);
698
-
699
- if (flowTypeResult.isIncomplete) {
700
- sawIncomplete = true;
701
- }
702
-
703
- if (reference === undefined && flowTypeResult.type !== undefined) {
704
- isProvenReachable = true;
705
- }
706
-
707
- if (flowTypeResult.type) {
708
- typesToCombine.push(flowTypeResult.type);
709
- }
710
- });
711
-
712
- if (isProvenReachable) {
713
- return setCacheEntry(branchNode, initialType, /* isIncomplete */ false);
714
- }
715
-
716
- const effectiveType = typesToCombine.length > 0 ? combineTypes(typesToCombine) : undefined;
717
-
718
- return setCacheEntry(branchNode, effectiveType, sawIncomplete);
719
- }
720
-
721
- function getTypeFromLoopFlowNode(loopNode: FlowLabel) {
722
- // See if we've been here before. If so, there will be an incomplete cache entry.
723
- let cacheEntry = getCacheEntry(loopNode);
724
-
725
- // The type result from one antecedent may depend on the type
726
- // result from another, so loop up to one time for each
727
- // antecedent in the loop.
728
- const maxAttemptCount = loopNode.antecedents.length;
729
-
730
- if (cacheEntry === undefined) {
731
- // We haven't been here before, so create a new incomplete cache entry.
732
- cacheEntry = setCacheEntry(
733
- loopNode,
734
- reference ? undefined : initialType,
735
- /* isIncomplete */ true,
736
- /* isRecursionSentinel */ true
737
- );
738
- } else if (cacheEntry.incompleteSubtypes?.some((subtype) => subtype.isPending)) {
739
- // If there are pending entries that have not been evaluated even once,
740
- // treat it as incomplete.
741
- const isIncomplete =
742
- cacheEntry.incompleteSubtypes.length < loopNode.antecedents.length ||
743
- cacheEntry.incompleteSubtypes.some(
744
- (subtype) => subtype.isPending && subtype.evaluationCount < maxAttemptCount
745
- );
746
- return { type: cacheEntry.type, isIncomplete };
747
- }
748
-
749
- let attemptCount = 0;
750
-
751
- while (true) {
752
- let sawIncomplete = false;
753
- let isProvenReachable =
754
- reference === undefined &&
755
- cacheEntry.incompleteSubtypes?.some((subtype) => subtype.type !== undefined);
756
-
757
- loopNode.antecedents.forEach((antecedent, index) => {
758
- // If we've trying to determine reachability and we've already proven
759
- // reachability, then we're done.
760
- if (reference === undefined && isProvenReachable) {
761
- return;
762
- }
763
-
764
- cacheEntry = getCacheEntry(loopNode)!;
765
-
766
- // Have we already been here (i.e. does the entry exist and is
767
- // not marked "pending")? If so, we can use the type that was already
768
- // computed if it is complete.
769
- const subtypeEntry =
770
- cacheEntry.incompleteSubtypes !== undefined && index < cacheEntry.incompleteSubtypes.length
771
- ? cacheEntry.incompleteSubtypes[index]
772
- : undefined;
773
- if (subtypeEntry === undefined || (!subtypeEntry?.isPending && subtypeEntry?.isIncomplete)) {
774
- const entryEvaluationCount = subtypeEntry === undefined ? 0 : subtypeEntry.evaluationCount;
775
- // Set this entry to "pending" to prevent infinite recursion.
776
- // We'll mark it "not pending" below.
777
- cacheEntry = setIncompleteSubtype(
778
- loopNode,
779
- index,
780
- subtypeEntry?.type ?? (reference ? undefined : initialType),
781
- /* isIncomplete */ true,
782
- /* isPending */ true,
783
- entryEvaluationCount
784
- );
785
-
786
- try {
787
- const flowTypeResult = getTypeFromFlowNode(antecedent);
788
-
789
- if (flowTypeResult.isIncomplete) {
790
- sawIncomplete = true;
791
- }
792
-
793
- cacheEntry = setIncompleteSubtype(
794
- loopNode,
795
- index,
796
- flowTypeResult.type,
797
- flowTypeResult.isIncomplete,
798
- /* isPending */ false,
799
- entryEvaluationCount + 1
800
- );
801
- } catch (e) {
802
- setIncompleteSubtype(
803
- loopNode,
804
- index,
805
- undefined,
806
- /* isIncomplete */ true,
807
- /* isPending */ false,
808
- entryEvaluationCount + 1
809
- );
810
- throw e;
811
- }
812
- }
813
-
814
- if (reference === undefined && cacheEntry?.type !== undefined) {
815
- isProvenReachable = true;
816
- }
817
- });
818
-
819
- if (isProvenReachable) {
820
- return setCacheEntry(loopNode, initialType, /* isIncomplete */ false);
821
- }
822
-
823
- let effectiveType = cacheEntry.type;
824
- if (sawIncomplete) {
825
- // If there is an incomplete "Unknown" type within a union type, remove
826
- // it. Otherwise we might end up resolving the cycle with a type
827
- // that includes an undesirable unknown.
828
- if (effectiveType) {
829
- const typeWithoutUnknown = removeIncompleteUnknownFromUnion(effectiveType);
830
- if (!isNever(typeWithoutUnknown)) {
831
- effectiveType = typeWithoutUnknown;
832
- }
833
- }
834
- }
835
-
836
- if (!sawIncomplete || attemptCount >= maxAttemptCount) {
837
- return setCacheEntry(loopNode, effectiveType, /* isIncomplete */ false);
838
- }
839
-
840
- attemptCount++;
841
- }
842
- }
843
-
844
- function getTypeFromPreFinallyGateFlowNode(preFinallyFlowNode: FlowPreFinallyGate) {
845
- if (preFinallyFlowNode.isGateClosed) {
846
- return { type: undefined, isIncomplete: false };
847
- }
848
-
849
- // Before recursively calling, set the cache entry to prevent infinite recursion.
850
- setCacheEntry(
851
- preFinallyFlowNode,
852
- reference ? undefined : initialType,
853
- /* isIncomplete */ true,
854
- /* isRecursionSentinel */ true
855
- );
856
-
857
- try {
858
- const flowTypeResult = getTypeFromFlowNode(preFinallyFlowNode.antecedent);
859
-
860
- // We want to cache the type only if we're evaluating the "gate closed" path.
861
- deleteCacheEntry(preFinallyFlowNode);
862
-
863
- return {
864
- type: flowTypeResult.type,
865
- isIncomplete: flowTypeResult.isIncomplete,
866
- };
867
- } catch (e) {
868
- deleteCacheEntry(preFinallyFlowNode);
869
- throw e;
870
- }
871
- }
872
-
873
- function getTypeFromPostFinallyFlowNode(postFinallyFlowNode: FlowPostFinally) {
874
- const wasGateClosed = postFinallyFlowNode.preFinallyGate.isGateClosed;
875
- try {
876
- postFinallyFlowNode.preFinallyGate.isGateClosed = true;
877
- let flowTypeResult: FlowNodeTypeResult | undefined;
878
-
879
- // Use speculative mode for the remainder of the finally suite
880
- // because the final types within this parse node block should be
881
- // evaluated when the gate is open.
882
- evaluator.useSpeculativeMode(postFinallyFlowNode.finallyNode, () => {
883
- flowTypeResult = getTypeFromFlowNode(postFinallyFlowNode.antecedent);
884
- });
885
-
886
- // If the type is incomplete, don't write back to the cache.
887
- return flowTypeResult!.isIncomplete
888
- ? flowTypeResult!
889
- : setCacheEntry(postFinallyFlowNode, flowTypeResult!.type, /* isIncomplete */ false);
890
- } finally {
891
- postFinallyFlowNode.preFinallyGate.isGateClosed = wasGateClosed;
892
- }
893
- }
894
-
895
- if (!flowNode) {
896
- // This should happen only in cases where we're evaluating
897
- // parse nodes that are created after the initial parse
898
- // (namely, string literals that are used for forward
899
- // referenced types).
900
- return {
901
- type: initialType,
902
- isIncomplete: isInitialTypeIncomplete,
903
- };
904
- }
905
-
906
- return getTypeFromFlowNode(flowNode);
907
- }
908
-
909
- return {
910
- getTypeFromCodeFlow,
911
- };
912
- }
913
-
914
- // Determines whether the specified flowNode can be reached by any
915
- // control flow path within the execution context. If sourceFlowNode
916
- // is specified, it returns true only if at least one control flow
917
- // path passes through sourceFlowNode.
918
- function isFlowNodeReachable(flowNode: FlowNode, sourceFlowNode?: FlowNode, ignoreNoReturn = false): boolean {
919
- const visitedFlowNodeMap = new Set<number>();
920
-
921
- if (isPrintControlFlowGraphEnabled) {
922
- printControlFlowGraph(flowNode, /* reference */ undefined, 'isFlowNodeReachable');
923
- }
924
-
925
- function isFlowNodeReachableRecursive(
926
- flowNode: FlowNode,
927
- sourceFlowNode: FlowNode | undefined,
928
- recursionCount = 0
929
- ): boolean {
930
- // Cut off the recursion at some point to prevent a stack overflow.
931
- const maxFlowNodeReachableRecursionCount = 64;
932
- if (recursionCount > maxFlowNodeReachableRecursionCount) {
933
- return true;
934
- }
935
- recursionCount++;
936
-
937
- let curFlowNode = flowNode;
938
-
939
- while (true) {
940
- // If we've already visited this node, we can assume
941
- // it wasn't reachable.
942
- if (visitedFlowNodeMap.has(curFlowNode.id)) {
943
- return false;
944
- }
945
-
946
- // Note that we've been here before.
947
- visitedFlowNodeMap.add(curFlowNode.id);
948
-
949
- if (curFlowNode.flags & FlowFlags.Unreachable) {
950
- return false;
951
- }
952
-
953
- if (curFlowNode === sourceFlowNode) {
954
- return true;
955
- }
956
-
957
- if (
958
- curFlowNode.flags &
959
- (FlowFlags.VariableAnnotation |
960
- FlowFlags.Assignment |
961
- FlowFlags.TrueCondition |
962
- FlowFlags.FalseCondition |
963
- FlowFlags.WildcardImport |
964
- FlowFlags.TrueNeverCondition |
965
- FlowFlags.FalseNeverCondition |
966
- FlowFlags.NarrowForPattern |
967
- FlowFlags.ExhaustedMatch)
968
- ) {
969
- const typedFlowNode = curFlowNode as
970
- | FlowVariableAnnotation
971
- | FlowAssignment
972
- | FlowCondition
973
- | FlowWildcardImport
974
- | FlowCondition
975
- | FlowExhaustedMatch;
976
- curFlowNode = typedFlowNode.antecedent;
977
- continue;
978
- }
979
-
980
- if (curFlowNode.flags & FlowFlags.Call) {
981
- const callFlowNode = curFlowNode as FlowCall;
982
-
983
- // If this function returns a "NoReturn" type, that means
984
- // it always raises an exception or otherwise doesn't return,
985
- // so we can assume that the code before this is unreachable.
986
- if (!ignoreNoReturn && isCallNoReturn(evaluator, callFlowNode)) {
987
- return false;
988
- }
989
-
990
- curFlowNode = callFlowNode.antecedent;
991
- continue;
992
- }
993
-
994
- if (curFlowNode.flags & (FlowFlags.BranchLabel | FlowFlags.LoopLabel)) {
995
- if (curFlowNode.flags & FlowFlags.PostContextManager) {
996
- // Determine whether any of the context managers support exception
997
- // suppression. If not, none of its antecedents are reachable.
998
- const contextMgrNode = curFlowNode as FlowPostContextManagerLabel;
999
- if (
1000
- !contextMgrNode.expressions.some((expr) =>
1001
- isExceptionContextManager(evaluator, expr, contextMgrNode.isAsync)
1002
- )
1003
- ) {
1004
- return false;
1005
- }
1006
- }
1007
-
1008
- const labelNode = curFlowNode as FlowLabel;
1009
- for (const antecedent of labelNode.antecedents) {
1010
- if (isFlowNodeReachableRecursive(antecedent, sourceFlowNode, recursionCount)) {
1011
- return true;
1012
- }
1013
- }
1014
- return false;
1015
- }
1016
-
1017
- if (curFlowNode.flags & FlowFlags.Start) {
1018
- // If we hit the start but were looking for a particular source flow
1019
- // node, return false. Otherwise, the start is what we're looking for.
1020
- return sourceFlowNode ? false : true;
1021
- }
1022
-
1023
- if (curFlowNode.flags & FlowFlags.PreFinallyGate) {
1024
- const preFinallyFlowNode = curFlowNode as FlowPreFinallyGate;
1025
- if (preFinallyFlowNode.isGateClosed) {
1026
- return false;
1027
- }
1028
-
1029
- curFlowNode = preFinallyFlowNode.antecedent;
1030
- continue;
1031
- }
1032
-
1033
- if (curFlowNode.flags & FlowFlags.PostFinally) {
1034
- const postFinallyFlowNode = curFlowNode as FlowPostFinally;
1035
- const wasGateClosed = postFinallyFlowNode.preFinallyGate.isGateClosed;
1036
-
1037
- try {
1038
- postFinallyFlowNode.preFinallyGate.isGateClosed = true;
1039
- return isFlowNodeReachableRecursive(
1040
- postFinallyFlowNode.antecedent,
1041
- sourceFlowNode,
1042
- recursionCount
1043
- );
1044
- } finally {
1045
- postFinallyFlowNode.preFinallyGate.isGateClosed = wasGateClosed;
1046
- }
1047
- }
1048
-
1049
- // We shouldn't get here.
1050
- fail('Unexpected flow node flags');
1051
- return false;
1052
- }
1053
- }
1054
-
1055
- // Protect against infinite recursion.
1056
- if (isReachableRecursionMap.has(flowNode.id)) {
1057
- return true;
1058
- }
1059
- isReachableRecursionMap.set(flowNode.id, true);
1060
-
1061
- try {
1062
- return isFlowNodeReachableRecursive(flowNode, sourceFlowNode);
1063
- } finally {
1064
- isReachableRecursionMap.delete(flowNode.id);
1065
- }
1066
- }
1067
-
1068
- // Determines whether the specified typeVar, which is assumed to be constrained,
1069
- // can be narrowed to one of its constrained types based on isinstance type
1070
- // guard checks.
1071
- function narrowConstrainedTypeVar(flowNode: FlowNode, typeVar: TypeVarType): ClassType | undefined {
1072
- assert(!typeVar.details.isParamSpec);
1073
- assert(!typeVar.details.isVariadic);
1074
- assert(!typeVar.details.boundType);
1075
- assert(typeVar.details.constraints.length > 0);
1076
-
1077
- const visitedFlowNodeMap = new Set<number>();
1078
- const startingConstraints: ClassType[] = [];
1079
-
1080
- for (const constraint of typeVar.details.constraints) {
1081
- if (isClassInstance(constraint)) {
1082
- startingConstraints.push(constraint);
1083
- } else {
1084
- // If one or more constraints are Unknown, Any, union types, etc.,
1085
- // we can't narrow them.
1086
- return undefined;
1087
- }
1088
- }
1089
-
1090
- function narrowConstrainedTypeVarRecursive(flowNode: FlowNode, typeVar: TypeVarType): ClassType[] {
1091
- let curFlowNode = flowNode;
1092
-
1093
- while (true) {
1094
- if (visitedFlowNodeMap.has(curFlowNode.id)) {
1095
- return startingConstraints;
1096
- }
1097
-
1098
- if (curFlowNode.flags & (FlowFlags.Unreachable | FlowFlags.Start)) {
1099
- return startingConstraints;
1100
- }
1101
-
1102
- if (
1103
- curFlowNode.flags &
1104
- (FlowFlags.VariableAnnotation |
1105
- FlowFlags.Assignment |
1106
- FlowFlags.WildcardImport |
1107
- FlowFlags.TrueNeverCondition |
1108
- FlowFlags.FalseNeverCondition |
1109
- FlowFlags.NarrowForPattern |
1110
- FlowFlags.ExhaustedMatch |
1111
- FlowFlags.PostFinally |
1112
- FlowFlags.PreFinallyGate |
1113
- FlowFlags.Call)
1114
- ) {
1115
- const typedFlowNode = curFlowNode as
1116
- | FlowVariableAnnotation
1117
- | FlowAssignment
1118
- | FlowWildcardImport
1119
- | FlowExhaustedMatch
1120
- | FlowNarrowForPattern
1121
- | FlowPostFinally
1122
- | FlowPreFinallyGate
1123
- | FlowCall;
1124
- curFlowNode = typedFlowNode.antecedent;
1125
- continue;
1126
- }
1127
-
1128
- if (curFlowNode.flags & (FlowFlags.TrueCondition | FlowFlags.FalseCondition)) {
1129
- const conditionFlowNode = curFlowNode as FlowCondition;
1130
- const testExpression = conditionFlowNode.expression;
1131
- const isPositiveTest = (curFlowNode.flags & FlowFlags.TrueCondition) !== 0;
1132
-
1133
- if (
1134
- testExpression.nodeType === ParseNodeType.Call &&
1135
- testExpression.leftExpression.nodeType === ParseNodeType.Name &&
1136
- testExpression.leftExpression.value === 'isinstance' &&
1137
- testExpression.arguments.length === 2
1138
- ) {
1139
- const arg0Expr = testExpression.arguments[0].valueExpression;
1140
-
1141
- const arg0Type = evaluator.getTypeOfExpression(arg0Expr).type;
1142
-
1143
- if (isCompatibleWithConstrainedTypeVar(arg0Type, typeVar)) {
1144
- // Prevent infinite recursion by noting that we've been here before.
1145
- visitedFlowNodeMap.add(curFlowNode.id);
1146
- const priorRemainingConstraints = narrowConstrainedTypeVarRecursive(
1147
- conditionFlowNode.antecedent,
1148
- typeVar
1149
- );
1150
- visitedFlowNodeMap.delete(curFlowNode.id);
1151
-
1152
- const arg1Expr = testExpression.arguments[1].valueExpression;
1153
- const arg1Type = evaluator.getTypeOfExpression(
1154
- arg1Expr,
1155
- EvaluatorFlags.EvaluateStringLiteralAsType |
1156
- EvaluatorFlags.ParamSpecDisallowed |
1157
- EvaluatorFlags.TypeVarTupleDisallowed
1158
- ).type;
1159
-
1160
- if (isInstantiableClass(arg1Type)) {
1161
- return priorRemainingConstraints.filter((subtype) => {
1162
- if (ClassType.isSameGenericClass(subtype, arg1Type)) {
1163
- return isPositiveTest;
1164
- } else {
1165
- return !isPositiveTest;
1166
- }
1167
- });
1168
- }
1169
- }
1170
- }
1171
-
1172
- curFlowNode = conditionFlowNode.antecedent;
1173
- continue;
1174
- }
1175
-
1176
- if (curFlowNode.flags & (FlowFlags.BranchLabel | FlowFlags.LoopLabel)) {
1177
- const labelNode = curFlowNode as FlowLabel;
1178
- const newConstraints: ClassType[] = [];
1179
-
1180
- // Prevent infinite recursion by noting that we've been here before.
1181
- visitedFlowNodeMap.add(curFlowNode.id);
1182
- for (const antecedent of labelNode.antecedents) {
1183
- const constraintsToAdd = narrowConstrainedTypeVarRecursive(antecedent, typeVar);
1184
-
1185
- for (const constraint of constraintsToAdd) {
1186
- if (!newConstraints.some((t) => isTypeSame(t, constraint))) {
1187
- newConstraints.push(constraint);
1188
- }
1189
- }
1190
- }
1191
- visitedFlowNodeMap.delete(curFlowNode.id);
1192
-
1193
- return newConstraints;
1194
- }
1195
-
1196
- // We shouldn't get here.
1197
- fail('Unexpected flow node flags');
1198
- return startingConstraints;
1199
- }
1200
- }
1201
-
1202
- const narrowedConstrainedType = narrowConstrainedTypeVarRecursive(flowNode, typeVar);
1203
-
1204
- // Have we narrowed the typeVar to a single constraint?
1205
- return narrowedConstrainedType.length === 1 ? narrowedConstrainedType[0] : undefined;
1206
- }
1207
-
1208
- // Determines whether a specified type is the same as a constrained
1209
- // TypeVar or is conditioned on that same TypeVar or is some union of
1210
- // the above.
1211
- function isCompatibleWithConstrainedTypeVar(type: Type, typeVar: TypeVarType) {
1212
- let isCompatible = true;
1213
- doForEachSubtype(type, (subtype) => {
1214
- if (isTypeVar(subtype)) {
1215
- if (!isTypeSame(subtype, typeVar)) {
1216
- isCompatible = false;
1217
- }
1218
- } else if (subtype.condition) {
1219
- if (
1220
- !subtype.condition.some(
1221
- (condition) => condition.isConstrainedTypeVar && condition.typeVarName === typeVar.nameWithScope
1222
- )
1223
- ) {
1224
- isCompatible = false;
1225
- }
1226
- } else {
1227
- isCompatible = false;
1228
- }
1229
- });
1230
-
1231
- return isCompatible;
1232
- }
1233
-
1234
- // Determines whether a call associated with this flow node returns a NoReturn
1235
- // type, thus preventing further traversal of the code flow graph.
1236
- function isCallNoReturn(evaluator: TypeEvaluator, flowNode: FlowCall) {
1237
- const node = flowNode.node;
1238
-
1239
- if (isPrintCallNoReturnEnabled) {
1240
- console.log(`isCallNoReturn@${flowNode.id} Pre depth ${noReturnAnalysisDepth}`);
1241
- }
1242
-
1243
- // See if this information is cached already.
1244
- if (callIsNoReturnCache.has(node.id)) {
1245
- const result = callIsNoReturnCache.get(node.id);
1246
-
1247
- if (isPrintCallNoReturnEnabled) {
1248
- console.log(`isCallNoReturn@${flowNode.id} Post: ${result ? 'true' : 'false'} (cached)`);
1249
- }
1250
-
1251
- return result;
1252
- }
1253
-
1254
- // See if we've exceeded the max recursion depth.
1255
- if (noReturnAnalysisDepth > maxTypeRecursionCount) {
1256
- return false;
1257
- }
1258
-
1259
- // Initially set to false to avoid recursion.
1260
- callIsNoReturnCache.set(node.id, false);
1261
-
1262
- noReturnAnalysisDepth++;
1263
-
1264
- try {
1265
- let noReturnTypeCount = 0;
1266
- let subtypeCount = 0;
1267
-
1268
- // Evaluate the call base type.
1269
- const callType = evaluator.getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize).type;
1270
-
1271
- doForEachSubtype(callType, (callSubtype) => {
1272
- // Track the number of subtypes we've examined.
1273
- subtypeCount++;
1274
-
1275
- if (isInstantiableClass(callSubtype)) {
1276
- // Does the class have a custom metaclass that implements a `__call__` method?
1277
- // If so, it will be called instead of `__init__` or `__new__`. We'll assume
1278
- // in this case that the __call__ method is not a NoReturn type.
1279
- if (
1280
- callSubtype.details.effectiveMetaclass &&
1281
- isClass(callSubtype.details.effectiveMetaclass) &&
1282
- !ClassType.isBuiltIn(callSubtype.details.effectiveMetaclass, 'type')
1283
- ) {
1284
- const metaclassCallMember = lookUpClassMember(
1285
- callSubtype.details.effectiveMetaclass,
1286
- '__call__',
1287
- ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass
1288
- );
1289
- if (metaclassCallMember) {
1290
- return;
1291
- }
1292
- }
1293
-
1294
- let constructorMember = lookUpClassMember(
1295
- callSubtype,
1296
- '__init__',
1297
- ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass
1298
- );
1299
-
1300
- if (constructorMember === undefined) {
1301
- constructorMember = lookUpClassMember(
1302
- callSubtype,
1303
- '__new__',
1304
- ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass
1305
- );
1306
- }
1307
-
1308
- if (constructorMember) {
1309
- const constructorType = evaluator.getTypeOfMember(constructorMember);
1310
- if (constructorType) {
1311
- if (isFunction(constructorType) || isOverloadedFunction(constructorType)) {
1312
- const boundConstructorType = evaluator.bindFunctionToClassOrObject(
1313
- undefined,
1314
- constructorType
1315
- );
1316
- if (boundConstructorType) {
1317
- callSubtype = boundConstructorType;
1318
- }
1319
- }
1320
- }
1321
- }
1322
- } else if (isClassInstance(callSubtype)) {
1323
- const callMember = lookUpClassMember(
1324
- callSubtype,
1325
- '__call__',
1326
- ClassMemberLookupFlags.SkipInstanceVariables
1327
- );
1328
- if (callMember) {
1329
- const callMemberType = evaluator.getTypeOfMember(callMember);
1330
- if (callMemberType) {
1331
- if (isFunction(callMemberType) || isOverloadedFunction(callMemberType)) {
1332
- const boundCallType = evaluator.bindFunctionToClassOrObject(undefined, callMemberType);
1333
- if (boundCallType) {
1334
- callSubtype = boundCallType;
1335
- }
1336
- }
1337
- }
1338
- }
1339
- }
1340
-
1341
- const isCallAwaited = node.parent?.nodeType === ParseNodeType.Await;
1342
- if (isFunction(callSubtype)) {
1343
- if (isFunctionNoReturn(callSubtype, isCallAwaited)) {
1344
- noReturnTypeCount++;
1345
- }
1346
- } else if (isOverloadedFunction(callSubtype)) {
1347
- let overloadCount = 0;
1348
- let noReturnOverloadCount = 0;
1349
-
1350
- callSubtype.overloads.forEach((overload) => {
1351
- if (FunctionType.isOverloaded(overload)) {
1352
- overloadCount++;
1353
-
1354
- if (isFunctionNoReturn(overload, isCallAwaited)) {
1355
- noReturnOverloadCount++;
1356
- }
1357
- }
1358
- });
1359
-
1360
- // Was at least one of the overloaded return types NoReturn?
1361
- if (noReturnOverloadCount > 0) {
1362
- if (noReturnOverloadCount === overloadCount) {
1363
- noReturnTypeCount++;
1364
- }
1365
-
1366
- // For now, assume that if some (but not all) overloads return
1367
- // NoReturn that the call is not a NoReturn.
1368
- }
1369
- }
1370
- });
1371
-
1372
- // The call is considered NoReturn if all subtypes evaluate to NoReturn.
1373
- const callIsNoReturn = subtypeCount > 0 && noReturnTypeCount === subtypeCount;
1374
-
1375
- // Cache the value for next time.
1376
- callIsNoReturnCache.set(node.id, callIsNoReturn);
1377
-
1378
- if (isPrintCallNoReturnEnabled) {
1379
- console.log(`isCallNoReturn@${flowNode.id} Post: ${callIsNoReturn ? 'true' : 'false'}`);
1380
- }
1381
-
1382
- return callIsNoReturn;
1383
- } finally {
1384
- noReturnAnalysisDepth--;
1385
- }
1386
- }
1387
-
1388
- function isFunctionNoReturn(functionType: FunctionType, isCallAwaited: boolean) {
1389
- const returnType = functionType.details.declaredReturnType;
1390
- if (FunctionType.isAsync(functionType)) {
1391
- if (
1392
- returnType &&
1393
- isClassInstance(returnType) &&
1394
- ClassType.isBuiltIn(returnType, 'Coroutine') &&
1395
- returnType.typeArguments &&
1396
- returnType.typeArguments.length >= 3
1397
- ) {
1398
- if (isNever(returnType.typeArguments[2]) && isCallAwaited) {
1399
- return true;
1400
- }
1401
- }
1402
- } else if (returnType) {
1403
- return isNever(returnType);
1404
- } else if (functionType.details.declaration) {
1405
- // If the function has yield expressions, it's a generator, and
1406
- // we'll assume the yield statements are reachable. Also, don't
1407
- // infer a "no return" type for abstract methods.
1408
- if (
1409
- !functionType.details.declaration.yieldStatements &&
1410
- !FunctionType.isAbstractMethod(functionType) &&
1411
- !FunctionType.isStubDefinition(functionType) &&
1412
- !FunctionType.isPyTypedDefinition(functionType)
1413
- ) {
1414
- // Check specifically for a common idiom where the only statement
1415
- // (other than a possible docstring) is a "raise NotImplementedError".
1416
- const functionStatements = functionType.details.declaration.node.suite.statements;
1417
-
1418
- let foundRaiseNotImplemented = false;
1419
- for (const statement of functionStatements) {
1420
- if (statement.nodeType !== ParseNodeType.StatementList || statement.statements.length !== 1) {
1421
- break;
1422
- }
1423
-
1424
- const simpleStatement = statement.statements[0];
1425
- if (simpleStatement.nodeType === ParseNodeType.StringList) {
1426
- continue;
1427
- }
1428
-
1429
- if (simpleStatement.nodeType === ParseNodeType.Raise && simpleStatement.typeExpression) {
1430
- // Check for "raise NotImplementedError" or "raise NotImplementedError()"
1431
- const isNotImplementedName = (node: ParseNode) => {
1432
- return node?.nodeType === ParseNodeType.Name && node.value === 'NotImplementedError';
1433
- };
1434
-
1435
- if (isNotImplementedName(simpleStatement.typeExpression)) {
1436
- foundRaiseNotImplemented = true;
1437
- } else if (
1438
- simpleStatement.typeExpression.nodeType === ParseNodeType.Call &&
1439
- isNotImplementedName(simpleStatement.typeExpression.leftExpression)
1440
- ) {
1441
- foundRaiseNotImplemented = true;
1442
- }
1443
- }
1444
-
1445
- break;
1446
- }
1447
-
1448
- if (!foundRaiseNotImplemented && !isAfterNodeReachable(evaluator, functionType)) {
1449
- return true;
1450
- }
1451
- }
1452
- }
1453
-
1454
- return false;
1455
- }
1456
-
1457
- function isAfterNodeReachable(evaluator: TypeEvaluator, functionType: FunctionType) {
1458
- if (!functionType.details.declaration) {
1459
- return true;
1460
- }
1461
-
1462
- return evaluator.isAfterNodeReachable(functionType.details.declaration.node);
1463
- }
1464
-
1465
- // Performs a cursory analysis to determine whether the expression
1466
- // corresponds to a context manager object that supports the swallowing
1467
- // of exceptions. By convention, these objects have an "__exit__" method
1468
- // that returns a bool response (as opposed to a None). This function is
1469
- // called during code flow, so it can't rely on full type evaluation. It
1470
- // makes some simplifying assumptions that work in most cases.
1471
- function isExceptionContextManager(evaluator: TypeEvaluator, node: ExpressionNode, isAsync: boolean) {
1472
- // See if this information is cached already.
1473
- if (isExceptionContextManagerCache.has(node.id)) {
1474
- return isExceptionContextManagerCache.get(node.id);
1475
- }
1476
-
1477
- // Initially set to false to avoid infinite recursion.
1478
- isExceptionContextManagerCache.set(node.id, false);
1479
-
1480
- // See if we've exceeded the max recursion depth.
1481
- if (contextManagerAnalysisDepth > maxTypeRecursionCount) {
1482
- return false;
1483
- }
1484
-
1485
- contextManagerAnalysisDepth++;
1486
- let cmSwallowsExceptions = false;
1487
-
1488
- try {
1489
- const cmType = evaluator.getTypeOfExpression(node).type;
1490
-
1491
- if (cmType && isClassInstance(cmType)) {
1492
- const exitMethodName = isAsync ? '__aexit__' : '__exit__';
1493
- const exitType = evaluator.getTypeOfObjectMember(node, cmType, exitMethodName)?.type;
1494
-
1495
- if (exitType && isFunction(exitType) && exitType.details.declaredReturnType) {
1496
- const returnType = exitType.details.declaredReturnType;
1497
- cmSwallowsExceptions = isClassInstance(returnType) && ClassType.isBuiltIn(returnType, 'bool');
1498
- }
1499
- }
1500
- } finally {
1501
- contextManagerAnalysisDepth--;
1502
- }
1503
-
1504
- // Cache the value for next time.
1505
- isExceptionContextManagerCache.set(node.id, cmSwallowsExceptions);
1506
-
1507
- return cmSwallowsExceptions;
1508
- }
1509
-
1510
- function getTypeFromWildcardImport(flowNode: FlowWildcardImport, name: string): Type {
1511
- const importInfo = getImportInfo(flowNode.node.module);
1512
- assert(importInfo !== undefined && importInfo.isImportFound);
1513
- assert(flowNode.node.isWildcardImport);
1514
-
1515
- const symbolWithScope = evaluator.lookUpSymbolRecursive(flowNode.node, name, /* honorCodeFlow */ false);
1516
- assert(symbolWithScope !== undefined);
1517
- const decls = symbolWithScope!.symbol.getDeclarations();
1518
- const wildcardDecl = decls.find((decl) => decl.node === flowNode.node);
1519
-
1520
- if (!wildcardDecl) {
1521
- return UnknownType.create();
1522
- }
1523
-
1524
- return evaluator.getInferredTypeOfDeclaration(symbolWithScope!.symbol, wildcardDecl) || UnknownType.create();
1525
- }
1526
-
1527
- function printControlFlowGraph(
1528
- flowNode: FlowNode,
1529
- reference: CodeFlowReferenceExpressionNode | undefined,
1530
- callName: string
1531
- ) {
1532
- let referenceText = '';
1533
- if (reference) {
1534
- const fileInfo = getFileInfo(reference);
1535
- const pos = convertOffsetToPosition(reference.start, fileInfo.lines);
1536
- referenceText = `${printExpression(reference)}[${pos.line + 1}:${pos.character + 1}]`;
1537
- }
1538
-
1539
- console.log(`${callName}@${flowNode.id}: ${referenceText || '(none)'}`);
1540
- console.log(formatControlFlowGraph(flowNode));
1541
- }
1542
-
1543
- return {
1544
- createCodeFlowAnalyzer,
1545
- isFlowNodeReachable,
1546
- narrowConstrainedTypeVar,
1547
- };
1548
- }