@zzzen/pyright-internal 1.2.0-dev.20231119 → 1.2.0-dev.20231126

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 (386) hide show
  1. package/dist/analyzer/analysis.d.ts +1 -1
  2. package/dist/analyzer/analysis.js +5 -1
  3. package/dist/analyzer/analysis.js.map +1 -1
  4. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  5. package/dist/analyzer/analyzerNodeInfo.d.ts +1 -1
  6. package/dist/analyzer/analyzerNodeInfo.js +1 -1
  7. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  8. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -1
  9. package/dist/analyzer/backgroundAnalysisProgram.js +1 -1
  10. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  11. package/dist/analyzer/binder.js +198 -194
  12. package/dist/analyzer/binder.js.map +1 -1
  13. package/dist/analyzer/cacheManager.js +1 -1
  14. package/dist/analyzer/cacheManager.js.map +1 -1
  15. package/dist/analyzer/checker.js +257 -239
  16. package/dist/analyzer/checker.js.map +1 -1
  17. package/dist/analyzer/codeFlowEngine.d.ts +1 -1
  18. package/dist/analyzer/codeFlowEngine.js +26 -26
  19. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  20. package/dist/analyzer/codeFlowTypes.d.ts +1 -1
  21. package/dist/analyzer/codeFlowTypes.js +23 -23
  22. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  23. package/dist/analyzer/codeFlowUtils.js +39 -37
  24. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  25. package/dist/analyzer/constraintSolver.js +40 -47
  26. package/dist/analyzer/constraintSolver.js.map +1 -1
  27. package/dist/analyzer/constructorTransform.js +8 -8
  28. package/dist/analyzer/constructorTransform.js.map +1 -1
  29. package/dist/analyzer/constructors.js +23 -25
  30. package/dist/analyzer/constructors.js.map +1 -1
  31. package/dist/analyzer/dataClasses.js +67 -63
  32. package/dist/analyzer/dataClasses.js.map +1 -1
  33. package/dist/analyzer/declaration.d.ts +2 -2
  34. package/dist/analyzer/declaration.js +10 -10
  35. package/dist/analyzer/declaration.js.map +1 -1
  36. package/dist/analyzer/declarationUtils.js +41 -41
  37. package/dist/analyzer/declarationUtils.js.map +1 -1
  38. package/dist/analyzer/decorators.js +51 -51
  39. package/dist/analyzer/decorators.js.map +1 -1
  40. package/dist/analyzer/enums.js +27 -27
  41. package/dist/analyzer/enums.js.map +1 -1
  42. package/dist/analyzer/functionTransform.js +4 -4
  43. package/dist/analyzer/functionTransform.js.map +1 -1
  44. package/dist/analyzer/importResolver.d.ts +1 -1
  45. package/dist/analyzer/importResolver.js +21 -17
  46. package/dist/analyzer/importResolver.js.map +1 -1
  47. package/dist/analyzer/importResult.js +1 -1
  48. package/dist/analyzer/importResult.js.map +1 -1
  49. package/dist/analyzer/importStatementUtils.js +31 -27
  50. package/dist/analyzer/importStatementUtils.js.map +1 -1
  51. package/dist/analyzer/namedTuples.js +36 -32
  52. package/dist/analyzer/namedTuples.js.map +1 -1
  53. package/dist/analyzer/operations.js +78 -78
  54. package/dist/analyzer/operations.js.map +1 -1
  55. package/dist/analyzer/packageTypeReport.d.ts +1 -1
  56. package/dist/analyzer/packageTypeReport.js +2 -2
  57. package/dist/analyzer/packageTypeReport.js.map +1 -1
  58. package/dist/analyzer/packageTypeVerifier.js +90 -90
  59. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  60. package/dist/analyzer/parameterUtils.js +14 -14
  61. package/dist/analyzer/parameterUtils.js.map +1 -1
  62. package/dist/analyzer/parentDirectoryCache.d.ts +2 -2
  63. package/dist/analyzer/parseTreeCleaner.js +5 -1
  64. package/dist/analyzer/parseTreeCleaner.js.map +1 -1
  65. package/dist/analyzer/parseTreeUtils.d.ts +1 -1
  66. package/dist/analyzer/parseTreeUtils.js +383 -379
  67. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  68. package/dist/analyzer/parseTreeWalker.js +161 -157
  69. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  70. package/dist/analyzer/patternMatching.d.ts +1 -1
  71. package/dist/analyzer/patternMatching.js +52 -50
  72. package/dist/analyzer/patternMatching.js.map +1 -1
  73. package/dist/analyzer/program.d.ts +1 -1
  74. package/dist/analyzer/program.js +18 -14
  75. package/dist/analyzer/program.js.map +1 -1
  76. package/dist/analyzer/properties.js +53 -44
  77. package/dist/analyzer/properties.js.map +1 -1
  78. package/dist/analyzer/protocols.js +14 -14
  79. package/dist/analyzer/protocols.js.map +1 -1
  80. package/dist/analyzer/pythonPathUtils.js +5 -1
  81. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  82. package/dist/analyzer/regions.js +3 -3
  83. package/dist/analyzer/regions.js.map +1 -1
  84. package/dist/analyzer/scope.js +8 -8
  85. package/dist/analyzer/scope.js.map +1 -1
  86. package/dist/analyzer/scopeUtils.js +1 -1
  87. package/dist/analyzer/scopeUtils.js.map +1 -1
  88. package/dist/analyzer/service.js +5 -1
  89. package/dist/analyzer/service.js.map +1 -1
  90. package/dist/analyzer/sourceFile.js +25 -21
  91. package/dist/analyzer/sourceFile.js.map +1 -1
  92. package/dist/analyzer/sourceMapper.d.ts +2 -2
  93. package/dist/analyzer/sourceMapper.js +12 -8
  94. package/dist/analyzer/sourceMapper.js.map +1 -1
  95. package/dist/analyzer/staticExpressions.js +40 -40
  96. package/dist/analyzer/staticExpressions.js.map +1 -1
  97. package/dist/analyzer/symbol.d.ts +1 -1
  98. package/dist/analyzer/symbol.js +26 -26
  99. package/dist/analyzer/symbol.js.map +1 -1
  100. package/dist/analyzer/symbolUtils.js +1 -1
  101. package/dist/analyzer/symbolUtils.js.map +1 -1
  102. package/dist/analyzer/testWalker.js +5 -5
  103. package/dist/analyzer/testWalker.js.map +1 -1
  104. package/dist/analyzer/tracePrinter.d.ts +1 -1
  105. package/dist/analyzer/tracePrinter.js +35 -31
  106. package/dist/analyzer/tracePrinter.js.map +1 -1
  107. package/dist/analyzer/typeCacheUtils.js +5 -1
  108. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  109. package/dist/analyzer/typeDocStringUtils.js +13 -9
  110. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  111. package/dist/analyzer/typeEvaluator.js +1233 -1153
  112. package/dist/analyzer/typeEvaluator.js.map +1 -1
  113. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -1
  114. package/dist/analyzer/typeEvaluatorTypes.js +3 -1
  115. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  116. package/dist/analyzer/typeGuards.d.ts +1 -1
  117. package/dist/analyzer/typeGuards.js +79 -65
  118. package/dist/analyzer/typeGuards.js.map +1 -1
  119. package/dist/analyzer/typePrinter.d.ts +1 -1
  120. package/dist/analyzer/typePrinter.js +80 -76
  121. package/dist/analyzer/typePrinter.js.map +1 -1
  122. package/dist/analyzer/typeStubWriter.js +26 -22
  123. package/dist/analyzer/typeStubWriter.js.map +1 -1
  124. package/dist/analyzer/typeUtils.js +123 -123
  125. package/dist/analyzer/typeUtils.js.map +1 -1
  126. package/dist/analyzer/typeVarContext.js +9 -9
  127. package/dist/analyzer/typeVarContext.js.map +1 -1
  128. package/dist/analyzer/typeWalker.js +10 -10
  129. package/dist/analyzer/typedDicts.js +74 -70
  130. package/dist/analyzer/typedDicts.js.map +1 -1
  131. package/dist/analyzer/types.d.ts +16 -11
  132. package/dist/analyzer/types.js +179 -177
  133. package/dist/analyzer/types.js.map +1 -1
  134. package/dist/backgroundAnalysisBase.d.ts +2 -2
  135. package/dist/backgroundAnalysisBase.js +5 -1
  136. package/dist/backgroundAnalysisBase.js.map +1 -1
  137. package/dist/backgroundThreadBase.js +5 -1
  138. package/dist/backgroundThreadBase.js.map +1 -1
  139. package/dist/commands/commandController.js +7 -7
  140. package/dist/commands/commandController.js.map +1 -1
  141. package/dist/commands/commandResult.js +1 -1
  142. package/dist/commands/commandResult.js.map +1 -1
  143. package/dist/commands/commands.js +1 -1
  144. package/dist/commands/commands.js.map +1 -1
  145. package/dist/commands/dumpFileDebugInfoCommand.js +196 -196
  146. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  147. package/dist/commands/quickActionCommand.js +1 -1
  148. package/dist/commands/quickActionCommand.js.map +1 -1
  149. package/dist/common/charCodes.js +1 -1
  150. package/dist/common/charCodes.js.map +1 -1
  151. package/dist/common/chokidarFileWatcherProvider.js +5 -1
  152. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  153. package/dist/common/collectionUtils.d.ts +3 -3
  154. package/dist/common/collectionUtils.js +3 -3
  155. package/dist/common/collectionUtils.js.map +1 -1
  156. package/dist/common/commandLineOptions.d.ts +1 -1
  157. package/dist/common/commandLineOptions.js +5 -5
  158. package/dist/common/commandLineOptions.js.map +1 -1
  159. package/dist/common/configOptions.d.ts +1 -1
  160. package/dist/common/configOptions.js +11 -7
  161. package/dist/common/configOptions.js.map +1 -1
  162. package/dist/common/console.js +7 -3
  163. package/dist/common/console.js.map +1 -1
  164. package/dist/common/core.d.ts +2 -2
  165. package/dist/common/core.js +6 -6
  166. package/dist/common/core.js.map +1 -1
  167. package/dist/common/diagnostic.js +6 -6
  168. package/dist/common/diagnostic.js.map +1 -1
  169. package/dist/common/diagnosticRules.js +1 -1
  170. package/dist/common/diagnosticRules.js.map +1 -1
  171. package/dist/common/diagnosticSink.js +12 -12
  172. package/dist/common/diagnosticSink.js.map +1 -1
  173. package/dist/common/editAction.d.ts +1 -1
  174. package/dist/common/editAction.js +2 -2
  175. package/dist/common/editAction.js.map +1 -1
  176. package/dist/common/envVarUtils.js +5 -1
  177. package/dist/common/envVarUtils.js.map +1 -1
  178. package/dist/common/extensibility.js +1 -1
  179. package/dist/common/extensibility.js.map +1 -1
  180. package/dist/common/fileBasedCancellationUtils.js +5 -1
  181. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  182. package/dist/common/fileSystem.d.ts +1 -0
  183. package/dist/common/fileSystem.js +2 -2
  184. package/dist/common/fileSystem.js.map +1 -1
  185. package/dist/common/fileWatcher.d.ts +2 -2
  186. package/dist/common/fullAccessHost.js +10 -6
  187. package/dist/common/fullAccessHost.js.map +1 -1
  188. package/dist/common/host.d.ts +1 -1
  189. package/dist/common/host.js +2 -2
  190. package/dist/common/host.js.map +1 -1
  191. package/dist/common/lspUtils.js +7 -7
  192. package/dist/common/lspUtils.js.map +1 -1
  193. package/dist/common/memUtils.d.ts +1 -1
  194. package/dist/common/pathUtils.js +12 -8
  195. package/dist/common/pathUtils.js.map +1 -1
  196. package/dist/common/pythonVersion.js +1 -1
  197. package/dist/common/pythonVersion.js.map +1 -1
  198. package/dist/common/realFileSystem.js +5 -1
  199. package/dist/common/realFileSystem.js.map +1 -1
  200. package/dist/common/serviceProvider.d.ts +1 -1
  201. package/dist/common/serviceProvider.js +5 -1
  202. package/dist/common/serviceProvider.js.map +1 -1
  203. package/dist/common/serviceProviderExtensions.js +1 -1
  204. package/dist/common/serviceProviderExtensions.js.map +1 -1
  205. package/dist/common/stringUtils.js +5 -5
  206. package/dist/common/stringUtils.js.map +1 -1
  207. package/dist/common/textEditTracker.js +11 -7
  208. package/dist/common/textEditTracker.js.map +1 -1
  209. package/dist/common/textRange.js +3 -3
  210. package/dist/common/textRange.js.map +1 -1
  211. package/dist/languageServerBase.js +13 -13
  212. package/dist/languageServerBase.js.map +1 -1
  213. package/dist/languageService/autoImporter.d.ts +3 -3
  214. package/dist/languageService/autoImporter.js +12 -8
  215. package/dist/languageService/autoImporter.js.map +1 -1
  216. package/dist/languageService/callHierarchyProvider.js +27 -23
  217. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  218. package/dist/languageService/codeActionProvider.js +8 -8
  219. package/dist/languageService/codeActionProvider.js.map +1 -1
  220. package/dist/languageService/completionProvider.js +166 -162
  221. package/dist/languageService/completionProvider.js.map +1 -1
  222. package/dist/languageService/completionProviderUtils.js +9 -9
  223. package/dist/languageService/completionProviderUtils.js.map +1 -1
  224. package/dist/languageService/definitionProvider.js +14 -10
  225. package/dist/languageService/definitionProvider.js.map +1 -1
  226. package/dist/languageService/documentHighlightProvider.js +7 -3
  227. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  228. package/dist/languageService/documentSymbolCollector.d.ts +1 -1
  229. package/dist/languageService/documentSymbolCollector.js +21 -17
  230. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  231. package/dist/languageService/hoverProvider.js +30 -26
  232. package/dist/languageService/hoverProvider.js.map +1 -1
  233. package/dist/languageService/importSorter.js +1 -1
  234. package/dist/languageService/importSorter.js.map +1 -1
  235. package/dist/languageService/quickActions.js +10 -6
  236. package/dist/languageService/quickActions.js.map +1 -1
  237. package/dist/languageService/referencesProvider.d.ts +1 -1
  238. package/dist/languageService/referencesProvider.js +24 -20
  239. package/dist/languageService/referencesProvider.js.map +1 -1
  240. package/dist/languageService/signatureHelpProvider.js +8 -4
  241. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  242. package/dist/languageService/symbolIndexer.js +8 -4
  243. package/dist/languageService/symbolIndexer.js.map +1 -1
  244. package/dist/languageService/tooltipUtils.js +20 -16
  245. package/dist/languageService/tooltipUtils.js.map +1 -1
  246. package/dist/languageService/workspaceSymbolProvider.js +5 -1
  247. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  248. package/dist/localization/localize.d.ts +7 -9
  249. package/dist/localization/localize.js +5 -4
  250. package/dist/localization/localize.js.map +1 -1
  251. package/dist/localization/package.nls.cs.json +0 -3
  252. package/dist/localization/package.nls.de.json +0 -3
  253. package/dist/localization/package.nls.en-us.json +4 -3
  254. package/dist/localization/package.nls.es.json +0 -3
  255. package/dist/localization/package.nls.fr.json +0 -3
  256. package/dist/localization/package.nls.it.json +0 -3
  257. package/dist/localization/package.nls.ja.json +0 -3
  258. package/dist/localization/package.nls.ko.json +0 -3
  259. package/dist/localization/package.nls.pl.json +0 -3
  260. package/dist/localization/package.nls.pt-br.json +0 -3
  261. package/dist/localization/package.nls.qps-ploc.json +0 -3
  262. package/dist/localization/package.nls.ru.json +0 -3
  263. package/dist/localization/package.nls.tr.json +0 -3
  264. package/dist/localization/package.nls.zh-cn.json +0 -3
  265. package/dist/localization/package.nls.zh-tw.json +0 -3
  266. package/dist/parser/characterStream.js +3 -3
  267. package/dist/parser/characterStream.js.map +1 -1
  268. package/dist/parser/characters.js +13 -9
  269. package/dist/parser/characters.js.map +1 -1
  270. package/dist/parser/parseNodes.d.ts +12 -12
  271. package/dist/parser/parseNodes.js +193 -193
  272. package/dist/parser/parseNodes.js.map +1 -1
  273. package/dist/parser/parser.js +563 -559
  274. package/dist/parser/parser.js.map +1 -1
  275. package/dist/parser/stringTokenUtils.js +47 -47
  276. package/dist/parser/stringTokenUtils.js.map +1 -1
  277. package/dist/parser/tokenizer.js +288 -288
  278. package/dist/parser/tokenizer.js.map +1 -1
  279. package/dist/parser/tokenizerTypes.js +35 -35
  280. package/dist/parser/tokenizerTypes.js.map +1 -1
  281. package/dist/parser/unicode.d.ts +3 -3
  282. package/dist/pyright.js +21 -17
  283. package/dist/pyright.js.map +1 -1
  284. package/dist/pyrightFileSystem.d.ts +1 -0
  285. package/dist/pyrightFileSystem.js +1 -1
  286. package/dist/pyrightFileSystem.js.map +1 -1
  287. package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
  288. package/dist/tests/chainedSourceFiles.test.js +5 -1
  289. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  290. package/dist/tests/checker.test.js +5 -1
  291. package/dist/tests/checker.test.js.map +1 -1
  292. package/dist/tests/collectionUtils.test.js +5 -1
  293. package/dist/tests/collectionUtils.test.js.map +1 -1
  294. package/dist/tests/common.test.js +5 -1
  295. package/dist/tests/common.test.js.map +1 -1
  296. package/dist/tests/debug.test.js +8 -4
  297. package/dist/tests/debug.test.js.map +1 -1
  298. package/dist/tests/deferred.test.js +5 -1
  299. package/dist/tests/deferred.test.js.map +1 -1
  300. package/dist/tests/diagnosticOverrides.test.js +5 -1
  301. package/dist/tests/diagnosticOverrides.test.js.map +1 -1
  302. package/dist/tests/docStringUtils.test.js +5 -1
  303. package/dist/tests/docStringUtils.test.js.map +1 -1
  304. package/dist/tests/filesystem.test.js +5 -1
  305. package/dist/tests/filesystem.test.js.map +1 -1
  306. package/dist/tests/fourSlashParser.test.js +5 -1
  307. package/dist/tests/fourSlashParser.test.js.map +1 -1
  308. package/dist/tests/fourSlashRunner.test.js +5 -1
  309. package/dist/tests/fourSlashRunner.test.js.map +1 -1
  310. package/dist/tests/harness/fourslash/fourSlashParser.js +13 -13
  311. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  312. package/dist/tests/harness/fourslash/fourSlashTypes.js +11 -7
  313. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  314. package/dist/tests/harness/fourslash/runner.d.ts +1 -1
  315. package/dist/tests/harness/fourslash/runner.js +5 -1
  316. package/dist/tests/harness/fourslash/runner.js.map +1 -1
  317. package/dist/tests/harness/fourslash/testLanguageService.js +5 -1
  318. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  319. package/dist/tests/harness/fourslash/testState.Consts.js +6 -2
  320. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  321. package/dist/tests/harness/fourslash/testState.js +17 -13
  322. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  323. package/dist/tests/harness/fourslash/testStateUtils.js +9 -5
  324. package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
  325. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +5 -1
  326. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  327. package/dist/tests/harness/testHost.js +5 -1
  328. package/dist/tests/harness/testHost.js.map +1 -1
  329. package/dist/tests/harness/utils.d.ts +13 -12
  330. package/dist/tests/harness/utils.js.map +1 -1
  331. package/dist/tests/harness/vfs/factory.js +6 -2
  332. package/dist/tests/harness/vfs/factory.js.map +1 -1
  333. package/dist/tests/harness/vfs/filesystem.d.ts +4 -3
  334. package/dist/tests/harness/vfs/filesystem.js +11 -7
  335. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  336. package/dist/tests/harness/vfs/pathValidation.js +30 -26
  337. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  338. package/dist/tests/importStatementUtils.test.js +25 -25
  339. package/dist/tests/importStatementUtils.test.js.map +1 -1
  340. package/dist/tests/ipythonMode.test.js +6 -6
  341. package/dist/tests/ipythonMode.test.js.map +1 -1
  342. package/dist/tests/localizer.test.js +5 -1
  343. package/dist/tests/localizer.test.js.map +1 -1
  344. package/dist/tests/logger.test.js +5 -1
  345. package/dist/tests/logger.test.js.map +1 -1
  346. package/dist/tests/parseTreeUtils.test.js +10 -10
  347. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  348. package/dist/tests/parser.test.js +13 -9
  349. package/dist/tests/parser.test.js.map +1 -1
  350. package/dist/tests/pathUtils.test.js +5 -1
  351. package/dist/tests/pathUtils.test.js.map +1 -1
  352. package/dist/tests/sourceFile.test.js +5 -1
  353. package/dist/tests/sourceFile.test.js.map +1 -1
  354. package/dist/tests/sourceMapperUtils.test.js +5 -1
  355. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  356. package/dist/tests/stringUtils.test.js +10 -6
  357. package/dist/tests/stringUtils.test.js.map +1 -1
  358. package/dist/tests/symbolNameUtils.test.js +5 -1
  359. package/dist/tests/symbolNameUtils.test.js.map +1 -1
  360. package/dist/tests/testState.test.js +5 -1
  361. package/dist/tests/testState.test.js.map +1 -1
  362. package/dist/tests/testUtils.js +11 -7
  363. package/dist/tests/testUtils.js.map +1 -1
  364. package/dist/tests/textRange.test.js +5 -1
  365. package/dist/tests/textRange.test.js.map +1 -1
  366. package/dist/tests/tokenizer.test.js +463 -459
  367. package/dist/tests/tokenizer.test.js.map +1 -1
  368. package/dist/tests/typeEvaluator1.test.js +14 -2
  369. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  370. package/dist/tests/typeEvaluator2.test.js +11 -3
  371. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  372. package/dist/tests/typeEvaluator3.test.js +11 -3
  373. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  374. package/dist/tests/typeEvaluator4.test.js +10 -2
  375. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  376. package/dist/tests/typeEvaluator5.test.js +5 -1
  377. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  378. package/dist/tests/typePrinter.test.js +44 -40
  379. package/dist/tests/typePrinter.test.js.map +1 -1
  380. package/dist/tests/workspaceEditUtils.test.js +5 -1
  381. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  382. package/dist/tests/zipfs.test.js +5 -1
  383. package/dist/tests/zipfs.test.js.map +1 -1
  384. package/dist/workspaceFactory.js +2 -2
  385. package/dist/workspaceFactory.js.map +1 -1
  386. package/package.json +2 -2
@@ -42,6 +42,7 @@ export declare const enum EvaluatorFlags {
42
42
  AllowUnpackedTypedDict = 8388608,
43
43
  DisallowPep695TypeAlias = 16777216,
44
44
  SkipConvertParamSpecToRuntimeObject = 33554432,
45
+ DisallowNonTypeSpecialForms = 67108864,
45
46
  CallBaseDefaults = 16777218,
46
47
  IndexBaseDefaults = 2,
47
48
  MemberAccessBaseDefaults = 16777218
@@ -113,7 +114,7 @@ export interface FunctionArgumentWithType extends FunctionArgumentBase {
113
114
  export interface FunctionArgumentWithExpression extends FunctionArgumentBase {
114
115
  valueExpression: ExpressionNode;
115
116
  }
116
- export declare type FunctionArgument = FunctionArgumentWithType | FunctionArgumentWithExpression;
117
+ export type FunctionArgument = FunctionArgumentWithType | FunctionArgumentWithExpression;
117
118
  export interface EffectiveTypeResult {
118
119
  type: Type;
119
120
  isIncomplete: boolean;
@@ -155,6 +156,7 @@ export interface ExpectedTypeOptions {
155
156
  allowForwardReference?: boolean;
156
157
  allowTypeVarsWithoutScopeId?: boolean;
157
158
  enforceTypeAnnotationRules?: boolean;
159
+ disallowProtocolAndTypedDict?: boolean;
158
160
  }
159
161
  export interface ExpectedTypeResult {
160
162
  type: Type;
@@ -81,11 +81,13 @@ var EvaluatorFlags;
81
81
  // If evaluation is a TypeVarType that is a ParamSpec, do
82
82
  // not convert it to its corresponding ParamSpec runtime object.
83
83
  EvaluatorFlags[EvaluatorFlags["SkipConvertParamSpecToRuntimeObject"] = 33554432] = "SkipConvertParamSpecToRuntimeObject";
84
+ // Protocol and TypedDict are not allowed in this context.
85
+ EvaluatorFlags[EvaluatorFlags["DisallowNonTypeSpecialForms"] = 67108864] = "DisallowNonTypeSpecialForms";
84
86
  // Defaults used for evaluating the LHS of a call expression.
85
87
  EvaluatorFlags[EvaluatorFlags["CallBaseDefaults"] = 16777218] = "CallBaseDefaults";
86
88
  // Defaults used for evaluating the LHS of a member access expression.
87
89
  EvaluatorFlags[EvaluatorFlags["IndexBaseDefaults"] = 2] = "IndexBaseDefaults";
88
90
  // Defaults used for evaluating the LHS of a member access expression.
89
91
  EvaluatorFlags[EvaluatorFlags["MemberAccessBaseDefaults"] = 16777218] = "MemberAccessBaseDefaults";
90
- })(EvaluatorFlags = exports.EvaluatorFlags || (exports.EvaluatorFlags = {}));
92
+ })(EvaluatorFlags || (exports.EvaluatorFlags = EvaluatorFlags = {}));
91
93
  //# sourceMappingURL=typeEvaluatorTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAsGjB;AAtGD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,4BAA4B;IAC5B,+FAAkC,CAAA;IAElC,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,qEAAqE;IACrE,qFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,oEAAoE;IACpE,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;IAEhC,yDAAyD;IACzD,gGAAiC,CAAA;IAEjC,yDAAyD;IACzD,gEAAgE;IAChE,wHAA6C,CAAA;IAE7C,6DAA6D;IAC7D,kFAA4D,CAAA;IAE5D,sEAAsE;IACtE,6EAAmC,CAAA;IAEnC,sEAAsE;IACtE,kGAAoE,CAAA;AACxE,CAAC,EAtGiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAsG/B"}
1
+ {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAyGjB;AAzGD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,4BAA4B;IAC5B,+FAAkC,CAAA;IAElC,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,qEAAqE;IACrE,qFAA6B,CAAA;IAE7B,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,oEAAoE;IACpE,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;IAEhC,yDAAyD;IACzD,gGAAiC,CAAA;IAEjC,yDAAyD;IACzD,gEAAgE;IAChE,wHAA6C,CAAA;IAE7C,0DAA0D;IAC1D,wGAAqC,CAAA;IAErC,6DAA6D;IAC7D,kFAA4D,CAAA;IAE5D,sEAAsE;IACtE,6EAAmC,CAAA;IAEnC,sEAAsE;IACtE,kGAAoE,CAAA;AACxE,CAAC,EAzGiB,cAAc,8BAAd,cAAc,QAyG/B"}
@@ -5,7 +5,7 @@ export interface TypeNarrowingResult {
5
5
  type: Type;
6
6
  isIncomplete: boolean;
7
7
  }
8
- export declare type TypeNarrowingCallback = (type: Type) => TypeNarrowingResult | undefined;
8
+ export type TypeNarrowingCallback = (type: Type) => TypeNarrowingResult | undefined;
9
9
  export declare function getTypeNarrowingCallback(evaluator: TypeEvaluator, reference: ExpressionNode, testExpression: ExpressionNode, isPositiveTest: boolean, recursionCount?: number): TypeNarrowingCallback | undefined;
10
10
  export declare function isIsinstanceFilterSuperclass(evaluator: TypeEvaluator, varType: Type, concreteVarType: ClassType, filterType: Type, concreteFilterType: ClassType, isInstanceCheck: boolean): boolean;
11
11
  export declare function isIsinstanceFilterSubclass(evaluator: TypeEvaluator, varType: ClassType, concreteFilterType: ClassType, isInstanceCheck: boolean): boolean;
@@ -11,7 +11,11 @@
11
11
  */
12
12
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
13
  if (k2 === undefined) k2 = k;
14
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
15
19
  }) : (function(o, m, k, k2) {
16
20
  if (k2 === undefined) k2 = k;
17
21
  o[k2] = m[k];
@@ -50,25 +54,25 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
50
54
  return undefined;
51
55
  }
52
56
  recursionCount++;
53
- if (testExpression.nodeType === 4 /* AssignmentExpression */) {
57
+ if (testExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
54
58
  return getTypeNarrowingCallbackForAssignmentExpression(evaluator, reference, testExpression, isPositiveTest, recursionCount);
55
59
  }
56
- if (testExpression.nodeType === 7 /* BinaryOperation */) {
57
- const isOrIsNotOperator = testExpression.operator === 39 /* Is */ || testExpression.operator === 40 /* IsNot */;
58
- const equalsOrNotEqualsOperator = testExpression.operator === 12 /* Equals */ || testExpression.operator === 28 /* NotEquals */;
60
+ if (testExpression.nodeType === 7 /* ParseNodeType.BinaryOperation */) {
61
+ const isOrIsNotOperator = testExpression.operator === 39 /* OperatorType.Is */ || testExpression.operator === 40 /* OperatorType.IsNot */;
62
+ const equalsOrNotEqualsOperator = testExpression.operator === 12 /* OperatorType.Equals */ || testExpression.operator === 28 /* OperatorType.NotEquals */;
59
63
  if (isOrIsNotOperator || equalsOrNotEqualsOperator) {
60
64
  // Invert the "isPositiveTest" value if this is an "is not" operation.
61
- const adjIsPositiveTest = testExpression.operator === 39 /* Is */ || testExpression.operator === 12 /* Equals */
65
+ const adjIsPositiveTest = testExpression.operator === 39 /* OperatorType.Is */ || testExpression.operator === 12 /* OperatorType.Equals */
62
66
  ? isPositiveTest
63
67
  : !isPositiveTest;
64
68
  // Look for "X is None", "X is not None", "X == None", and "X != None".
65
69
  // These are commonly-used patterns used in control flow.
66
- if (testExpression.rightExpression.nodeType === 11 /* Constant */ &&
67
- testExpression.rightExpression.constType === 26 /* None */) {
70
+ if (testExpression.rightExpression.nodeType === 11 /* ParseNodeType.Constant */ &&
71
+ testExpression.rightExpression.constType === 26 /* KeywordType.None */) {
68
72
  // Allow the LHS to be either a simple expression or an assignment
69
73
  // expression that assigns to a simple name.
70
74
  let leftExpression = testExpression.leftExpression;
71
- if (leftExpression.nodeType === 4 /* AssignmentExpression */) {
75
+ if (leftExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
72
76
  leftExpression = leftExpression.name;
73
77
  }
74
78
  if (ParseTreeUtils.isMatchingExpression(reference, leftExpression)) {
@@ -76,13 +80,13 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
76
80
  return { type: narrowTypeForIsNone(evaluator, type, adjIsPositiveTest), isIncomplete: false };
77
81
  };
78
82
  }
79
- if (leftExpression.nodeType === 24 /* Index */ &&
83
+ if (leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
80
84
  ParseTreeUtils.isMatchingExpression(reference, leftExpression.baseExpression) &&
81
85
  leftExpression.items.length === 1 &&
82
86
  !leftExpression.trailingComma &&
83
- leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
87
+ leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
84
88
  !leftExpression.items[0].name &&
85
- leftExpression.items[0].valueExpression.nodeType === 40 /* Number */ &&
89
+ leftExpression.items[0].valueExpression.nodeType === 40 /* ParseNodeType.Number */ &&
86
90
  leftExpression.items[0].valueExpression.isInteger &&
87
91
  !leftExpression.items[0].valueExpression.isImaginary) {
88
92
  const indexValue = leftExpression.items[0].valueExpression.value;
@@ -97,11 +101,11 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
97
101
  }
98
102
  }
99
103
  // Look for "X is ...", "X is not ...", "X == ...", and "X != ...".
100
- if (testExpression.rightExpression.nodeType === 18 /* Ellipsis */) {
104
+ if (testExpression.rightExpression.nodeType === 18 /* ParseNodeType.Ellipsis */) {
101
105
  // Allow the LHS to be either a simple expression or an assignment
102
106
  // expression that assigns to a simple name.
103
107
  let leftExpression = testExpression.leftExpression;
104
- if (leftExpression.nodeType === 4 /* AssignmentExpression */) {
108
+ if (leftExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
105
109
  leftExpression = leftExpression.name;
106
110
  }
107
111
  if (ParseTreeUtils.isMatchingExpression(reference, leftExpression)) {
@@ -114,12 +118,12 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
114
118
  }
115
119
  }
116
120
  // Look for "type(X) is Y", "type(X) is not Y", "type(X) == Y" or "type(X) != Y".
117
- if (testExpression.leftExpression.nodeType === 9 /* Call */) {
121
+ if (testExpression.leftExpression.nodeType === 9 /* ParseNodeType.Call */) {
118
122
  if (testExpression.leftExpression.arguments.length === 1 &&
119
- testExpression.leftExpression.arguments[0].argumentCategory === 0 /* Simple */) {
123
+ testExpression.leftExpression.arguments[0].argumentCategory === 0 /* ArgumentCategory.Simple */) {
120
124
  const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
121
125
  if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
122
- const callType = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* CallBaseDefaults */).type;
126
+ const callType = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */).type;
123
127
  if ((0, types_1.isInstantiableClass)(callType) && types_1.ClassType.isBuiltIn(callType, 'type')) {
124
128
  const classTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
125
129
  const classType = evaluator.makeTopLevelTypeVarsConcrete(classTypeResult.type);
@@ -162,10 +166,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
162
166
  }
163
167
  }
164
168
  // Look for X[<literal>] is <literal> or X[<literal>] is not <literal>.
165
- if (testExpression.leftExpression.nodeType === 24 /* Index */ &&
169
+ if (testExpression.leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
166
170
  testExpression.leftExpression.items.length === 1 &&
167
171
  !testExpression.leftExpression.trailingComma &&
168
- testExpression.leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
172
+ testExpression.leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
169
173
  ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.baseExpression)) {
170
174
  const indexTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.items[0].valueExpression);
171
175
  const indexType = indexTypeResult.type;
@@ -208,7 +212,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
208
212
  }
209
213
  if (equalsOrNotEqualsOperator) {
210
214
  // Look for X == <literal> or X != <literal>
211
- const adjIsPositiveTest = testExpression.operator === 12 /* Equals */ ? isPositiveTest : !isPositiveTest;
215
+ const adjIsPositiveTest = testExpression.operator === 12 /* OperatorType.Equals */ ? isPositiveTest : !isPositiveTest;
212
216
  if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
213
217
  const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
214
218
  const rightType = rightTypeResult.type;
@@ -223,10 +227,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
223
227
  }
224
228
  }
225
229
  // Look for X[<literal>] == <literal> or X[<literal>] != <literal>
226
- if (testExpression.leftExpression.nodeType === 24 /* Index */ &&
230
+ if (testExpression.leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
227
231
  testExpression.leftExpression.items.length === 1 &&
228
232
  !testExpression.leftExpression.trailingComma &&
229
- testExpression.leftExpression.items[0].argumentCategory === 0 /* Simple */ &&
233
+ testExpression.leftExpression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
230
234
  ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.baseExpression)) {
231
235
  const indexTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.items[0].valueExpression);
232
236
  const indexType = indexTypeResult.type;
@@ -255,11 +259,11 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
255
259
  }
256
260
  // Look for len(x) == <literal> or len(x) != <literal>
257
261
  if (equalsOrNotEqualsOperator &&
258
- testExpression.leftExpression.nodeType === 9 /* Call */ &&
262
+ testExpression.leftExpression.nodeType === 9 /* ParseNodeType.Call */ &&
259
263
  testExpression.leftExpression.arguments.length === 1) {
260
264
  const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
261
265
  if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
262
- const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* CallBaseDefaults */);
266
+ const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
263
267
  const callType = callTypeResult.type;
264
268
  if ((0, types_1.isFunction)(callType) && callType.details.fullName === 'builtins.len') {
265
269
  const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
@@ -280,7 +284,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
280
284
  }
281
285
  // Look for X.Y == <literal> or X.Y != <literal>
282
286
  if (equalsOrNotEqualsOperator &&
283
- testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
287
+ testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
284
288
  ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)) {
285
289
  const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
286
290
  const rightType = rightTypeResult.type;
@@ -296,7 +300,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
296
300
  }
297
301
  // Look for X.Y is <literal> or X.Y is not <literal> where <literal> is
298
302
  // an enum or bool literal
299
- if (testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
303
+ if (testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
300
304
  ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)) {
301
305
  const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
302
306
  const rightType = rightTypeResult.type;
@@ -314,10 +318,10 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
314
318
  }
315
319
  // Look for X.Y is None or X.Y is not None
316
320
  // These are commonly-used patterns used in control flow.
317
- if (testExpression.leftExpression.nodeType === 35 /* MemberAccess */ &&
321
+ if (testExpression.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
318
322
  ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression) &&
319
- testExpression.rightExpression.nodeType === 11 /* Constant */ &&
320
- testExpression.rightExpression.constType === 26 /* None */) {
323
+ testExpression.rightExpression.nodeType === 11 /* ParseNodeType.Constant */ &&
324
+ testExpression.rightExpression.constType === 26 /* KeywordType.None */) {
321
325
  const memberName = testExpression.leftExpression.memberName;
322
326
  return (type) => {
323
327
  return {
@@ -327,12 +331,12 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
327
331
  };
328
332
  }
329
333
  }
330
- if (testExpression.operator === 41 /* In */ || testExpression.operator === 42 /* NotIn */) {
334
+ if (testExpression.operator === 41 /* OperatorType.In */ || testExpression.operator === 42 /* OperatorType.NotIn */) {
331
335
  // Look for "x in y" or "x not in y" where y is one of several built-in types.
332
336
  if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
333
337
  const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression);
334
338
  const rightType = rightTypeResult.type;
335
- const adjIsPositiveTest = testExpression.operator === 41 /* In */ ? isPositiveTest : !isPositiveTest;
339
+ const adjIsPositiveTest = testExpression.operator === 41 /* OperatorType.In */ ? isPositiveTest : !isPositiveTest;
336
340
  return (type) => {
337
341
  return {
338
342
  type: narrowTypeForContainerType(evaluator, type, rightType, adjIsPositiveTest),
@@ -346,7 +350,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
346
350
  const leftTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression);
347
351
  const leftType = leftTypeResult.type;
348
352
  if ((0, types_1.isClassInstance)(leftType) && types_1.ClassType.isBuiltIn(leftType, 'str') && (0, typeUtils_1.isLiteralType)(leftType)) {
349
- const adjIsPositiveTest = testExpression.operator === 41 /* In */ ? isPositiveTest : !isPositiveTest;
353
+ const adjIsPositiveTest = testExpression.operator === 41 /* OperatorType.In */ ? isPositiveTest : !isPositiveTest;
350
354
  return (type) => {
351
355
  return {
352
356
  type: narrowTypeForTypedDictKey(evaluator, type, types_1.ClassType.cloneAsInstantiable(leftType), adjIsPositiveTest),
@@ -357,7 +361,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
357
361
  }
358
362
  }
359
363
  }
360
- if (testExpression.nodeType === 9 /* Call */) {
364
+ if (testExpression.nodeType === 9 /* ParseNodeType.Call */) {
361
365
  // Look for "isinstance(X, Y)" or "issubclass(X, Y)".
362
366
  if (testExpression.arguments.length === 2) {
363
367
  // Make sure the first parameter is a supported expression type
@@ -366,15 +370,15 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
366
370
  const arg0Expr = testExpression.arguments[0].valueExpression;
367
371
  const arg1Expr = testExpression.arguments[1].valueExpression;
368
372
  if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
369
- const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
373
+ const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
370
374
  const callType = callTypeResult.type;
371
375
  if ((0, types_1.isFunction)(callType) &&
372
376
  (callType.details.builtInName === 'isinstance' || callType.details.builtInName === 'issubclass')) {
373
377
  const isInstanceCheck = callType.details.builtInName === 'isinstance';
374
- const arg1TypeResult = evaluator.getTypeOfExpression(arg1Expr, 512 /* AllowMissingTypeArgs */ |
375
- 8 /* EvaluateStringLiteralAsType */ |
376
- 32 /* DisallowParamSpec */ |
377
- 64 /* DisallowTypeVarTuple */);
378
+ const arg1TypeResult = evaluator.getTypeOfExpression(arg1Expr, 512 /* EvaluatorFlags.AllowMissingTypeArgs */ |
379
+ 8 /* EvaluatorFlags.EvaluateStringLiteralAsType */ |
380
+ 32 /* EvaluatorFlags.DisallowParamSpec */ |
381
+ 64 /* EvaluatorFlags.DisallowTypeVarTuple */);
378
382
  const arg1Type = arg1TypeResult.type;
379
383
  const classTypeList = getIsInstanceClassTypes(arg1Type);
380
384
  const isIncomplete = !!callTypeResult.isIncomplete || !!arg1TypeResult.isIncomplete;
@@ -413,7 +417,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
413
417
  if (testExpression.arguments.length === 1) {
414
418
  const arg0Expr = testExpression.arguments[0].valueExpression;
415
419
  if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
416
- const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
420
+ const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
417
421
  const callType = callTypeResult.type;
418
422
  if ((0, types_1.isFunction)(callType) && callType.details.builtInName === 'callable') {
419
423
  return (type) => {
@@ -432,7 +436,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
432
436
  // Look for "bool(X)"
433
437
  if (testExpression.arguments.length === 1 && !testExpression.arguments[0].name) {
434
438
  if (ParseTreeUtils.isMatchingExpression(reference, testExpression.arguments[0].valueExpression)) {
435
- const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
439
+ const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
436
440
  const callType = callTypeResult.type;
437
441
  if ((0, types_1.isInstantiableClass)(callType) && types_1.ClassType.isBuiltIn(callType, 'bool')) {
438
442
  return (type) => {
@@ -455,7 +459,7 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
455
459
  (0, types_1.isClassInstance)(type.details.declaredReturnType) &&
456
460
  types_1.ClassType.isBuiltIn(type.details.declaredReturnType, 'TypeGuard'));
457
461
  };
458
- const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* CallBaseDefaults */);
462
+ const callTypeResult = evaluator.getTypeOfExpression(testExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
459
463
  const callType = callTypeResult.type;
460
464
  if ((0, types_1.isFunction)(callType) && isFunctionReturnTypeGuard(callType)) {
461
465
  isPossiblyTypeGuard = true;
@@ -505,8 +509,8 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
505
509
  // We normally won't find a "not" operator here because they are stripped out
506
510
  // by the binder when it creates condition flow nodes, but we can find this
507
511
  // in the case of local variables type narrowing.
508
- if (reference.nodeType === 38 /* Name */) {
509
- if (testExpression.nodeType === 55 /* UnaryOperation */ && testExpression.operator === 38 /* Not */) {
512
+ if (reference.nodeType === 38 /* ParseNodeType.Name */) {
513
+ if (testExpression.nodeType === 55 /* ParseNodeType.UnaryOperation */ && testExpression.operator === 38 /* OperatorType.Not */) {
510
514
  return getTypeNarrowingCallback(evaluator, reference, testExpression.expression, !isPositiveTest, recursionCount);
511
515
  }
512
516
  }
@@ -514,8 +518,8 @@ function getTypeNarrowingCallback(evaluator, reference, testExpression, isPositi
514
518
  }
515
519
  exports.getTypeNarrowingCallback = getTypeNarrowingCallback;
516
520
  function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testExpression, isPositiveTest, recursionCount) {
517
- if (testExpression.nodeType !== 38 /* Name */ ||
518
- reference.nodeType !== 38 /* Name */ ||
521
+ if (testExpression.nodeType !== 38 /* ParseNodeType.Name */ ||
522
+ reference.nodeType !== 38 /* ParseNodeType.Name */ ||
519
523
  testExpression === reference) {
520
524
  return undefined;
521
525
  }
@@ -524,7 +528,7 @@ function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testE
524
528
  // we need to validate that it is not modified between the test expression
525
529
  // evaluation and the conditional check.
526
530
  const testExprDecl = getDeclsForLocalVar(evaluator, testExpression, testExpression);
527
- if (!testExprDecl || testExprDecl.length !== 1 || testExprDecl[0].type !== 1 /* Variable */) {
531
+ if (!testExprDecl || testExprDecl.length !== 1 || testExprDecl[0].type !== 1 /* DeclarationType.Variable */) {
528
532
  return undefined;
529
533
  }
530
534
  const referenceDecls = getDeclsForLocalVar(evaluator, reference, testExpression);
@@ -565,7 +569,7 @@ function getTypeNarrowingCallbackForAliasedCondition(evaluator, reference, testE
565
569
  // the current scope.
566
570
  function getDeclsForLocalVar(evaluator, name, reachableFrom) {
567
571
  const scope = (0, scopeUtils_1.getScopeForNode)(name);
568
- if ((scope === null || scope === void 0 ? void 0 : scope.type) !== 1 /* Function */ && (scope === null || scope === void 0 ? void 0 : scope.type) !== 3 /* Module */) {
572
+ if ((scope === null || scope === void 0 ? void 0 : scope.type) !== 1 /* ScopeType.Function */ && (scope === null || scope === void 0 ? void 0 : scope.type) !== 3 /* ScopeType.Module */) {
569
573
  return undefined;
570
574
  }
571
575
  const symbol = scope.lookUpSymbol(name.value);
@@ -574,14 +578,14 @@ function getDeclsForLocalVar(evaluator, name, reachableFrom) {
574
578
  }
575
579
  const decls = symbol.getDeclarations();
576
580
  if (decls.length === 0 ||
577
- decls.some((decl) => decl.type !== 1 /* Variable */ && decl.type !== 2 /* Parameter */)) {
581
+ decls.some((decl) => decl.type !== 1 /* DeclarationType.Variable */ && decl.type !== 2 /* DeclarationType.Parameter */)) {
578
582
  return undefined;
579
583
  }
580
584
  // If there are any assignments within different scopes (e.g. via a "global" or
581
585
  // "nonlocal" reference), don't consider it a local variable.
582
586
  let prevDeclScope;
583
587
  if (decls.some((decl) => {
584
- const nodeToConsider = decl.type === 2 /* Parameter */ ? decl.node.name : decl.node;
588
+ const nodeToConsider = decl.type === 2 /* DeclarationType.Parameter */ ? decl.node.name : decl.node;
585
589
  const declScopeNode = ParseTreeUtils.getExecutionScopeNode(nodeToConsider);
586
590
  if (prevDeclScope && declScopeNode !== prevDeclScope) {
587
591
  return true;
@@ -830,8 +834,8 @@ function getIsInstanceClassTypes(argType) {
830
834
  }
831
835
  else if ((0, types_1.isFunction)(subtype) &&
832
836
  subtype.details.parameters.length === 2 &&
833
- subtype.details.parameters[0].category === 1 /* ArgsList */ &&
834
- subtype.details.parameters[1].category === 2 /* KwargsDict */) {
837
+ subtype.details.parameters[0].category === 1 /* ParameterCategory.ArgsList */ &&
838
+ subtype.details.parameters[1].category === 2 /* ParameterCategory.KwargsDict */) {
835
839
  classTypeList.push(subtype);
836
840
  }
837
841
  else {
@@ -958,7 +962,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
958
962
  if (evaluator.assignType(concreteVarType, concreteFilterType,
959
963
  /* diag */ undefined,
960
964
  /* destTypeVarContext */ undefined,
961
- /* srcTypeVarContext */ undefined, 512 /* IgnoreTypeVarScope */ | 4096 /* IgnoreProtocolAssignmentCheck */)) {
965
+ /* srcTypeVarContext */ undefined, 512 /* AssignTypeFlags.IgnoreTypeVarScope */ | 4096 /* AssignTypeFlags.IgnoreProtocolAssignmentCheck */)) {
962
966
  // If the variable type is a superclass of the isinstance
963
967
  // filter, we can narrow the type to the subclass.
964
968
  let specializedFilterType = filterType;
@@ -999,7 +1003,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
999
1003
  effectiveMetaclass = concreteFilterType.details.effectiveMetaclass;
1000
1004
  }
1001
1005
  }
1002
- let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* None */, ParseTreeUtils.getTypeSourceId(errorNode),
1006
+ let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* ClassTypeFlags.None */, ParseTreeUtils.getTypeSourceId(errorNode),
1003
1007
  /* declaredMetaclass */ undefined, effectiveMetaclass, concreteVarType.details.docString);
1004
1008
  newClassType.details.baseClasses = [
1005
1009
  types_1.ClassType.cloneAsInstantiable(concreteVarType),
@@ -1081,7 +1085,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
1081
1085
  isCallable = true;
1082
1086
  }
1083
1087
  else {
1084
- isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__', 16 /* SkipInstanceMembers */);
1088
+ isCallable = !!(0, typeUtils_1.lookUpClassMember)(concreteVarType, '__call__', 16 /* MemberAccessFlags.SkipInstanceMembers */);
1085
1089
  }
1086
1090
  }
1087
1091
  if (isCallable) {
@@ -1130,7 +1134,16 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
1130
1134
  if ((0, types_1.isInstantiableClass)(concreteFilterType)) {
1131
1135
  const filterMetaclass = concreteFilterType.details.effectiveMetaclass;
1132
1136
  if (filterMetaclass && (0, types_1.isInstantiableClass)(filterMetaclass)) {
1133
- const isMetaclassOverlap = evaluator.assignType(metaclassType, types_1.ClassType.cloneAsInstance(filterMetaclass));
1137
+ let isMetaclassOverlap = evaluator.assignType(metaclassType, types_1.ClassType.cloneAsInstance(filterMetaclass));
1138
+ // Handle the special case where the metaclass for the filter is type.
1139
+ // This will normally be treated as type[Any], which is compatible with
1140
+ // any metaclass, but we specifically want to treat type as the class
1141
+ // type[object] in this case.
1142
+ if (types_1.ClassType.isBuiltIn(filterMetaclass, 'type') && !filterMetaclass.isTypeArgumentExplicit) {
1143
+ if (!types_1.ClassType.isBuiltIn(metaclassType, 'type')) {
1144
+ isMetaclassOverlap = false;
1145
+ }
1146
+ }
1134
1147
  if (isMetaclassOverlap) {
1135
1148
  if (isPositiveTest) {
1136
1149
  filteredTypes.push(filterType);
@@ -1173,7 +1186,7 @@ function narrowTypeForIsInstance(evaluator, type, classTypeList, isInstanceCheck
1173
1186
  if (evaluator.assignType(varType, (0, typeUtils_1.convertToInstance)(concreteFilterType),
1174
1187
  /* diag */ undefined,
1175
1188
  /* destTypeVarContext */ undefined,
1176
- /* srcTypeVarContext */ undefined, 512 /* IgnoreTypeVarScope */)) {
1189
+ /* srcTypeVarContext */ undefined, 512 /* AssignTypeFlags.IgnoreTypeVarScope */)) {
1177
1190
  // If the filter type is a Callable, use the original type. If the
1178
1191
  // filter type is a callback protocol, use the filter type.
1179
1192
  if ((0, types_1.isFunction)(filterType)) {
@@ -1572,6 +1585,7 @@ exports.narrowTypeForDiscriminatedTupleComparison = narrowTypeForDiscriminatedTu
1572
1585
  // literal value.
1573
1586
  function narrowTypeForDiscriminatedLiteralFieldComparison(evaluator, referenceType, memberName, literalType, isPositiveTest) {
1574
1587
  const narrowedType = (0, typeUtils_1.mapSubtypes)(referenceType, (subtype) => {
1588
+ var _a;
1575
1589
  let memberInfo;
1576
1590
  if ((0, types_1.isClassInstance)(subtype)) {
1577
1591
  memberInfo = (0, typeUtils_1.lookUpObjectMember)(subtype, memberName);
@@ -1584,7 +1598,7 @@ function narrowTypeForDiscriminatedLiteralFieldComparison(evaluator, referenceTy
1584
1598
  // Handle the case where the field is a property
1585
1599
  // that has a declared literal return type for its getter.
1586
1600
  if ((0, types_1.isClassInstance)(subtype) && (0, types_1.isClassInstance)(memberType) && (0, typeUtils_1.isProperty)(memberType)) {
1587
- const getterType = memberType.fgetFunction;
1601
+ const getterType = (_a = memberType.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType;
1588
1602
  if (getterType && getterType.details.declaredReturnType) {
1589
1603
  const getterReturnType = types_1.FunctionType.getSpecializedReturnType(getterType);
1590
1604
  if (getterReturnType) {
@@ -1787,14 +1801,14 @@ exports.enumerateLiteralsForType = enumerateLiteralsForType;
1787
1801
  function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allowIntersections) {
1788
1802
  return evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (subtype) => {
1789
1803
  switch (subtype.category) {
1790
- case 4 /* Function */:
1791
- case 5 /* OverloadedFunction */: {
1804
+ case 4 /* TypeCategory.Function */:
1805
+ case 5 /* TypeCategory.OverloadedFunction */: {
1792
1806
  return isPositiveTest ? subtype : undefined;
1793
1807
  }
1794
- case 7 /* Module */: {
1808
+ case 7 /* TypeCategory.Module */: {
1795
1809
  return isPositiveTest ? undefined : subtype;
1796
1810
  }
1797
- case 6 /* Class */: {
1811
+ case 6 /* TypeCategory.Class */: {
1798
1812
  if ((0, typeUtils_1.isNoneInstance)(subtype)) {
1799
1813
  return isPositiveTest ? undefined : subtype;
1800
1814
  }
@@ -1802,7 +1816,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
1802
1816
  return isPositiveTest ? subtype : undefined;
1803
1817
  }
1804
1818
  // See if the object is callable.
1805
- const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* SkipInstanceMembers */);
1819
+ const callMemberType = (0, typeUtils_1.lookUpClassMember)(subtype, '__call__', 16 /* MemberAccessFlags.SkipInstanceMembers */);
1806
1820
  if (!callMemberType) {
1807
1821
  if (!isPositiveTest) {
1808
1822
  return subtype;
@@ -1813,7 +1827,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
1813
1827
  // new intersection type.
1814
1828
  const className = `<callable subtype of ${subtype.details.name}>`;
1815
1829
  const fileInfo = (0, analyzerNodeInfo_1.getFileInfo)(errorNode);
1816
- let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* None */, ParseTreeUtils.getTypeSourceId(errorNode),
1830
+ let newClassType = types_1.ClassType.createInstantiable(className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.filePath, 0 /* ClassTypeFlags.None */, ParseTreeUtils.getTypeSourceId(errorNode),
1817
1831
  /* declaredMetaclass */ undefined, subtype.details.effectiveMetaclass, subtype.details.docString);
1818
1832
  newClassType.details.baseClasses = [types_1.ClassType.cloneAsInstantiable(subtype)];
1819
1833
  (0, typeUtils_1.computeMroLinearization)(newClassType);
@@ -1821,7 +1835,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
1821
1835
  // Add a __call__ method to the new class.
1822
1836
  const callMethod = types_1.FunctionType.createSynthesizedInstance('__call__');
1823
1837
  const selfParam = {
1824
- category: 0 /* Simple */,
1838
+ category: 0 /* ParameterCategory.Simple */,
1825
1839
  name: 'self',
1826
1840
  type: types_1.ClassType.cloneAsInstance(newClassType),
1827
1841
  hasDeclaredType: true,
@@ -1829,7 +1843,7 @@ function narrowTypeForCallable(evaluator, type, isPositiveTest, errorNode, allow
1829
1843
  types_1.FunctionType.addParameter(callMethod, selfParam);
1830
1844
  types_1.FunctionType.addDefaultParameters(callMethod);
1831
1845
  callMethod.details.declaredReturnType = types_1.UnknownType.create();
1832
- newClassType.details.fields.set('__call__', symbol_1.Symbol.createWithType(4 /* ClassMember */, callMethod));
1846
+ newClassType.details.fields.set('__call__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, callMethod));
1833
1847
  return types_1.ClassType.cloneAsInstance(newClassType);
1834
1848
  }
1835
1849
  return undefined;