@zzzen/pyright-internal 1.1.255 → 1.2.0-dev.20220703

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 (1456) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/analyzer/aliasDeclarationUtils.js +2 -2
  4. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  5. package/dist/analyzer/analyzerNodeInfo.d.ts +4 -1
  6. package/dist/analyzer/analyzerNodeInfo.js +12 -1
  7. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  8. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  9. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  10. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  11. package/dist/analyzer/binder.d.ts +6 -1
  12. package/dist/analyzer/binder.js +142 -32
  13. package/dist/analyzer/binder.js.map +1 -1
  14. package/dist/analyzer/checker.d.ts +4 -1
  15. package/dist/analyzer/checker.js +144 -73
  16. package/dist/analyzer/checker.js.map +1 -1
  17. package/dist/analyzer/codeFlowUtils.js +33 -0
  18. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  19. package/dist/analyzer/constraintSolver.js +6 -3
  20. package/dist/analyzer/constraintSolver.js.map +1 -1
  21. package/dist/analyzer/dataClasses.js +6 -4
  22. package/dist/analyzer/dataClasses.js.map +1 -1
  23. package/dist/analyzer/declaration.d.ts +18 -6
  24. package/dist/analyzer/declaration.js +25 -5
  25. package/dist/analyzer/declaration.js.map +1 -1
  26. package/dist/analyzer/declarationUtils.d.ts +1 -1
  27. package/dist/analyzer/declarationUtils.js +19 -16
  28. package/dist/analyzer/declarationUtils.js.map +1 -1
  29. package/dist/analyzer/importResult.js +7 -0
  30. package/dist/analyzer/importResult.js.map +1 -1
  31. package/dist/analyzer/importStatementUtils.js +10 -1
  32. package/dist/analyzer/importStatementUtils.js.map +1 -1
  33. package/dist/analyzer/namedTuples.js +1 -1
  34. package/dist/analyzer/namedTuples.js.map +1 -1
  35. package/dist/analyzer/packageTypeReport.js +10 -1
  36. package/dist/analyzer/packageTypeReport.js.map +1 -1
  37. package/dist/analyzer/packageTypeVerifier.js +6 -6
  38. package/dist/analyzer/parseTreeUtils.d.ts +3 -3
  39. package/dist/analyzer/parseTreeUtils.js +27 -13
  40. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  41. package/dist/analyzer/parseTreeWalker.d.ts +4 -1
  42. package/dist/analyzer/parseTreeWalker.js +19 -1
  43. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  44. package/dist/analyzer/program.d.ts +2 -1
  45. package/dist/analyzer/program.js +27 -23
  46. package/dist/analyzer/program.js.map +1 -1
  47. package/dist/analyzer/properties.js +2 -0
  48. package/dist/analyzer/properties.js.map +1 -1
  49. package/dist/analyzer/protocols.d.ts +0 -1
  50. package/dist/analyzer/protocols.js +4 -64
  51. package/dist/analyzer/protocols.js.map +1 -1
  52. package/dist/analyzer/scope.js +22 -1
  53. package/dist/analyzer/scope.js.map +1 -1
  54. package/dist/analyzer/service.d.ts +20 -8
  55. package/dist/analyzer/service.js +39 -19
  56. package/dist/analyzer/service.js.map +1 -1
  57. package/dist/analyzer/sourceFile.js +1 -1
  58. package/dist/analyzer/sourceFile.js.map +1 -1
  59. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
  60. package/dist/analyzer/sourceFileInfoUtils.js +15 -0
  61. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
  62. package/dist/analyzer/symbol.d.ts +3 -1
  63. package/dist/analyzer/symbol.js +39 -1
  64. package/dist/analyzer/symbol.js.map +1 -1
  65. package/dist/analyzer/tracePrinter.js +8 -4
  66. package/dist/analyzer/tracePrinter.js.map +1 -1
  67. package/dist/analyzer/typeDocStringUtils.js +11 -3
  68. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  69. package/dist/analyzer/typeEvaluator.js +610 -208
  70. package/dist/analyzer/typeEvaluator.js.map +1 -1
  71. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  72. package/dist/analyzer/typeEvaluatorTypes.js +65 -1
  73. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  74. package/dist/analyzer/typeEvaluatorWithTracker.js +2 -0
  75. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  76. package/dist/analyzer/typeGuards.d.ts +2 -0
  77. package/dist/analyzer/typeGuards.js +113 -69
  78. package/dist/analyzer/typeGuards.js.map +1 -1
  79. package/dist/analyzer/typePrinter.js +27 -2
  80. package/dist/analyzer/typePrinter.js.map +1 -1
  81. package/dist/analyzer/typeStubWriter.d.ts +4 -1
  82. package/dist/analyzer/typeStubWriter.js +36 -0
  83. package/dist/analyzer/typeStubWriter.js.map +1 -1
  84. package/dist/analyzer/typeUtils.js +129 -33
  85. package/dist/analyzer/typeUtils.js.map +1 -1
  86. package/dist/analyzer/typedDicts.js +2 -1
  87. package/dist/analyzer/typedDicts.js.map +1 -1
  88. package/dist/analyzer/types.d.ts +12 -4
  89. package/dist/analyzer/types.js +215 -6
  90. package/dist/analyzer/types.js.map +1 -1
  91. package/dist/backgroundAnalysisBase.d.ts +1 -1
  92. package/dist/commands/commands.js +9 -0
  93. package/dist/commands/commands.js.map +1 -1
  94. package/dist/common/commandLineOptions.js +8 -1
  95. package/dist/common/commandLineOptions.js.map +1 -1
  96. package/dist/common/core.js +7 -1
  97. package/dist/common/core.js.map +1 -1
  98. package/dist/common/diagnostic.js +9 -1
  99. package/dist/common/diagnostic.js.map +1 -1
  100. package/dist/common/host.js +7 -1
  101. package/dist/common/host.js.map +1 -1
  102. package/dist/common/pathUtils.d.ts +1 -0
  103. package/dist/common/pathUtils.js +34 -1
  104. package/dist/common/pathUtils.js.map +1 -1
  105. package/dist/common/stringUtils.d.ts +1 -0
  106. package/dist/common/stringUtils.js +8 -1
  107. package/dist/common/stringUtils.js.map +1 -1
  108. package/dist/languageServerBase.d.ts +10 -3
  109. package/dist/languageServerBase.js +40 -14
  110. package/dist/languageServerBase.js.map +1 -1
  111. package/dist/languageService/analyzerServiceExecutor.js +3 -0
  112. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  113. package/dist/languageService/autoImporter.js +2 -1
  114. package/dist/languageService/autoImporter.js.map +1 -1
  115. package/dist/languageService/callHierarchyProvider.js +9 -9
  116. package/dist/languageService/completionProvider.d.ts +2 -2
  117. package/dist/languageService/completionProvider.js +22 -18
  118. package/dist/languageService/completionProvider.js.map +1 -1
  119. package/dist/languageService/definitionProvider.js +3 -3
  120. package/dist/languageService/documentSymbolCollector.js +1 -1
  121. package/dist/languageService/documentSymbolProvider.js +10 -7
  122. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  123. package/dist/languageService/hoverProvider.js +19 -5
  124. package/dist/languageService/hoverProvider.js.map +1 -1
  125. package/dist/languageService/referencesProvider.js +8 -5
  126. package/dist/languageService/referencesProvider.js.map +1 -1
  127. package/dist/languageService/tooltipUtils.js +1 -1
  128. package/dist/localization/localize.d.ts +27 -0
  129. package/dist/localization/localize.js +16 -0
  130. package/dist/localization/localize.js.map +1 -1
  131. package/dist/localization/package.nls.en-us.json +18 -2
  132. package/dist/parser/parseNodes.d.ts +44 -5
  133. package/dist/parser/parseNodes.js +191 -4
  134. package/dist/parser/parseNodes.js.map +1 -1
  135. package/dist/parser/parser.d.ts +3 -1
  136. package/dist/parser/parser.js +155 -24
  137. package/dist/parser/parser.js.map +1 -1
  138. package/dist/parser/stringTokenUtils.js +8 -1
  139. package/dist/parser/stringTokenUtils.js.map +1 -1
  140. package/dist/parser/tokenizer.js +4 -3
  141. package/dist/parser/tokenizer.js.map +1 -1
  142. package/dist/parser/tokenizerTypes.d.ts +5 -3
  143. package/dist/parser/tokenizerTypes.js +157 -1
  144. package/dist/parser/tokenizerTypes.js.map +1 -1
  145. package/dist/pyright.js +6 -1
  146. package/dist/pyright.js.map +1 -1
  147. package/dist/tests/chainedSourceFiles.test.js +12 -9
  148. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  149. package/dist/tests/checker.test.js +4 -0
  150. package/dist/tests/checker.test.js.map +1 -1
  151. package/dist/tests/config.test.js +14 -13
  152. package/dist/tests/config.test.js.map +1 -1
  153. package/dist/tests/debug.test.js +6 -0
  154. package/dist/tests/debug.test.js.map +1 -1
  155. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
  156. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
  157. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
  158. package/dist/tests/fourslash/fourslash.d.ts +16 -0
  159. package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
  160. package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
  161. package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
  162. package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
  163. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  164. package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
  165. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  166. package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
  167. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  168. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  169. package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
  170. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  171. package/dist/tests/harness/fourslash/testState.d.ts +4 -3
  172. package/dist/tests/harness/fourslash/testState.js +27 -11
  173. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  174. package/dist/tests/harness/vfs/pathValidation.js +25 -1
  175. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  176. package/dist/tests/pathUtils.test.js +17 -0
  177. package/dist/tests/pathUtils.test.js.map +1 -1
  178. package/dist/tests/testUtils.js +1 -1
  179. package/dist/tests/testUtils.js.map +1 -1
  180. package/dist/tests/typeEvaluator1.test.js +9 -1
  181. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  182. package/dist/tests/typeEvaluator2.test.js +9 -1
  183. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  184. package/dist/tests/typeEvaluator3.test.js +4 -0
  185. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  186. package/dist/tests/typeEvaluator5.test.d.ts +1 -0
  187. package/dist/tests/typeEvaluator5.test.js +112 -0
  188. package/dist/tests/typeEvaluator5.test.js.map +1 -0
  189. package/dist/workspaceMap.d.ts +2 -1
  190. package/dist/workspaceMap.js +25 -3
  191. package/dist/workspaceMap.js.map +1 -1
  192. package/package.json +45 -45
  193. package/src/analyzer/aliasDeclarationUtils.ts +0 -169
  194. package/src/analyzer/analysis.ts +0 -92
  195. package/src/analyzer/analyzerFileInfo.ts +0 -56
  196. package/src/analyzer/analyzerNodeInfo.ts +0 -198
  197. package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
  198. package/src/analyzer/binder.ts +0 -4081
  199. package/src/analyzer/checker.ts +0 -5507
  200. package/src/analyzer/circularDependency.ts +0 -52
  201. package/src/analyzer/codeFlowEngine.ts +0 -1548
  202. package/src/analyzer/codeFlowTypes.ts +0 -266
  203. package/src/analyzer/codeFlowUtils.ts +0 -436
  204. package/src/analyzer/commentUtils.ts +0 -174
  205. package/src/analyzer/constraintSolver.ts +0 -926
  206. package/src/analyzer/constructorTransform.ts +0 -317
  207. package/src/analyzer/dataClasses.ts +0 -999
  208. package/src/analyzer/declaration.ts +0 -252
  209. package/src/analyzer/declarationUtils.ts +0 -238
  210. package/src/analyzer/docStringConversion.ts +0 -850
  211. package/src/analyzer/docStringUtils.ts +0 -112
  212. package/src/analyzer/functionTransform.ts +0 -137
  213. package/src/analyzer/importResolver.ts +0 -2308
  214. package/src/analyzer/importResult.ts +0 -98
  215. package/src/analyzer/importStatementUtils.ts +0 -834
  216. package/src/analyzer/namedTuples.ts +0 -422
  217. package/src/analyzer/packageTypeReport.ts +0 -108
  218. package/src/analyzer/packageTypeVerifier.ts +0 -1466
  219. package/src/analyzer/parentDirectoryCache.ts +0 -88
  220. package/src/analyzer/parseTreeCleaner.ts +0 -35
  221. package/src/analyzer/parseTreeUtils.ts +0 -2165
  222. package/src/analyzer/parseTreeWalker.ts +0 -663
  223. package/src/analyzer/patternMatching.ts +0 -1356
  224. package/src/analyzer/program.ts +0 -2778
  225. package/src/analyzer/properties.ts +0 -534
  226. package/src/analyzer/protocols.ts +0 -660
  227. package/src/analyzer/pyTypedUtils.ts +0 -52
  228. package/src/analyzer/pythonPathUtils.ts +0 -201
  229. package/src/analyzer/scope.ts +0 -202
  230. package/src/analyzer/scopeUtils.ts +0 -81
  231. package/src/analyzer/service.ts +0 -1679
  232. package/src/analyzer/sourceFile.ts +0 -1401
  233. package/src/analyzer/sourceMapper.ts +0 -717
  234. package/src/analyzer/staticExpressions.ts +0 -308
  235. package/src/analyzer/symbol.ts +0 -249
  236. package/src/analyzer/symbolNameUtils.ts +0 -50
  237. package/src/analyzer/symbolUtils.ts +0 -49
  238. package/src/analyzer/testWalker.ts +0 -101
  239. package/src/analyzer/tracePrinter.ts +0 -264
  240. package/src/analyzer/typeCache.ts +0 -181
  241. package/src/analyzer/typeDocStringUtils.ts +0 -371
  242. package/src/analyzer/typeEvaluator.ts +0 -23395
  243. package/src/analyzer/typeEvaluatorTypes.ts +0 -452
  244. package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
  245. package/src/analyzer/typeGuards.ts +0 -1828
  246. package/src/analyzer/typePrinter.ts +0 -807
  247. package/src/analyzer/typeStubWriter.ts +0 -727
  248. package/src/analyzer/typeUtils.ts +0 -3126
  249. package/src/analyzer/typeVarContext.ts +0 -330
  250. package/src/analyzer/typedDicts.ts +0 -950
  251. package/src/analyzer/types.ts +0 -2857
  252. package/src/backgroundAnalysis.ts +0 -49
  253. package/src/backgroundAnalysisBase.ts +0 -606
  254. package/src/backgroundThreadBase.ts +0 -143
  255. package/src/commands/commandController.ts +0 -62
  256. package/src/commands/commandResult.ts +0 -21
  257. package/src/commands/commands.ts +0 -16
  258. package/src/commands/createTypeStub.ts +0 -56
  259. package/src/commands/quickActionCommand.ts +0 -40
  260. package/src/commands/restartServer.ts +0 -20
  261. package/src/common/cancellationUtils.ts +0 -71
  262. package/src/common/chokidarFileWatcherProvider.ts +0 -74
  263. package/src/common/collectionUtils.ts +0 -379
  264. package/src/common/commandLineOptions.ts +0 -132
  265. package/src/common/configOptions.ts +0 -1291
  266. package/src/common/console.ts +0 -201
  267. package/src/common/core.ts +0 -152
  268. package/src/common/crypto.ts +0 -60
  269. package/src/common/debug.ts +0 -144
  270. package/src/common/deferred.ts +0 -78
  271. package/src/common/diagnostic.ts +0 -191
  272. package/src/common/diagnosticRules.ts +0 -80
  273. package/src/common/diagnosticSink.ts +0 -150
  274. package/src/common/editAction.ts +0 -46
  275. package/src/common/extensibility.ts +0 -35
  276. package/src/common/extensions.ts +0 -21
  277. package/src/common/fileBasedCancellationUtils.ts +0 -274
  278. package/src/common/fileSystem.ts +0 -152
  279. package/src/common/fullAccessHost.ts +0 -203
  280. package/src/common/host.ts +0 -49
  281. package/src/common/logTracker.ts +0 -157
  282. package/src/common/lspUtils.ts +0 -18
  283. package/src/common/memUtils.ts +0 -36
  284. package/src/common/pathConsts.ts +0 -16
  285. package/src/common/pathUtils.ts +0 -987
  286. package/src/common/positionUtils.ts +0 -78
  287. package/src/common/progressReporter.ts +0 -53
  288. package/src/common/pythonVersion.ts +0 -74
  289. package/src/common/realFileSystem.ts +0 -433
  290. package/src/common/stringUtils.ts +0 -161
  291. package/src/common/textEditUtils.ts +0 -31
  292. package/src/common/textRange.ts +0 -225
  293. package/src/common/textRangeCollection.ts +0 -122
  294. package/src/common/timing.ts +0 -105
  295. package/src/common/uriParser.ts +0 -26
  296. package/src/common/workspaceEditUtils.ts +0 -100
  297. package/src/languageServerBase.ts +0 -1556
  298. package/src/languageService/analyzerServiceExecutor.ts +0 -144
  299. package/src/languageService/autoImporter.ts +0 -926
  300. package/src/languageService/callHierarchyProvider.ts +0 -476
  301. package/src/languageService/codeActionProvider.ts +0 -85
  302. package/src/languageService/completionProvider.ts +0 -3103
  303. package/src/languageService/definitionProvider.ts +0 -235
  304. package/src/languageService/documentHighlightProvider.ts +0 -61
  305. package/src/languageService/documentSymbolCollector.ts +0 -466
  306. package/src/languageService/documentSymbolProvider.ts +0 -466
  307. package/src/languageService/hoverProvider.ts +0 -499
  308. package/src/languageService/importAdder.ts +0 -437
  309. package/src/languageService/importSorter.ts +0 -196
  310. package/src/languageService/indentationUtils.ts +0 -813
  311. package/src/languageService/quickActions.ts +0 -113
  312. package/src/languageService/referencesProvider.ts +0 -316
  313. package/src/languageService/renameModuleProvider.ts +0 -1400
  314. package/src/languageService/signatureHelpProvider.ts +0 -227
  315. package/src/languageService/tooltipUtils.ts +0 -147
  316. package/src/localization/localize.ts +0 -1272
  317. package/src/localization/package.nls.de.json +0 -3
  318. package/src/localization/package.nls.en-us.json +0 -636
  319. package/src/localization/package.nls.es.json +0 -3
  320. package/src/localization/package.nls.fr.json +0 -3
  321. package/src/localization/package.nls.ja.json +0 -3
  322. package/src/localization/package.nls.ru.json +0 -3
  323. package/src/localization/package.nls.zh-cn.json +0 -3
  324. package/src/localization/package.nls.zh-tw.json +0 -3
  325. package/src/nodeMain.ts +0 -21
  326. package/src/nodeServer.ts +0 -30
  327. package/src/parser/characterStream.ts +0 -145
  328. package/src/parser/characters.ts +0 -285
  329. package/src/parser/parseNodes.ts +0 -2338
  330. package/src/parser/parser.ts +0 -4859
  331. package/src/parser/stringTokenUtils.ts +0 -564
  332. package/src/parser/tokenizer.ts +0 -1379
  333. package/src/parser/tokenizerTypes.ts +0 -420
  334. package/src/parser/unicode.ts +0 -2917
  335. package/src/pyright.ts +0 -824
  336. package/src/pyrightFileSystem.ts +0 -237
  337. package/src/readonlyAugmentedFileSystem.ts +0 -204
  338. package/src/server.ts +0 -298
  339. package/src/tests/chainedSourceFiles.test.ts +0 -183
  340. package/src/tests/checker.test.ts +0 -445
  341. package/src/tests/collectionUtils.test.ts +0 -178
  342. package/src/tests/common.test.ts +0 -117
  343. package/src/tests/config.test.ts +0 -291
  344. package/src/tests/debug.test.ts +0 -120
  345. package/src/tests/deferred.test.ts +0 -54
  346. package/src/tests/diagnosticOverrides.test.ts +0 -104
  347. package/src/tests/docStringConversion.test.ts +0 -823
  348. package/src/tests/docStringUtils.test.ts +0 -57
  349. package/src/tests/documentSymbolCollector.test.ts +0 -735
  350. package/src/tests/filesystem.test.ts +0 -215
  351. package/src/tests/fourSlashParser.test.ts +0 -330
  352. package/src/tests/fourSlashRunner.test.ts +0 -36
  353. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
  354. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
  355. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
  356. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
  357. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
  358. package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
  359. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
  360. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
  361. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
  362. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
  363. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
  364. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
  365. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
  366. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
  367. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
  368. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
  369. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
  370. package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
  371. package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
  372. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
  373. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
  374. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
  375. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
  376. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
  377. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
  378. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
  379. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
  380. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
  381. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
  382. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
  383. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
  384. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
  385. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
  386. package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
  387. package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
  388. package/src/tests/fourslash/completions.fourslash.ts +0 -51
  389. package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
  390. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
  391. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
  392. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
  393. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
  394. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
  395. package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
  396. package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
  397. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
  398. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
  399. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
  400. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
  401. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
  402. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
  403. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
  404. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
  405. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
  406. package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
  407. package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
  408. package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
  409. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
  410. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
  411. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
  412. package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
  413. package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
  414. package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
  415. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
  416. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
  417. package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
  418. package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
  419. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
  420. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
  421. package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
  422. package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
  423. package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
  424. package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
  425. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
  426. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
  427. package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
  428. package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
  429. package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
  430. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
  431. package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
  432. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
  433. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
  434. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
  435. package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
  436. package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
  437. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
  438. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
  439. package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
  440. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
  441. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
  442. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
  443. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
  444. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
  445. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
  446. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
  447. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
  448. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
  449. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
  450. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
  451. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
  452. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
  453. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
  454. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
  455. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
  456. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
  457. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
  458. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
  459. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
  460. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
  461. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
  462. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
  463. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
  464. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
  465. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
  466. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
  467. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
  468. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
  469. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
  470. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
  471. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
  472. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
  473. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
  474. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
  475. package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
  476. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
  477. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
  478. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
  479. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
  480. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
  481. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
  482. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
  483. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
  484. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
  485. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
  486. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
  487. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
  488. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
  489. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
  490. package/src/tests/fourslash/fourslash.ts +0 -411
  491. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
  492. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
  493. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
  494. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
  495. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
  496. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
  497. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
  498. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
  499. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
  500. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
  501. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
  502. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
  503. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
  504. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
  505. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
  506. package/src/tests/fourslash/hover.fourslash.ts +0 -20
  507. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
  508. package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
  509. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
  510. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
  511. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
  512. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
  513. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
  514. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
  515. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
  516. package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
  517. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
  518. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
  519. package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
  520. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
  521. package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
  522. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
  523. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
  524. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
  525. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
  526. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
  527. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
  528. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
  529. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
  530. package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
  531. package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
  532. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
  533. package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
  534. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
  535. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
  536. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
  537. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
  538. package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
  539. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
  540. package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
  541. package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
  542. package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
  543. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
  544. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
  545. package/src/tests/fourslash/rename.fourslash.ts +0 -29
  546. package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
  547. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
  548. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
  549. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
  550. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
  551. package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
  552. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
  553. package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
  554. package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
  555. package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
  556. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
  557. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
  558. package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
  559. package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
  560. package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
  561. package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
  562. package/src/tests/harness/fourslash/runner.ts +0 -99
  563. package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
  564. package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
  565. package/src/tests/harness/fourslash/testState.ts +0 -1993
  566. package/src/tests/harness/testAccessHost.ts +0 -23
  567. package/src/tests/harness/testHost.ts +0 -177
  568. package/src/tests/harness/utils.ts +0 -355
  569. package/src/tests/harness/vfs/factory.ts +0 -199
  570. package/src/tests/harness/vfs/filesystem.ts +0 -1893
  571. package/src/tests/harness/vfs/pathValidation.ts +0 -154
  572. package/src/tests/importAdder.test.ts +0 -1361
  573. package/src/tests/importResolver.test.ts +0 -534
  574. package/src/tests/importStatementUtils.test.ts +0 -526
  575. package/src/tests/indentationUtils.ptvs.test.ts +0 -388
  576. package/src/tests/indentationUtils.reindent.test.ts +0 -403
  577. package/src/tests/indentationUtils.test.ts +0 -455
  578. package/src/tests/ipythonMode.test.ts +0 -365
  579. package/src/tests/localizer.test.ts +0 -47
  580. package/src/tests/parseTreeUtils.test.ts +0 -281
  581. package/src/tests/parser.test.ts +0 -99
  582. package/src/tests/pathUtils.test.ts +0 -321
  583. package/src/tests/pyrightFileSystem.test.ts +0 -183
  584. package/src/tests/renameModule.folder.test.ts +0 -261
  585. package/src/tests/renameModule.fromImports.test.ts +0 -952
  586. package/src/tests/renameModule.imports.test.ts +0 -450
  587. package/src/tests/renameModule.misc.test.ts +0 -765
  588. package/src/tests/renameModule.relativePath.test.ts +0 -277
  589. package/src/tests/renameModuleTestUtils.ts +0 -210
  590. package/src/tests/samples/abstractClass1.py +0 -51
  591. package/src/tests/samples/abstractClass2.py +0 -25
  592. package/src/tests/samples/abstractClass3.py +0 -30
  593. package/src/tests/samples/abstractClass4.py +0 -30
  594. package/src/tests/samples/abstractClass5.py +0 -42
  595. package/src/tests/samples/abstractClass6.py +0 -25
  596. package/src/tests/samples/abstractClass7.py +0 -22
  597. package/src/tests/samples/abstractClass8.py +0 -27
  598. package/src/tests/samples/annotated1.py +0 -72
  599. package/src/tests/samples/annotatedVar1.py +0 -22
  600. package/src/tests/samples/annotatedVar2.py +0 -28
  601. package/src/tests/samples/annotatedVar3.py +0 -54
  602. package/src/tests/samples/annotatedVar4.py +0 -24
  603. package/src/tests/samples/annotatedVar5.py +0 -37
  604. package/src/tests/samples/annotatedVar6.py +0 -22
  605. package/src/tests/samples/annotatedVar7.py +0 -13
  606. package/src/tests/samples/annotatedVar8.py +0 -29
  607. package/src/tests/samples/annotations1.py +0 -98
  608. package/src/tests/samples/annotations2.py +0 -33
  609. package/src/tests/samples/annotations3.py +0 -43
  610. package/src/tests/samples/annotations4.py +0 -54
  611. package/src/tests/samples/annotations5.py +0 -9
  612. package/src/tests/samples/annotations6.py +0 -29
  613. package/src/tests/samples/assert1.py +0 -22
  614. package/src/tests/samples/assertType1.py +0 -46
  615. package/src/tests/samples/assignment1.py +0 -58
  616. package/src/tests/samples/assignment10.py +0 -14
  617. package/src/tests/samples/assignment2.py +0 -40
  618. package/src/tests/samples/assignment3.py +0 -46
  619. package/src/tests/samples/assignment4.py +0 -20
  620. package/src/tests/samples/assignment5.py +0 -16
  621. package/src/tests/samples/assignment6.py +0 -25
  622. package/src/tests/samples/assignment7.py +0 -13
  623. package/src/tests/samples/assignment8.py +0 -40
  624. package/src/tests/samples/assignment9.py +0 -25
  625. package/src/tests/samples/assignmentExpr1.py +0 -23
  626. package/src/tests/samples/assignmentExpr2.py +0 -49
  627. package/src/tests/samples/assignmentExpr3.py +0 -27
  628. package/src/tests/samples/assignmentExpr4.py +0 -49
  629. package/src/tests/samples/assignmentExpr5.py +0 -15
  630. package/src/tests/samples/assignmentExpr6.py +0 -10
  631. package/src/tests/samples/assignmentExpr7.py +0 -13
  632. package/src/tests/samples/assignmentExpr8.py +0 -11
  633. package/src/tests/samples/assignmentExpr9.py +0 -28
  634. package/src/tests/samples/async1.py +0 -49
  635. package/src/tests/samples/augmentedAssignment1.py +0 -62
  636. package/src/tests/samples/augmentedAssignment2.py +0 -23
  637. package/src/tests/samples/augmentedAssignment3.py +0 -8
  638. package/src/tests/samples/await1.py +0 -23
  639. package/src/tests/samples/await2.py +0 -25
  640. package/src/tests/samples/badToken1.py +0 -6
  641. package/src/tests/samples/builtins1.py +0 -2
  642. package/src/tests/samples/call1.py +0 -93
  643. package/src/tests/samples/call2.py +0 -118
  644. package/src/tests/samples/call3.py +0 -168
  645. package/src/tests/samples/call4.py +0 -13
  646. package/src/tests/samples/call5.py +0 -95
  647. package/src/tests/samples/call6.py +0 -35
  648. package/src/tests/samples/call7.py +0 -57
  649. package/src/tests/samples/callSite1.py +0 -6
  650. package/src/tests/samples/callSite2.py +0 -12
  651. package/src/tests/samples/callable1.py +0 -53
  652. package/src/tests/samples/callable2.py +0 -58
  653. package/src/tests/samples/callable3.py +0 -28
  654. package/src/tests/samples/callable4.py +0 -32
  655. package/src/tests/samples/callable5.py +0 -40
  656. package/src/tests/samples/callable6.py +0 -83
  657. package/src/tests/samples/callbackProtocol1.py +0 -119
  658. package/src/tests/samples/callbackProtocol2.py +0 -29
  659. package/src/tests/samples/callbackProtocol3.py +0 -23
  660. package/src/tests/samples/callbackProtocol4.py +0 -73
  661. package/src/tests/samples/callbackProtocol5.py +0 -66
  662. package/src/tests/samples/callbackProtocol6.py +0 -66
  663. package/src/tests/samples/callbackProtocol7.py +0 -16
  664. package/src/tests/samples/callbackProtocol8.py +0 -16
  665. package/src/tests/samples/capturedVariable1.py +0 -106
  666. package/src/tests/samples/circular1.py +0 -16
  667. package/src/tests/samples/circular2.py +0 -38
  668. package/src/tests/samples/circularBaseClass.py +0 -17
  669. package/src/tests/samples/classGetItem1.py +0 -30
  670. package/src/tests/samples/classVar1.py +0 -41
  671. package/src/tests/samples/classVar2.py +0 -29
  672. package/src/tests/samples/classVar3.py +0 -46
  673. package/src/tests/samples/classVar4.py +0 -36
  674. package/src/tests/samples/classes1.py +0 -50
  675. package/src/tests/samples/classes3.py +0 -48
  676. package/src/tests/samples/classes4.py +0 -15
  677. package/src/tests/samples/classes5.py +0 -260
  678. package/src/tests/samples/classes6.py +0 -16
  679. package/src/tests/samples/classes7.py +0 -18
  680. package/src/tests/samples/classes8.py +0 -47
  681. package/src/tests/samples/codeFlow1.py +0 -65
  682. package/src/tests/samples/codeFlow2.py +0 -26
  683. package/src/tests/samples/codeFlow3.py +0 -8
  684. package/src/tests/samples/codeFlow4.py +0 -133
  685. package/src/tests/samples/codeFlow5.py +0 -10
  686. package/src/tests/samples/codeFlow6.py +0 -35
  687. package/src/tests/samples/codeFlow7.py +0 -35
  688. package/src/tests/samples/comparison1.py +0 -77
  689. package/src/tests/samples/comparison2.py +0 -37
  690. package/src/tests/samples/complex1.py +0 -17
  691. package/src/tests/samples/constant1.py +0 -40
  692. package/src/tests/samples/constants1.py +0 -64
  693. package/src/tests/samples/constructor1.py +0 -30
  694. package/src/tests/samples/constructor10.py +0 -19
  695. package/src/tests/samples/constructor11.py +0 -32
  696. package/src/tests/samples/constructor12.py +0 -20
  697. package/src/tests/samples/constructor13.py +0 -15
  698. package/src/tests/samples/constructor2.py +0 -180
  699. package/src/tests/samples/constructor3.py +0 -18
  700. package/src/tests/samples/constructor4.py +0 -25
  701. package/src/tests/samples/constructor5.py +0 -25
  702. package/src/tests/samples/constructor6.py +0 -70
  703. package/src/tests/samples/constructor7.py +0 -11
  704. package/src/tests/samples/constructor8.py +0 -99
  705. package/src/tests/samples/constructor9.py +0 -19
  706. package/src/tests/samples/coroutines1.py +0 -60
  707. package/src/tests/samples/coroutines2.py +0 -20
  708. package/src/tests/samples/coroutines3.py +0 -37
  709. package/src/tests/samples/dataclass1.py +0 -44
  710. package/src/tests/samples/dataclass10.py +0 -45
  711. package/src/tests/samples/dataclass11.py +0 -53
  712. package/src/tests/samples/dataclass12.py +0 -32
  713. package/src/tests/samples/dataclass13.py +0 -42
  714. package/src/tests/samples/dataclass14.py +0 -38
  715. package/src/tests/samples/dataclass15.py +0 -58
  716. package/src/tests/samples/dataclass16.py +0 -21
  717. package/src/tests/samples/dataclass17.py +0 -46
  718. package/src/tests/samples/dataclass18.py +0 -57
  719. package/src/tests/samples/dataclass19.py +0 -44
  720. package/src/tests/samples/dataclass2.py +0 -30
  721. package/src/tests/samples/dataclass20.py +0 -71
  722. package/src/tests/samples/dataclass21.py +0 -13
  723. package/src/tests/samples/dataclass3.py +0 -18
  724. package/src/tests/samples/dataclass4.py +0 -64
  725. package/src/tests/samples/dataclass5.py +0 -81
  726. package/src/tests/samples/dataclass6.py +0 -29
  727. package/src/tests/samples/dataclass7.py +0 -93
  728. package/src/tests/samples/dataclass8.py +0 -22
  729. package/src/tests/samples/dataclass9.py +0 -24
  730. package/src/tests/samples/dataclassPostInit1.py +0 -61
  731. package/src/tests/samples/dataclassTransform1.py +0 -71
  732. package/src/tests/samples/dataclassTransform2.py +0 -78
  733. package/src/tests/samples/dataclassTransform3.py +0 -83
  734. package/src/tests/samples/dataclassTransform4.py +0 -87
  735. package/src/tests/samples/decorator1.py +0 -20
  736. package/src/tests/samples/decorator2.py +0 -31
  737. package/src/tests/samples/decorator3.py +0 -27
  738. package/src/tests/samples/decorator4.py +0 -37
  739. package/src/tests/samples/decorator5.py +0 -29
  740. package/src/tests/samples/decorator6.py +0 -34
  741. package/src/tests/samples/defaultInitializer1.py +0 -26
  742. package/src/tests/samples/deprecated1.py +0 -37
  743. package/src/tests/samples/descriptor1.py +0 -134
  744. package/src/tests/samples/descriptor2.py +0 -29
  745. package/src/tests/samples/dictionary1.py +0 -42
  746. package/src/tests/samples/dictionary2.py +0 -14
  747. package/src/tests/samples/dictionary3.py +0 -30
  748. package/src/tests/samples/dictionary4.py +0 -106
  749. package/src/tests/samples/dunderAll1.py +0 -32
  750. package/src/tests/samples/dunderAll2.py +0 -16
  751. package/src/tests/samples/dunderAll3.pyi +0 -16
  752. package/src/tests/samples/duplicateDeclaration1.py +0 -115
  753. package/src/tests/samples/duplicateDeclaration2.py +0 -45
  754. package/src/tests/samples/duplicateImports1.py +0 -13
  755. package/src/tests/samples/ellipsis1.pyi +0 -48
  756. package/src/tests/samples/emptyContainers1.py +0 -89
  757. package/src/tests/samples/enums1.py +0 -52
  758. package/src/tests/samples/enums2.py +0 -15
  759. package/src/tests/samples/enums3.py +0 -24
  760. package/src/tests/samples/enums4.py +0 -23
  761. package/src/tests/samples/enums5.py +0 -16
  762. package/src/tests/samples/enums6.py +0 -33
  763. package/src/tests/samples/enums7.py +0 -54
  764. package/src/tests/samples/enums8.py +0 -14
  765. package/src/tests/samples/expressions1.py +0 -54
  766. package/src/tests/samples/expressions2.py +0 -29
  767. package/src/tests/samples/expressions3.py +0 -26
  768. package/src/tests/samples/expressions4.py +0 -23
  769. package/src/tests/samples/expressions5.py +0 -70
  770. package/src/tests/samples/expressions6.py +0 -14
  771. package/src/tests/samples/expressions7.py +0 -40
  772. package/src/tests/samples/expressions8.py +0 -26
  773. package/src/tests/samples/expressions9.py +0 -14
  774. package/src/tests/samples/final1.py +0 -14
  775. package/src/tests/samples/final2.py +0 -86
  776. package/src/tests/samples/final3.py +0 -179
  777. package/src/tests/samples/final4.pyi +0 -21
  778. package/src/tests/samples/final5.py +0 -18
  779. package/src/tests/samples/forLoop1.py +0 -88
  780. package/src/tests/samples/forLoop2.py +0 -48
  781. package/src/tests/samples/fstring1.py +0 -66
  782. package/src/tests/samples/fstring2.py +0 -12
  783. package/src/tests/samples/fstring3.py +0 -35
  784. package/src/tests/samples/fstring4.py +0 -17
  785. package/src/tests/samples/fstring5.py +0 -17
  786. package/src/tests/samples/fstring6.py +0 -14
  787. package/src/tests/samples/function1.py +0 -12
  788. package/src/tests/samples/function10.py +0 -20
  789. package/src/tests/samples/function11.py +0 -36
  790. package/src/tests/samples/function2.py +0 -7
  791. package/src/tests/samples/function3.py +0 -82
  792. package/src/tests/samples/function4.py +0 -13
  793. package/src/tests/samples/function6.py +0 -24
  794. package/src/tests/samples/function7.py +0 -13
  795. package/src/tests/samples/function8.py +0 -38
  796. package/src/tests/samples/function9.py +0 -75
  797. package/src/tests/samples/functionAnnotation1.py +0 -61
  798. package/src/tests/samples/functionAnnotation2.py +0 -26
  799. package/src/tests/samples/functionAnnotation3.py +0 -37
  800. package/src/tests/samples/functionAnnotation4.py +0 -22
  801. package/src/tests/samples/functionMember1.py +0 -18
  802. package/src/tests/samples/functionMember2.py +0 -45
  803. package/src/tests/samples/generators1.py +0 -122
  804. package/src/tests/samples/generators10.py +0 -18
  805. package/src/tests/samples/generators11.py +0 -27
  806. package/src/tests/samples/generators12.py +0 -25
  807. package/src/tests/samples/generators13.py +0 -65
  808. package/src/tests/samples/generators14.py +0 -19
  809. package/src/tests/samples/generators15.py +0 -26
  810. package/src/tests/samples/generators2.py +0 -31
  811. package/src/tests/samples/generators3.py +0 -42
  812. package/src/tests/samples/generators4.py +0 -33
  813. package/src/tests/samples/generators5.py +0 -24
  814. package/src/tests/samples/generators6.py +0 -14
  815. package/src/tests/samples/generators7.py +0 -18
  816. package/src/tests/samples/generators8.py +0 -12
  817. package/src/tests/samples/generators9.py +0 -19
  818. package/src/tests/samples/generic1.py +0 -41
  819. package/src/tests/samples/genericTypes1.py +0 -12
  820. package/src/tests/samples/genericTypes10.py +0 -38
  821. package/src/tests/samples/genericTypes11.py +0 -26
  822. package/src/tests/samples/genericTypes12.py +0 -14
  823. package/src/tests/samples/genericTypes13.py +0 -27
  824. package/src/tests/samples/genericTypes14.py +0 -22
  825. package/src/tests/samples/genericTypes15.py +0 -13
  826. package/src/tests/samples/genericTypes16.py +0 -15
  827. package/src/tests/samples/genericTypes17.py +0 -24
  828. package/src/tests/samples/genericTypes18.py +0 -135
  829. package/src/tests/samples/genericTypes19.py +0 -32
  830. package/src/tests/samples/genericTypes2.py +0 -40
  831. package/src/tests/samples/genericTypes20.py +0 -44
  832. package/src/tests/samples/genericTypes21.py +0 -29
  833. package/src/tests/samples/genericTypes22.py +0 -23
  834. package/src/tests/samples/genericTypes23.py +0 -27
  835. package/src/tests/samples/genericTypes24.py +0 -32
  836. package/src/tests/samples/genericTypes25.py +0 -37
  837. package/src/tests/samples/genericTypes26.py +0 -31
  838. package/src/tests/samples/genericTypes27.py +0 -14
  839. package/src/tests/samples/genericTypes28.py +0 -51
  840. package/src/tests/samples/genericTypes29.py +0 -24
  841. package/src/tests/samples/genericTypes3.py +0 -13
  842. package/src/tests/samples/genericTypes30.py +0 -32
  843. package/src/tests/samples/genericTypes31.py +0 -30
  844. package/src/tests/samples/genericTypes32.py +0 -25
  845. package/src/tests/samples/genericTypes33.py +0 -46
  846. package/src/tests/samples/genericTypes34.py +0 -54
  847. package/src/tests/samples/genericTypes35.py +0 -45
  848. package/src/tests/samples/genericTypes36.py +0 -35
  849. package/src/tests/samples/genericTypes37.py +0 -26
  850. package/src/tests/samples/genericTypes38.py +0 -15
  851. package/src/tests/samples/genericTypes39.py +0 -82
  852. package/src/tests/samples/genericTypes4.py +0 -37
  853. package/src/tests/samples/genericTypes40.py +0 -38
  854. package/src/tests/samples/genericTypes41.py +0 -16
  855. package/src/tests/samples/genericTypes42.py +0 -32
  856. package/src/tests/samples/genericTypes43.py +0 -24
  857. package/src/tests/samples/genericTypes44.py +0 -33
  858. package/src/tests/samples/genericTypes45.py +0 -43
  859. package/src/tests/samples/genericTypes46.py +0 -66
  860. package/src/tests/samples/genericTypes47.py +0 -39
  861. package/src/tests/samples/genericTypes48.py +0 -18
  862. package/src/tests/samples/genericTypes49.py +0 -41
  863. package/src/tests/samples/genericTypes5.py +0 -42
  864. package/src/tests/samples/genericTypes50.py +0 -62
  865. package/src/tests/samples/genericTypes51.py +0 -55
  866. package/src/tests/samples/genericTypes52.py +0 -34
  867. package/src/tests/samples/genericTypes53.py +0 -42
  868. package/src/tests/samples/genericTypes54.py +0 -31
  869. package/src/tests/samples/genericTypes55.py +0 -61
  870. package/src/tests/samples/genericTypes56.py +0 -19
  871. package/src/tests/samples/genericTypes57.py +0 -30
  872. package/src/tests/samples/genericTypes58.py +0 -52
  873. package/src/tests/samples/genericTypes59.py +0 -71
  874. package/src/tests/samples/genericTypes6.py +0 -49
  875. package/src/tests/samples/genericTypes60.py +0 -27
  876. package/src/tests/samples/genericTypes61.py +0 -34
  877. package/src/tests/samples/genericTypes62.py +0 -26
  878. package/src/tests/samples/genericTypes63.py +0 -32
  879. package/src/tests/samples/genericTypes64.py +0 -16
  880. package/src/tests/samples/genericTypes65.py +0 -15
  881. package/src/tests/samples/genericTypes66.py +0 -30
  882. package/src/tests/samples/genericTypes67.py +0 -57
  883. package/src/tests/samples/genericTypes68.py +0 -14
  884. package/src/tests/samples/genericTypes69.py +0 -45
  885. package/src/tests/samples/genericTypes7.py +0 -24
  886. package/src/tests/samples/genericTypes70.py +0 -31
  887. package/src/tests/samples/genericTypes71.py +0 -72
  888. package/src/tests/samples/genericTypes72.py +0 -24
  889. package/src/tests/samples/genericTypes73.py +0 -14
  890. package/src/tests/samples/genericTypes74.py +0 -23
  891. package/src/tests/samples/genericTypes75.py +0 -45
  892. package/src/tests/samples/genericTypes76.py +0 -107
  893. package/src/tests/samples/genericTypes77.py +0 -26
  894. package/src/tests/samples/genericTypes78.py +0 -23
  895. package/src/tests/samples/genericTypes79.py +0 -37
  896. package/src/tests/samples/genericTypes8.py +0 -26
  897. package/src/tests/samples/genericTypes80.py +0 -10
  898. package/src/tests/samples/genericTypes81.py +0 -32
  899. package/src/tests/samples/genericTypes82.py +0 -19
  900. package/src/tests/samples/genericTypes83.py +0 -28
  901. package/src/tests/samples/genericTypes84.py +0 -11
  902. package/src/tests/samples/genericTypes85.py +0 -20
  903. package/src/tests/samples/genericTypes86.py +0 -15
  904. package/src/tests/samples/genericTypes87.py +0 -21
  905. package/src/tests/samples/genericTypes88.py +0 -25
  906. package/src/tests/samples/genericTypes89.py +0 -17
  907. package/src/tests/samples/genericTypes9.py +0 -109
  908. package/src/tests/samples/genericTypes90.py +0 -12
  909. package/src/tests/samples/genericTypes91.py +0 -20
  910. package/src/tests/samples/import1.py +0 -7
  911. package/src/tests/samples/import10.py +0 -11
  912. package/src/tests/samples/import11.py +0 -11
  913. package/src/tests/samples/import12.py +0 -5
  914. package/src/tests/samples/import13.py +0 -6
  915. package/src/tests/samples/import14.py +0 -10
  916. package/src/tests/samples/import2.py +0 -27
  917. package/src/tests/samples/import3.py +0 -8
  918. package/src/tests/samples/import4.py +0 -15
  919. package/src/tests/samples/import5.py +0 -6
  920. package/src/tests/samples/import6.py +0 -17
  921. package/src/tests/samples/import7.py +0 -14
  922. package/src/tests/samples/import8.py +0 -7
  923. package/src/tests/samples/import9.py +0 -7
  924. package/src/tests/samples/inconsistentConstructor1.py +0 -23
  925. package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
  926. package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
  927. package/src/tests/samples/index1.py +0 -97
  928. package/src/tests/samples/inferredTypes1.py +0 -25
  929. package/src/tests/samples/initVar1.py +0 -23
  930. package/src/tests/samples/initsubclass1.py +0 -46
  931. package/src/tests/samples/initsubclass2.py +0 -16
  932. package/src/tests/samples/isinstance1.py +0 -57
  933. package/src/tests/samples/isinstance10.py +0 -15
  934. package/src/tests/samples/isinstance2.py +0 -28
  935. package/src/tests/samples/isinstance3.py +0 -59
  936. package/src/tests/samples/isinstance4.py +0 -57
  937. package/src/tests/samples/isinstance5.py +0 -8
  938. package/src/tests/samples/isinstance6.py +0 -19
  939. package/src/tests/samples/isinstance7.py +0 -42
  940. package/src/tests/samples/isinstance9.py +0 -26
  941. package/src/tests/samples/kwargsUnpack1.py +0 -116
  942. package/src/tests/samples/lambda1.py +0 -77
  943. package/src/tests/samples/lambda2.py +0 -26
  944. package/src/tests/samples/lambda3.py +0 -34
  945. package/src/tests/samples/lambda4.py +0 -70
  946. package/src/tests/samples/lambda5.py +0 -23
  947. package/src/tests/samples/lambda6.py +0 -15
  948. package/src/tests/samples/lines1.py +0 -14
  949. package/src/tests/samples/list1.py +0 -90
  950. package/src/tests/samples/listComprehension1.py +0 -45
  951. package/src/tests/samples/listComprehension2.py +0 -17
  952. package/src/tests/samples/listComprehension3.py +0 -12
  953. package/src/tests/samples/listComprehension4.py +0 -15
  954. package/src/tests/samples/listComprehension5.py +0 -20
  955. package/src/tests/samples/listComprehension6.py +0 -14
  956. package/src/tests/samples/listComprehension7.py +0 -15
  957. package/src/tests/samples/listComprehension8.py +0 -15
  958. package/src/tests/samples/literalString1.py +0 -43
  959. package/src/tests/samples/literals1.py +0 -48
  960. package/src/tests/samples/literals2.py +0 -30
  961. package/src/tests/samples/literals3.py +0 -40
  962. package/src/tests/samples/literals4.py +0 -10
  963. package/src/tests/samples/literals5.py +0 -28
  964. package/src/tests/samples/literals6.py +0 -90
  965. package/src/tests/samples/literals7.py +0 -38
  966. package/src/tests/samples/loops1.py +0 -45
  967. package/src/tests/samples/loops10.py +0 -11
  968. package/src/tests/samples/loops11.py +0 -22
  969. package/src/tests/samples/loops12.py +0 -18
  970. package/src/tests/samples/loops13.py +0 -13
  971. package/src/tests/samples/loops14.py +0 -22
  972. package/src/tests/samples/loops15.py +0 -22
  973. package/src/tests/samples/loops16.py +0 -322
  974. package/src/tests/samples/loops17.py +0 -9
  975. package/src/tests/samples/loops18.py +0 -23
  976. package/src/tests/samples/loops19.py +0 -14
  977. package/src/tests/samples/loops2.py +0 -25
  978. package/src/tests/samples/loops20.py +0 -41
  979. package/src/tests/samples/loops21.py +0 -18
  980. package/src/tests/samples/loops22.py +0 -21
  981. package/src/tests/samples/loops23.py +0 -16
  982. package/src/tests/samples/loops24.py +0 -12
  983. package/src/tests/samples/loops25.py +0 -45
  984. package/src/tests/samples/loops26.py +0 -12
  985. package/src/tests/samples/loops3.py +0 -11
  986. package/src/tests/samples/loops4.py +0 -17
  987. package/src/tests/samples/loops5.py +0 -14
  988. package/src/tests/samples/loops6.py +0 -25
  989. package/src/tests/samples/loops7.py +0 -14
  990. package/src/tests/samples/loops8.py +0 -17
  991. package/src/tests/samples/loops9.py +0 -25
  992. package/src/tests/samples/match1.py +0 -190
  993. package/src/tests/samples/match10.py +0 -67
  994. package/src/tests/samples/match2.py +0 -340
  995. package/src/tests/samples/match3.py +0 -364
  996. package/src/tests/samples/match4.py +0 -100
  997. package/src/tests/samples/match5.py +0 -70
  998. package/src/tests/samples/match6.py +0 -64
  999. package/src/tests/samples/match7.py +0 -65
  1000. package/src/tests/samples/match8.py +0 -19
  1001. package/src/tests/samples/match9.py +0 -53
  1002. package/src/tests/samples/maxParseDepth1.py +0 -499
  1003. package/src/tests/samples/maxParseDepth2.py +0 -16
  1004. package/src/tests/samples/memberAccess1.py +0 -70
  1005. package/src/tests/samples/memberAccess10.py +0 -65
  1006. package/src/tests/samples/memberAccess11.py +0 -37
  1007. package/src/tests/samples/memberAccess12.py +0 -36
  1008. package/src/tests/samples/memberAccess13.py +0 -17
  1009. package/src/tests/samples/memberAccess14.py +0 -63
  1010. package/src/tests/samples/memberAccess15.py +0 -20
  1011. package/src/tests/samples/memberAccess16.py +0 -12
  1012. package/src/tests/samples/memberAccess17.py +0 -31
  1013. package/src/tests/samples/memberAccess18.py +0 -31
  1014. package/src/tests/samples/memberAccess2.py +0 -45
  1015. package/src/tests/samples/memberAccess3.py +0 -64
  1016. package/src/tests/samples/memberAccess4.py +0 -91
  1017. package/src/tests/samples/memberAccess5.py +0 -26
  1018. package/src/tests/samples/memberAccess6.py +0 -52
  1019. package/src/tests/samples/memberAccess7.py +0 -36
  1020. package/src/tests/samples/memberAccess8.py +0 -75
  1021. package/src/tests/samples/memberAccess9.py +0 -11
  1022. package/src/tests/samples/metaclass1.py +0 -7
  1023. package/src/tests/samples/metaclass2.py +0 -35
  1024. package/src/tests/samples/metaclass3.py +0 -43
  1025. package/src/tests/samples/metaclass4.py +0 -26
  1026. package/src/tests/samples/metaclass5.py +0 -33
  1027. package/src/tests/samples/metaclass6.py +0 -15
  1028. package/src/tests/samples/metaclass7.py +0 -38
  1029. package/src/tests/samples/metaclass8.py +0 -20
  1030. package/src/tests/samples/metaclass9.py +0 -77
  1031. package/src/tests/samples/methodOverride1.py +0 -507
  1032. package/src/tests/samples/methodOverride2.py +0 -74
  1033. package/src/tests/samples/methodOverride3.py +0 -111
  1034. package/src/tests/samples/methodOverride4.py +0 -36
  1035. package/src/tests/samples/missingSuper1.py +0 -73
  1036. package/src/tests/samples/module1.py +0 -13
  1037. package/src/tests/samples/module2.py +0 -7
  1038. package/src/tests/samples/mro1.py +0 -16
  1039. package/src/tests/samples/mro2.py +0 -45
  1040. package/src/tests/samples/mro3.py +0 -30
  1041. package/src/tests/samples/mro4.py +0 -30
  1042. package/src/tests/samples/nameBindings1.py +0 -48
  1043. package/src/tests/samples/nameBindings2.py +0 -9
  1044. package/src/tests/samples/nameBindings3.py +0 -36
  1045. package/src/tests/samples/nameBindings4.py +0 -10
  1046. package/src/tests/samples/nameBindings5.py +0 -53
  1047. package/src/tests/samples/namedTuples1.py +0 -103
  1048. package/src/tests/samples/namedTuples2.py +0 -56
  1049. package/src/tests/samples/namedTuples3.py +0 -15
  1050. package/src/tests/samples/namedTuples4.py +0 -24
  1051. package/src/tests/samples/namedTuples5.py +0 -15
  1052. package/src/tests/samples/namedTuples6.py +0 -31
  1053. package/src/tests/samples/namedTuples7.py +0 -27
  1054. package/src/tests/samples/never1.py +0 -12
  1055. package/src/tests/samples/never2.py +0 -43
  1056. package/src/tests/samples/newType1.py +0 -34
  1057. package/src/tests/samples/newType2.py +0 -25
  1058. package/src/tests/samples/newType3.py +0 -34
  1059. package/src/tests/samples/newType4.py +0 -8
  1060. package/src/tests/samples/none1.py +0 -29
  1061. package/src/tests/samples/none2.py +0 -22
  1062. package/src/tests/samples/noreturn1.py +0 -78
  1063. package/src/tests/samples/noreturn2.py +0 -37
  1064. package/src/tests/samples/noreturn3.py +0 -16
  1065. package/src/tests/samples/noreturn4.py +0 -29
  1066. package/src/tests/samples/operators1.py +0 -101
  1067. package/src/tests/samples/operators2.py +0 -30
  1068. package/src/tests/samples/operators3.py +0 -8
  1069. package/src/tests/samples/operators4.py +0 -22
  1070. package/src/tests/samples/operators5.py +0 -5
  1071. package/src/tests/samples/operators6.py +0 -10
  1072. package/src/tests/samples/operators7.py +0 -24
  1073. package/src/tests/samples/operators8.py +0 -125
  1074. package/src/tests/samples/optional1.py +0 -77
  1075. package/src/tests/samples/optional2.py +0 -23
  1076. package/src/tests/samples/overload1.py +0 -50
  1077. package/src/tests/samples/overload10.py +0 -48
  1078. package/src/tests/samples/overload2.py +0 -37
  1079. package/src/tests/samples/overload3.py +0 -29
  1080. package/src/tests/samples/overload4.py +0 -46
  1081. package/src/tests/samples/overload5.py +0 -333
  1082. package/src/tests/samples/overload6.py +0 -64
  1083. package/src/tests/samples/overload7.py +0 -376
  1084. package/src/tests/samples/overload8.py +0 -89
  1085. package/src/tests/samples/overload9.py +0 -19
  1086. package/src/tests/samples/package1/__init__.py +0 -3
  1087. package/src/tests/samples/package1/psyche/pysche.py +0 -4
  1088. package/src/tests/samples/package1/psyche.py +0 -4
  1089. package/src/tests/samples/package1/sub/__init__.py +0 -5
  1090. package/src/tests/samples/package1/sub.py +0 -4
  1091. package/src/tests/samples/package1/sub.pyi +0 -2
  1092. package/src/tests/samples/paramInference1.py +0 -27
  1093. package/src/tests/samples/paramNames1.py +0 -39
  1094. package/src/tests/samples/paramSpec1.py +0 -64
  1095. package/src/tests/samples/paramSpec10.py +0 -57
  1096. package/src/tests/samples/paramSpec11.py +0 -36
  1097. package/src/tests/samples/paramSpec12.py +0 -88
  1098. package/src/tests/samples/paramSpec13.py +0 -112
  1099. package/src/tests/samples/paramSpec14.py +0 -30
  1100. package/src/tests/samples/paramSpec15.py +0 -28
  1101. package/src/tests/samples/paramSpec16.py +0 -28
  1102. package/src/tests/samples/paramSpec17.py +0 -34
  1103. package/src/tests/samples/paramSpec18.py +0 -43
  1104. package/src/tests/samples/paramSpec19.py +0 -93
  1105. package/src/tests/samples/paramSpec2.py +0 -29
  1106. package/src/tests/samples/paramSpec20.py +0 -87
  1107. package/src/tests/samples/paramSpec21.py +0 -58
  1108. package/src/tests/samples/paramSpec22.py +0 -26
  1109. package/src/tests/samples/paramSpec23.py +0 -21
  1110. package/src/tests/samples/paramSpec24.py +0 -67
  1111. package/src/tests/samples/paramSpec25.py +0 -36
  1112. package/src/tests/samples/paramSpec26.py +0 -25
  1113. package/src/tests/samples/paramSpec27.py +0 -57
  1114. package/src/tests/samples/paramSpec28.py +0 -39
  1115. package/src/tests/samples/paramSpec29.py +0 -37
  1116. package/src/tests/samples/paramSpec3.py +0 -71
  1117. package/src/tests/samples/paramSpec30.py +0 -49
  1118. package/src/tests/samples/paramSpec31.py +0 -16
  1119. package/src/tests/samples/paramSpec32.py +0 -57
  1120. package/src/tests/samples/paramSpec33.py +0 -29
  1121. package/src/tests/samples/paramSpec34.py +0 -29
  1122. package/src/tests/samples/paramSpec35.py +0 -24
  1123. package/src/tests/samples/paramSpec36.py +0 -43
  1124. package/src/tests/samples/paramSpec37.py +0 -25
  1125. package/src/tests/samples/paramSpec4.py +0 -109
  1126. package/src/tests/samples/paramSpec5.py +0 -29
  1127. package/src/tests/samples/paramSpec6.py +0 -17
  1128. package/src/tests/samples/paramSpec7.py +0 -22
  1129. package/src/tests/samples/paramSpec8.py +0 -45
  1130. package/src/tests/samples/paramSpec9.py +0 -57
  1131. package/src/tests/samples/paramType1.py +0 -71
  1132. package/src/tests/samples/parameters1.py +0 -16
  1133. package/src/tests/samples/partial1.py +0 -163
  1134. package/src/tests/samples/partial2.py +0 -31
  1135. package/src/tests/samples/private1.py +0 -55
  1136. package/src/tests/samples/private2.py +0 -11
  1137. package/src/tests/samples/project1/pyrightconfig.json +0 -5
  1138. package/src/tests/samples/project1/sample1.py +0 -0
  1139. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  1140. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  1141. package/src/tests/samples/project2/pyrightconfig.json +0 -3
  1142. package/src/tests/samples/project3/pyrightconfig.json +0 -7
  1143. package/src/tests/samples/project4/presentfile.py +0 -0
  1144. package/src/tests/samples/project4/pyrightconfig.json +0 -11
  1145. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  1146. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  1147. package/src/tests/samples/project5/pyrightconfig.json +0 -4
  1148. package/src/tests/samples/project6/app1.py +0 -0
  1149. package/src/tests/samples/project6/app2.py +0 -0
  1150. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  1151. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  1152. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  1153. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  1154. package/src/tests/samples/project_src/src/module1.py +0 -0
  1155. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  1156. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  1157. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
  1158. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  1159. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
  1160. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  1161. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
  1162. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
  1163. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
  1164. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  1165. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  1166. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
  1167. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  1168. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  1169. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  1170. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  1171. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  1172. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  1173. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
  1174. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  1175. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  1176. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  1177. package/src/tests/samples/properties1.py +0 -64
  1178. package/src/tests/samples/properties10.py +0 -19
  1179. package/src/tests/samples/properties11.py +0 -45
  1180. package/src/tests/samples/properties12.py +0 -23
  1181. package/src/tests/samples/properties13.py +0 -15
  1182. package/src/tests/samples/properties2.py +0 -34
  1183. package/src/tests/samples/properties3.py +0 -93
  1184. package/src/tests/samples/properties4.py +0 -17
  1185. package/src/tests/samples/properties5.py +0 -29
  1186. package/src/tests/samples/properties6.py +0 -35
  1187. package/src/tests/samples/properties7.py +0 -30
  1188. package/src/tests/samples/properties8.py +0 -26
  1189. package/src/tests/samples/properties9.py +0 -24
  1190. package/src/tests/samples/protocol1.py +0 -132
  1191. package/src/tests/samples/protocol10.py +0 -36
  1192. package/src/tests/samples/protocol11.py +0 -32
  1193. package/src/tests/samples/protocol12.py +0 -12
  1194. package/src/tests/samples/protocol13.py +0 -26
  1195. package/src/tests/samples/protocol14.py +0 -27
  1196. package/src/tests/samples/protocol15.py +0 -27
  1197. package/src/tests/samples/protocol16.py +0 -22
  1198. package/src/tests/samples/protocol17.py +0 -94
  1199. package/src/tests/samples/protocol18.py +0 -27
  1200. package/src/tests/samples/protocol19.py +0 -39
  1201. package/src/tests/samples/protocol2.py +0 -38
  1202. package/src/tests/samples/protocol20.py +0 -22
  1203. package/src/tests/samples/protocol21.py +0 -26
  1204. package/src/tests/samples/protocol22.py +0 -43
  1205. package/src/tests/samples/protocol23.py +0 -41
  1206. package/src/tests/samples/protocol24.py +0 -74
  1207. package/src/tests/samples/protocol25.py +0 -31
  1208. package/src/tests/samples/protocol26.py +0 -40
  1209. package/src/tests/samples/protocol27.py +0 -76
  1210. package/src/tests/samples/protocol28.py +0 -32
  1211. package/src/tests/samples/protocol29.py +0 -26
  1212. package/src/tests/samples/protocol3.py +0 -110
  1213. package/src/tests/samples/protocol30.py +0 -30
  1214. package/src/tests/samples/protocol31.py +0 -22
  1215. package/src/tests/samples/protocol32.py +0 -67
  1216. package/src/tests/samples/protocol33.py +0 -39
  1217. package/src/tests/samples/protocol34.py +0 -21
  1218. package/src/tests/samples/protocol4.py +0 -22
  1219. package/src/tests/samples/protocol5.py +0 -25
  1220. package/src/tests/samples/protocol6.py +0 -65
  1221. package/src/tests/samples/protocol7.py +0 -24
  1222. package/src/tests/samples/protocol8.py +0 -34
  1223. package/src/tests/samples/protocol9.py +0 -35
  1224. package/src/tests/samples/protocolModule1.py +0 -15
  1225. package/src/tests/samples/protocolModule2.py +0 -83
  1226. package/src/tests/samples/protocolModule3.py +0 -14
  1227. package/src/tests/samples/protocolModule4.py +0 -26
  1228. package/src/tests/samples/pseudoGeneric1.py +0 -20
  1229. package/src/tests/samples/pyrightIgnore1.py +0 -11
  1230. package/src/tests/samples/pyrightIgnore2.py +0 -24
  1231. package/src/tests/samples/python2.py +0 -31
  1232. package/src/tests/samples/recursiveTypeAlias1.py +0 -79
  1233. package/src/tests/samples/recursiveTypeAlias2.py +0 -32
  1234. package/src/tests/samples/recursiveTypeAlias3.py +0 -26
  1235. package/src/tests/samples/recursiveTypeAlias4.py +0 -55
  1236. package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
  1237. package/src/tests/samples/recursiveTypeAlias6.py +0 -25
  1238. package/src/tests/samples/recursiveTypeAlias7.py +0 -15
  1239. package/src/tests/samples/recursiveTypeAlias8.py +0 -38
  1240. package/src/tests/samples/recursiveTypeAlias9.py +0 -22
  1241. package/src/tests/samples/required1.py +0 -47
  1242. package/src/tests/samples/required2.py +0 -56
  1243. package/src/tests/samples/required3.py +0 -22
  1244. package/src/tests/samples/returnTypes1.py +0 -26
  1245. package/src/tests/samples/revealedType1.py +0 -30
  1246. package/src/tests/samples/sample1.py +0 -6
  1247. package/src/tests/samples/self1.py +0 -93
  1248. package/src/tests/samples/self2.py +0 -195
  1249. package/src/tests/samples/self3.py +0 -9
  1250. package/src/tests/samples/self4.py +0 -18
  1251. package/src/tests/samples/self5.py +0 -26
  1252. package/src/tests/samples/setComprehension1.py +0 -34
  1253. package/src/tests/samples/slots1.py +0 -63
  1254. package/src/tests/samples/slots2.py +0 -38
  1255. package/src/tests/samples/slots3.py +0 -35
  1256. package/src/tests/samples/specialization1.py +0 -78
  1257. package/src/tests/samples/specialization2.py +0 -51
  1258. package/src/tests/samples/staticExpressions1.py +0 -52
  1259. package/src/tests/samples/strings1.py +0 -22
  1260. package/src/tests/samples/subscript1.py +0 -74
  1261. package/src/tests/samples/subscript2.py +0 -55
  1262. package/src/tests/samples/subscript3.py +0 -135
  1263. package/src/tests/samples/suiteExpectedColon1.py +0 -4
  1264. package/src/tests/samples/suiteExpectedColon2.py +0 -2
  1265. package/src/tests/samples/suiteExpectedColon3.py +0 -2
  1266. package/src/tests/samples/super1.py +0 -57
  1267. package/src/tests/samples/super2.py +0 -29
  1268. package/src/tests/samples/super3.py +0 -10
  1269. package/src/tests/samples/super4.py +0 -24
  1270. package/src/tests/samples/super5.py +0 -28
  1271. package/src/tests/samples/super6.py +0 -17
  1272. package/src/tests/samples/super7.py +0 -52
  1273. package/src/tests/samples/super8.py +0 -7
  1274. package/src/tests/samples/super9.py +0 -36
  1275. package/src/tests/samples/test_file1.py +0 -0
  1276. package/src/tests/samples/threePartVersion1.py +0 -33
  1277. package/src/tests/samples/totalOrdering1.py +0 -52
  1278. package/src/tests/samples/tryExcept1.py +0 -39
  1279. package/src/tests/samples/tryExcept10.py +0 -12
  1280. package/src/tests/samples/tryExcept2.py +0 -16
  1281. package/src/tests/samples/tryExcept3.py +0 -12
  1282. package/src/tests/samples/tryExcept4.py +0 -28
  1283. package/src/tests/samples/tryExcept5.py +0 -30
  1284. package/src/tests/samples/tryExcept6.py +0 -27
  1285. package/src/tests/samples/tryExcept7.py +0 -17
  1286. package/src/tests/samples/tryExcept8.py +0 -69
  1287. package/src/tests/samples/tryExcept9.py +0 -42
  1288. package/src/tests/samples/tupleUnpack1.py +0 -63
  1289. package/src/tests/samples/tupleUnpack2.py +0 -56
  1290. package/src/tests/samples/tupleUnpack3.py +0 -28
  1291. package/src/tests/samples/tuples1.py +0 -185
  1292. package/src/tests/samples/tuples10.py +0 -30
  1293. package/src/tests/samples/tuples11.py +0 -21
  1294. package/src/tests/samples/tuples12.py +0 -31
  1295. package/src/tests/samples/tuples13.py +0 -26
  1296. package/src/tests/samples/tuples15.py +0 -16
  1297. package/src/tests/samples/tuples16.py +0 -14
  1298. package/src/tests/samples/tuples2.py +0 -23
  1299. package/src/tests/samples/tuples3.py +0 -15
  1300. package/src/tests/samples/tuples4.py +0 -21
  1301. package/src/tests/samples/tuples5.py +0 -16
  1302. package/src/tests/samples/tuples6.py +0 -56
  1303. package/src/tests/samples/tuples7.py +0 -61
  1304. package/src/tests/samples/tuples8.py +0 -98
  1305. package/src/tests/samples/tuples9.py +0 -17
  1306. package/src/tests/samples/typeAlias1.py +0 -37
  1307. package/src/tests/samples/typeAlias10.py +0 -45
  1308. package/src/tests/samples/typeAlias11.py +0 -37
  1309. package/src/tests/samples/typeAlias12.py +0 -20
  1310. package/src/tests/samples/typeAlias13.py +0 -53
  1311. package/src/tests/samples/typeAlias14.py +0 -29
  1312. package/src/tests/samples/typeAlias15.py +0 -24
  1313. package/src/tests/samples/typeAlias16.py +0 -24
  1314. package/src/tests/samples/typeAlias2.py +0 -26
  1315. package/src/tests/samples/typeAlias3.py +0 -35
  1316. package/src/tests/samples/typeAlias4.py +0 -68
  1317. package/src/tests/samples/typeAlias5.py +0 -56
  1318. package/src/tests/samples/typeAlias6.py +0 -51
  1319. package/src/tests/samples/typeAlias7.py +0 -50
  1320. package/src/tests/samples/typeAlias8.py +0 -24
  1321. package/src/tests/samples/typeAlias9.py +0 -35
  1322. package/src/tests/samples/typeGuard1.py +0 -68
  1323. package/src/tests/samples/typeGuard2.py +0 -58
  1324. package/src/tests/samples/typeGuard3.py +0 -98
  1325. package/src/tests/samples/typeIgnore1.py +0 -10
  1326. package/src/tests/samples/typeIgnore2.py +0 -20
  1327. package/src/tests/samples/typeIgnore3.py +0 -22
  1328. package/src/tests/samples/typeIgnore4.py +0 -10
  1329. package/src/tests/samples/typeIgnore5.py +0 -7
  1330. package/src/tests/samples/typeNarrowing1.py +0 -56
  1331. package/src/tests/samples/typeNarrowing2.py +0 -14
  1332. package/src/tests/samples/typeNarrowing3.py +0 -47
  1333. package/src/tests/samples/typeNarrowing4.py +0 -24
  1334. package/src/tests/samples/typeNarrowing5.py +0 -19
  1335. package/src/tests/samples/typeNarrowing6.py +0 -27
  1336. package/src/tests/samples/typeNarrowing7.py +0 -71
  1337. package/src/tests/samples/typeNarrowingAssert1.py +0 -24
  1338. package/src/tests/samples/typeNarrowingCallable1.py +0 -78
  1339. package/src/tests/samples/typeNarrowingEnum1.py +0 -58
  1340. package/src/tests/samples/typeNarrowingEnum2.py +0 -71
  1341. package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
  1342. package/src/tests/samples/typeNarrowingIn1.py +0 -97
  1343. package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
  1344. package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
  1345. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
  1346. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
  1347. package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
  1348. package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
  1349. package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
  1350. package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
  1351. package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
  1352. package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
  1353. package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
  1354. package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
  1355. package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
  1356. package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
  1357. package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
  1358. package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
  1359. package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
  1360. package/src/tests/samples/typeNarrowingTuple1.py +0 -23
  1361. package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
  1362. package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
  1363. package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
  1364. package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
  1365. package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
  1366. package/src/tests/samples/typePromotions1.py +0 -30
  1367. package/src/tests/samples/typeVar1.py +0 -23
  1368. package/src/tests/samples/typeVar10.py +0 -21
  1369. package/src/tests/samples/typeVar11.py +0 -12
  1370. package/src/tests/samples/typeVar2.py +0 -26
  1371. package/src/tests/samples/typeVar3.py +0 -73
  1372. package/src/tests/samples/typeVar4.py +0 -45
  1373. package/src/tests/samples/typeVar5.py +0 -75
  1374. package/src/tests/samples/typeVar6.py +0 -115
  1375. package/src/tests/samples/typeVar7.py +0 -171
  1376. package/src/tests/samples/typeVar8.py +0 -30
  1377. package/src/tests/samples/typeVar9.py +0 -118
  1378. package/src/tests/samples/typedDict1.py +0 -63
  1379. package/src/tests/samples/typedDict10.py +0 -34
  1380. package/src/tests/samples/typedDict11.py +0 -12
  1381. package/src/tests/samples/typedDict12.py +0 -103
  1382. package/src/tests/samples/typedDict13.py +0 -14
  1383. package/src/tests/samples/typedDict14.py +0 -25
  1384. package/src/tests/samples/typedDict15.py +0 -53
  1385. package/src/tests/samples/typedDict16.py +0 -103
  1386. package/src/tests/samples/typedDict17.py +0 -24
  1387. package/src/tests/samples/typedDict18.py +0 -43
  1388. package/src/tests/samples/typedDict2.py +0 -56
  1389. package/src/tests/samples/typedDict3.py +0 -40
  1390. package/src/tests/samples/typedDict4.py +0 -68
  1391. package/src/tests/samples/typedDict5.py +0 -50
  1392. package/src/tests/samples/typedDict6.py +0 -77
  1393. package/src/tests/samples/typedDict7.py +0 -22
  1394. package/src/tests/samples/typedDict8.py +0 -19
  1395. package/src/tests/samples/typedDict9.py +0 -22
  1396. package/src/tests/samples/unbound1.py +0 -18
  1397. package/src/tests/samples/unbound2.py +0 -12
  1398. package/src/tests/samples/unbound3.py +0 -13
  1399. package/src/tests/samples/unbound4.py +0 -25
  1400. package/src/tests/samples/unicode1.py +0 -39
  1401. package/src/tests/samples/uninitializedVariable1.py +0 -27
  1402. package/src/tests/samples/unions1.py +0 -79
  1403. package/src/tests/samples/unions2.py +0 -15
  1404. package/src/tests/samples/unions3.py +0 -48
  1405. package/src/tests/samples/unions4.py +0 -20
  1406. package/src/tests/samples/unions5.py +0 -43
  1407. package/src/tests/samples/unnecessaryCast1.py +0 -13
  1408. package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
  1409. package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
  1410. package/src/tests/samples/unpack1.py +0 -56
  1411. package/src/tests/samples/unpack2.py +0 -27
  1412. package/src/tests/samples/unpack3.py +0 -16
  1413. package/src/tests/samples/unpack4.py +0 -15
  1414. package/src/tests/samples/unreachable1.py +0 -112
  1415. package/src/tests/samples/unusedCallResult1.py +0 -67
  1416. package/src/tests/samples/unusedCoroutine1.py +0 -23
  1417. package/src/tests/samples/unusedExpression1.py +0 -34
  1418. package/src/tests/samples/unusedVariable1.py +0 -21
  1419. package/src/tests/samples/variadicTypeVar1.py +0 -51
  1420. package/src/tests/samples/variadicTypeVar10.py +0 -65
  1421. package/src/tests/samples/variadicTypeVar11.py +0 -72
  1422. package/src/tests/samples/variadicTypeVar12.py +0 -26
  1423. package/src/tests/samples/variadicTypeVar13.py +0 -35
  1424. package/src/tests/samples/variadicTypeVar14.py +0 -72
  1425. package/src/tests/samples/variadicTypeVar2.py +0 -63
  1426. package/src/tests/samples/variadicTypeVar3.py +0 -86
  1427. package/src/tests/samples/variadicTypeVar4.py +0 -71
  1428. package/src/tests/samples/variadicTypeVar5.py +0 -131
  1429. package/src/tests/samples/variadicTypeVar6.py +0 -78
  1430. package/src/tests/samples/variadicTypeVar7.py +0 -59
  1431. package/src/tests/samples/variadicTypeVar8.py +0 -116
  1432. package/src/tests/samples/variadicTypeVar9.py +0 -38
  1433. package/src/tests/samples/with1.py +0 -117
  1434. package/src/tests/samples/with2.py +0 -63
  1435. package/src/tests/samples/with3.py +0 -66
  1436. package/src/tests/samples/with4.py +0 -24
  1437. package/src/tests/samples/with5.py +0 -33
  1438. package/src/tests/samples/zipfs/bad.egg +0 -1
  1439. package/src/tests/samples/zipfs/bad.zip +0 -1
  1440. package/src/tests/samples/zipfs/basic.egg +0 -0
  1441. package/src/tests/samples/zipfs/basic.zip +0 -0
  1442. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1443. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1444. package/src/tests/sourceFile.test.ts +0 -25
  1445. package/src/tests/stringUtils.test.ts +0 -63
  1446. package/src/tests/symbolNameUtils.test.ts +0 -77
  1447. package/src/tests/testState.test.ts +0 -579
  1448. package/src/tests/testUtils.ts +0 -251
  1449. package/src/tests/tokenizer.test.ts +0 -1534
  1450. package/src/tests/typeEvaluator1.test.ts +0 -1372
  1451. package/src/tests/typeEvaluator2.test.ts +0 -1253
  1452. package/src/tests/typeEvaluator3.test.ts +0 -1279
  1453. package/src/tests/typeEvaluator4.test.ts +0 -1178
  1454. package/src/tests/updateSymbolReference.test.ts +0 -1107
  1455. package/src/tests/zipfs.test.ts +0 -116
  1456. 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
- }