@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
@@ -14,7 +14,11 @@
14
14
  */
15
15
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
16
  if (k2 === undefined) k2 = k;
17
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
18
22
  }) : (function(o, m, k, k2) {
19
23
  if (k2 === undefined) k2 = k;
20
24
  o[k2] = m[k];
@@ -216,14 +220,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
216
220
  // Report any unknown or missing parameter types.
217
221
  node.parameters.forEach((param, index) => {
218
222
  if (param.name) {
219
- if (param.category === 0 /* Simple */ && index >= paramDetails.positionOnlyParamCount) {
223
+ if (param.category === 0 /* ParameterCategory.Simple */ && index >= paramDetails.positionOnlyParamCount) {
220
224
  keywordNames.add(param.name.value);
221
225
  }
222
226
  // Determine whether this is a P.args parameter.
223
- if (param.category === 1 /* ArgsList */) {
227
+ if (param.category === 1 /* ParameterCategory.ArgsList */) {
224
228
  const annotationExpr = param.typeAnnotation || param.typeAnnotationComment;
225
229
  if (annotationExpr &&
226
- annotationExpr.nodeType === 35 /* MemberAccess */ &&
230
+ annotationExpr.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
227
231
  annotationExpr.memberName.value === 'args') {
228
232
  const baseType = this._evaluator.getType(annotationExpr.leftExpression);
229
233
  if (baseType && (0, types_1.isTypeVar)(baseType) && baseType.details.isParamSpec) {
@@ -231,11 +235,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
231
235
  }
232
236
  }
233
237
  }
234
- else if (param.category === 2 /* KwargsDict */) {
238
+ else if (param.category === 2 /* ParameterCategory.KwargsDict */) {
235
239
  sawParamSpecArgs = false;
236
240
  }
237
241
  }
238
- if (param.name && param.category === 0 /* Simple */ && sawParamSpecArgs) {
242
+ if (param.name && param.category === 0 /* ParameterCategory.Simple */ && sawParamSpecArgs) {
239
243
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.namedParamAfterParamSpecArgs().format({ name: param.name.value }), param.name);
240
244
  }
241
245
  // Allow unknown and missing param types if the param is named '_'.
@@ -297,7 +301,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
297
301
  // Check for invalid use of ParamSpec P.args and P.kwargs.
298
302
  const paramSpecParams = functionTypeResult.functionType.details.parameters.filter((param) => {
299
303
  if (param.typeAnnotation && (0, types_1.isTypeVar)(param.type) && (0, types_1.isParamSpec)(param.type)) {
300
- if (param.category !== 0 /* Simple */ && param.name && param.type.paramSpecAccess) {
304
+ if (param.category !== 0 /* ParameterCategory.Simple */ && param.name && param.type.paramSpecAccess) {
301
305
  return true;
302
306
  }
303
307
  }
@@ -335,7 +339,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
335
339
  const exemptMethods = ['__init__', '__new__'];
336
340
  if (containingClassNode &&
337
341
  (0, types_1.isTypeVar)(paramType) &&
338
- paramType.details.declaredVariance === 3 /* Covariant */ &&
342
+ paramType.details.declaredVariance === 3 /* Variance.Covariant */ &&
339
343
  !paramType.details.isSynthesized &&
340
344
  !exemptMethods.some((name) => name === functionTypeResult.functionType.details.name)) {
341
345
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.paramTypeCovariant(), annotationNode);
@@ -387,7 +391,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
387
391
  // This signifies an incomplete stub file that obscures type errors.
388
392
  if (this._fileInfo.isStubFile && node.name.value === '__getattr__') {
389
393
  const scope = (0, scopeUtils_1.getScopeForNode)(node);
390
- if ((scope === null || scope === void 0 ? void 0 : scope.type) === 3 /* Module */) {
394
+ if ((scope === null || scope === void 0 ? void 0 : scope.type) === 3 /* ScopeType.Module */) {
391
395
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportIncompleteStub, diagnosticRules_1.DiagnosticRule.reportIncompleteStub, localize_1.Localizer.Diagnostic.stubUsesGetAttr(), node.name);
392
396
  }
393
397
  }
@@ -449,8 +453,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
449
453
  this._validateStandardCollectionInstantiation(node);
450
454
  if (this._fileInfo.diagnosticRuleSet.reportUnusedCallResult !== 'none' ||
451
455
  this._fileInfo.diagnosticRuleSet.reportUnusedCoroutine !== 'none') {
452
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* StatementList */) {
453
- const isRevealTypeCall = node.leftExpression.nodeType === 38 /* Name */ && node.leftExpression.value === 'reveal_type';
456
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* ParseNodeType.StatementList */) {
457
+ const isRevealTypeCall = node.leftExpression.nodeType === 38 /* ParseNodeType.Name */ && node.leftExpression.value === 'reveal_type';
454
458
  const returnType = this._evaluator.getType(node);
455
459
  if (!isRevealTypeCall && returnType && this._isTypeValidForUnusedValueTest(returnType)) {
456
460
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnusedCallResult, diagnosticRules_1.DiagnosticRule.reportUnusedCallResult, localize_1.Localizer.Diagnostic.unusedCallResult().format({
@@ -467,8 +471,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
467
471
  visitAwait(node) {
468
472
  var _a;
469
473
  if (this._fileInfo.diagnosticRuleSet.reportUnusedCallResult !== 'none') {
470
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* StatementList */ &&
471
- node.expression.nodeType === 9 /* Call */) {
474
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* ParseNodeType.StatementList */ &&
475
+ node.expression.nodeType === 9 /* ParseNodeType.Call */) {
472
476
  const returnType = this._evaluator.getType(node);
473
477
  if (returnType && this._isTypeValidForUnusedValueTest(returnType)) {
474
478
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnusedCallResult, diagnosticRules_1.DiagnosticRule.reportUnusedCallResult, localize_1.Localizer.Diagnostic.unusedCallResult().format({
@@ -545,7 +549,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
545
549
  // at runtime in this case.
546
550
  if ((enclosingFunctionNode === null || enclosingFunctionNode === void 0 ? void 0 : enclosingFunctionNode.isAsync) && node.returnExpression) {
547
551
  const functionDecl = AnalyzerNodeInfo.getDeclaration(enclosingFunctionNode);
548
- if ((functionDecl === null || functionDecl === void 0 ? void 0 : functionDecl.type) === 5 /* Function */ && functionDecl.isGenerator) {
552
+ if ((functionDecl === null || functionDecl === void 0 ? void 0 : functionDecl.type) === 5 /* DeclarationType.Function */ && functionDecl.isGenerator) {
549
553
  this._evaluator.addError(localize_1.Localizer.Diagnostic.returnInAsyncGenerator(), node.returnExpression);
550
554
  }
551
555
  }
@@ -558,7 +562,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
558
562
  let diagAddendum = new diagnostic_1.DiagnosticAddendum();
559
563
  let returnTypeMatches = false;
560
564
  if (this._evaluator.assignType(declaredReturnType, returnTypeResult.type, diagAddendum, new typeVarContext_1.TypeVarContext(),
561
- /* srcTypeVarContext */ undefined, 64 /* AllowBoolTypeGuard */)) {
565
+ /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.AllowBoolTypeGuard */)) {
562
566
  returnTypeMatches = true;
563
567
  }
564
568
  else {
@@ -581,7 +585,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
581
585
  const adjustedReturnType = (0, typeUtils_1.applySolvedTypeVars)(declaredReturnType, typeVarContext);
582
586
  if (this._evaluator.assignType(adjustedReturnType, returnTypeResult.type, diagAddendum,
583
587
  /* destTypeVarContext */ undefined,
584
- /* srcTypeVarContext */ undefined, 64 /* AllowBoolTypeGuard */)) {
588
+ /* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.AllowBoolTypeGuard */)) {
585
589
  returnTypeMatches = true;
586
590
  }
587
591
  }
@@ -719,14 +723,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
719
723
  }
720
724
  }
721
725
  // If this isn't a class or global scope, explicit type aliases are not allowed.
722
- if (node.leftExpression.nodeType === 54 /* TypeAnnotation */) {
726
+ if (node.leftExpression.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
723
727
  const annotationType = this._evaluator.getTypeOfAnnotation(node.leftExpression.typeAnnotation);
724
728
  if ((0, types_1.isClassInstance)(annotationType) && types_1.ClassType.isBuiltIn(annotationType, 'TypeAlias')) {
725
729
  const scope = (0, scopeUtils_1.getScopeForNode)(node);
726
730
  if (scope) {
727
- if (scope.type !== 2 /* Class */ &&
728
- scope.type !== 3 /* Module */ &&
729
- scope.type !== 4 /* Builtin */) {
731
+ if (scope.type !== 2 /* ScopeType.Class */ &&
732
+ scope.type !== 3 /* ScopeType.Module */ &&
733
+ scope.type !== 4 /* ScopeType.Builtin */) {
730
734
  this._evaluator.addError(localize_1.Localizer.Diagnostic.typeAliasNotInModuleOrClass(), node.leftExpression.typeAnnotation);
731
735
  }
732
736
  }
@@ -756,7 +760,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
756
760
  const tupleLength = subtype.tupleTypeArguments.length;
757
761
  if (node.items.length === 1 &&
758
762
  !node.trailingComma &&
759
- node.items[0].argumentCategory === 0 /* Simple */ &&
763
+ node.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */ &&
760
764
  !node.items[0].name) {
761
765
  const subscriptType = this._evaluator.getType(node.items[0].valueExpression);
762
766
  if (subscriptType &&
@@ -779,23 +783,23 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
779
783
  return true;
780
784
  }
781
785
  visitBinaryOperation(node) {
782
- if (node.operator === 36 /* And */ || node.operator === 37 /* Or */) {
786
+ if (node.operator === 36 /* OperatorType.And */ || node.operator === 37 /* OperatorType.Or */) {
783
787
  this._validateConditionalIsBool(node.leftExpression);
784
788
  this._validateConditionalIsBool(node.rightExpression);
785
789
  }
786
- if (node.operator === 12 /* Equals */ || node.operator === 28 /* NotEquals */) {
790
+ if (node.operator === 12 /* OperatorType.Equals */ || node.operator === 28 /* OperatorType.NotEquals */) {
787
791
  // Don't apply this rule if it's within an assert.
788
792
  if (!ParseTreeUtils.isWithinAssertExpression(node)) {
789
793
  this._validateComparisonTypes(node);
790
794
  }
791
795
  }
792
- else if (node.operator === 39 /* Is */ || node.operator === 40 /* IsNot */) {
796
+ else if (node.operator === 39 /* OperatorType.Is */ || node.operator === 40 /* OperatorType.IsNot */) {
793
797
  // Don't apply this rule if it's within an assert.
794
798
  if (!ParseTreeUtils.isWithinAssertExpression(node)) {
795
799
  this._validateComparisonTypesForIsOperator(node);
796
800
  }
797
801
  }
798
- else if (node.operator === 41 /* In */ || node.operator === 42 /* NotIn */) {
802
+ else if (node.operator === 41 /* OperatorType.In */ || node.operator === 42 /* OperatorType.NotIn */) {
799
803
  // Don't apply this rule if it's within an assert.
800
804
  if (!ParseTreeUtils.isWithinAssertExpression(node)) {
801
805
  this._validateContainmentTypes(node);
@@ -817,7 +821,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
817
821
  return true;
818
822
  }
819
823
  visitUnaryOperation(node) {
820
- if (node.operator === 38 /* Not */) {
824
+ if (node.operator === 38 /* OperatorType.Not */) {
821
825
  this._validateConditionalIsBool(node.expression);
822
826
  }
823
827
  this._evaluator.getType(node);
@@ -837,22 +841,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
837
841
  if (this._fileInfo.executionEnvironment.pythonVersion < pythonVersion_1.PythonVersion.V3_12) {
838
842
  let curNode = node;
839
843
  while (curNode) {
840
- if (curNode.nodeType === 27 /* FormatString */) {
844
+ if (curNode.nodeType === 27 /* ParseNodeType.FormatString */) {
841
845
  fStringContainers.push(curNode);
842
846
  }
843
847
  curNode = curNode.parent;
844
848
  }
845
849
  }
846
850
  for (const stringNode of node.strings) {
847
- const stringTokens = stringNode.nodeType === 49 /* String */ ? [stringNode.token] : stringNode.middleTokens;
851
+ const stringTokens = stringNode.nodeType === 49 /* ParseNodeType.String */ ? [stringNode.token] : stringNode.middleTokens;
848
852
  stringTokens.forEach((token) => {
849
853
  const unescapedResult = (0, stringTokenUtils_1.getUnescapedString)(token);
850
854
  let start = token.start;
851
- if (token.type === 5 /* String */) {
855
+ if (token.type === 5 /* TokenType.String */) {
852
856
  start += token.prefixLength + token.quoteMarkLength;
853
857
  }
854
858
  unescapedResult.unescapeErrors.forEach((error) => {
855
- if (error.errorType === 0 /* InvalidEscapeSequence */) {
859
+ if (error.errorType === 0 /* UnescapeErrorType.InvalidEscapeSequence */) {
856
860
  this._evaluator.addDiagnosticForTextRange(this._fileInfo, this._fileInfo.diagnosticRuleSet.reportInvalidStringEscapeSequence, diagnosticRules_1.DiagnosticRule.reportInvalidStringEscapeSequence, localize_1.Localizer.Diagnostic.stringUnsupportedEscape(), { start: start + error.offset, length: error.length });
857
861
  }
858
862
  });
@@ -867,7 +871,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
867
871
  // Prior to Python 3.12, it was not allowed to nest strings that
868
872
  // used the same quote scheme within an f-string.
869
873
  if (fStringContainers.length > 0) {
870
- const quoteTypeMask = 1 /* SingleQuote */ | 2 /* DoubleQuote */ | 4 /* Triplicate */;
874
+ const quoteTypeMask = 1 /* StringTokenFlags.SingleQuote */ | 2 /* StringTokenFlags.DoubleQuote */ | 4 /* StringTokenFlags.Triplicate */;
871
875
  if (fStringContainers.some((fStringContainer) => (fStringContainer.token.flags & quoteTypeMask) === (stringNode.token.flags & quoteTypeMask))) {
872
876
  this._evaluator.addError(localize_1.Localizer.Diagnostic.formatStringNestedQuote(), stringNode);
873
877
  }
@@ -966,7 +970,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
966
970
  const importInfo = AnalyzerNodeInfo.getImportInfo(node.module);
967
971
  if (importInfo &&
968
972
  importInfo.isImportFound &&
969
- importInfo.importType !== 2 /* Local */ &&
973
+ importInfo.importType !== 2 /* ImportType.Local */ &&
970
974
  !this._fileInfo.isStubFile) {
971
975
  this._evaluator.addDiagnosticForTextRange(this._fileInfo, this._fileInfo.diagnosticRuleSet.reportWildcardImportFromLibrary, diagnosticRules_1.DiagnosticRule.reportWildcardImportFromLibrary, localize_1.Localizer.Diagnostic.wildcardLibraryImport(), node.wildcardToken || node);
972
976
  }
@@ -999,7 +1003,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
999
1003
  break;
1000
1004
  }
1001
1005
  let isImportFromTyping = false;
1002
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 22 /* ImportFrom */) {
1006
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 22 /* ParseNodeType.ImportFrom */) {
1003
1007
  if (node.parent.module.leadingDots === 0 && node.parent.module.nameParts.length === 1) {
1004
1008
  if (node.parent.module.nameParts[0].value === 'typing') {
1005
1009
  isImportFromTyping = true;
@@ -1074,7 +1078,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1074
1078
  _addMissingModuleSourceDiagnosticIfNeeded(importResult, node) {
1075
1079
  if (importResult.isNativeLib ||
1076
1080
  !importResult.isStubFile ||
1077
- importResult.importType === 0 /* BuiltIn */ ||
1081
+ importResult.importType === 0 /* ImportType.BuiltIn */ ||
1078
1082
  !importResult.nonStubImportResult ||
1079
1083
  importResult.nonStubImportResult.isImportFound) {
1080
1084
  return;
@@ -1124,15 +1128,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1124
1128
  }
1125
1129
  }
1126
1130
  _reportUnnecessaryConditionExpression(expression) {
1127
- if (expression.nodeType === 7 /* BinaryOperation */) {
1128
- if (expression.operator === 36 /* And */ || expression.operator === 37 /* Or */) {
1131
+ if (expression.nodeType === 7 /* ParseNodeType.BinaryOperation */) {
1132
+ if (expression.operator === 36 /* OperatorType.And */ || expression.operator === 37 /* OperatorType.Or */) {
1129
1133
  this._reportUnnecessaryConditionExpression(expression.leftExpression);
1130
1134
  this._reportUnnecessaryConditionExpression(expression.rightExpression);
1131
1135
  }
1132
1136
  return;
1133
1137
  }
1134
- else if (expression.nodeType === 55 /* UnaryOperation */) {
1135
- if (expression.operator === 38 /* Not */) {
1138
+ else if (expression.nodeType === 55 /* ParseNodeType.UnaryOperation */) {
1139
+ if (expression.operator === 38 /* OperatorType.Not */) {
1136
1140
  this._reportUnnecessaryConditionExpression(expression.expression);
1137
1141
  }
1138
1142
  return;
@@ -1162,30 +1166,30 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1162
1166
  return;
1163
1167
  }
1164
1168
  const simpleExpressionTypes = [
1165
- 55 /* UnaryOperation */,
1166
- 7 /* BinaryOperation */,
1167
- 40 /* Number */,
1168
- 11 /* Constant */,
1169
- 38 /* Name */,
1170
- 52 /* Tuple */,
1169
+ 55 /* ParseNodeType.UnaryOperation */,
1170
+ 7 /* ParseNodeType.BinaryOperation */,
1171
+ 40 /* ParseNodeType.Number */,
1172
+ 11 /* ParseNodeType.Constant */,
1173
+ 38 /* ParseNodeType.Name */,
1174
+ 52 /* ParseNodeType.Tuple */,
1171
1175
  ];
1172
1176
  let reportAsUnused = false;
1173
1177
  if (simpleExpressionTypes.some((nodeType) => nodeType === node.nodeType)) {
1174
1178
  reportAsUnused = true;
1175
1179
  }
1176
- else if (node.nodeType === 31 /* List */ ||
1177
- node.nodeType === 45 /* Set */ ||
1178
- node.nodeType === 15 /* Dictionary */) {
1180
+ else if (node.nodeType === 31 /* ParseNodeType.List */ ||
1181
+ node.nodeType === 45 /* ParseNodeType.Set */ ||
1182
+ node.nodeType === 15 /* ParseNodeType.Dictionary */) {
1179
1183
  // Exclude comprehensions.
1180
- if (!node.entries.some((entry) => entry.nodeType === 32 /* ListComprehension */)) {
1184
+ if (!node.entries.some((entry) => entry.nodeType === 32 /* ParseNodeType.ListComprehension */)) {
1181
1185
  reportAsUnused = true;
1182
1186
  }
1183
1187
  }
1184
1188
  if (reportAsUnused &&
1185
1189
  this._fileInfo.ipythonMode === sourceFile_1.IPythonMode.CellDocs &&
1186
- ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* StatementList */ &&
1190
+ ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* ParseNodeType.StatementList */ &&
1187
1191
  node.parent.statements[node.parent.statements.length - 1] === node &&
1188
- ((_b = node.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 36 /* Module */ &&
1192
+ ((_b = node.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 36 /* ParseNodeType.Module */ &&
1189
1193
  node.parent.parent.statements[node.parent.parent.statements.length - 1] === node.parent) {
1190
1194
  // Exclude an expression at the end of a notebook cell, as that is treated as
1191
1195
  // the cell's value.
@@ -1262,7 +1266,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1262
1266
  const narrowedType = (0, typeGuards_1.narrowTypeForContainerElementType)(this._evaluator, leftType, this._evaluator.makeTopLevelTypeVarsConcrete(elementType));
1263
1267
  if ((0, types_1.isNever)(narrowedType)) {
1264
1268
  const getMessage = () => {
1265
- return node.operator === 41 /* In */
1269
+ return node.operator === 41 /* OperatorType.In */
1266
1270
  ? localize_1.Localizer.Diagnostic.containmentAlwaysFalse()
1267
1271
  : localize_1.Localizer.Diagnostic.containmentAlwaysTrue();
1268
1272
  };
@@ -1291,7 +1295,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1291
1295
  }
1292
1296
  });
1293
1297
  const getMessage = () => {
1294
- return node.operator === 39 /* Is */
1298
+ return node.operator === 39 /* OperatorType.Is */
1295
1299
  ? localize_1.Localizer.Diagnostic.comparisonAlwaysFalse()
1296
1300
  : localize_1.Localizer.Diagnostic.comparisonAlwaysTrue();
1297
1301
  };
@@ -1307,7 +1311,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1307
1311
  _validateComparisonTypes(node) {
1308
1312
  let rightExpression = node.rightExpression;
1309
1313
  // Check for chained comparisons.
1310
- if (rightExpression.nodeType === 7 /* BinaryOperation */ &&
1314
+ if (rightExpression.nodeType === 7 /* ParseNodeType.BinaryOperation */ &&
1311
1315
  !rightExpression.parenthesized &&
1312
1316
  ParseTreeUtils.operatorSupportsChaining(rightExpression.operator)) {
1313
1317
  // Use the left side of the right expression for comparison purposes.
@@ -1322,7 +1326,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1322
1326
  return;
1323
1327
  }
1324
1328
  const getMessage = () => {
1325
- return node.operator === 12 /* Equals */
1329
+ return node.operator === 12 /* OperatorType.Equals */
1326
1330
  ? localize_1.Localizer.Diagnostic.comparisonAlwaysFalse()
1327
1331
  : localize_1.Localizer.Diagnostic.comparisonAlwaysTrue();
1328
1332
  };
@@ -1408,7 +1412,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1408
1412
  // Does the class have an operator overload for eq?
1409
1413
  const metaclass = leftType.details.effectiveMetaclass;
1410
1414
  if (metaclass && (0, types_1.isClass)(metaclass)) {
1411
- if ((0, typeUtils_1.lookUpClassMember)(metaclass, '__eq__', 4 /* SkipObjectBaseClass */)) {
1415
+ if ((0, typeUtils_1.lookUpClassMember)(metaclass, '__eq__', 4 /* MemberAccessFlags.SkipObjectBaseClass */)) {
1412
1416
  return true;
1413
1417
  }
1414
1418
  }
@@ -1433,7 +1437,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1433
1437
  }
1434
1438
  }
1435
1439
  // Does the class have an operator overload for eq?
1436
- const eqMethod = (0, typeUtils_1.lookUpClassMember)(types_1.ClassType.cloneAsInstantiable(leftType), '__eq__', 4 /* SkipObjectBaseClass */);
1440
+ const eqMethod = (0, typeUtils_1.lookUpClassMember)(types_1.ClassType.cloneAsInstantiable(leftType), '__eq__', 4 /* MemberAccessFlags.SkipObjectBaseClass */);
1437
1441
  if (eqMethod) {
1438
1442
  // If this is a synthesized method for a dataclass, we can assume
1439
1443
  // that other dataclass types will not be comparable.
@@ -1509,7 +1513,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1509
1513
  let constructorClass;
1510
1514
  if (types_1.FunctionType.isInstanceMethod(type) && node.name.value === '__init__') {
1511
1515
  const containingClassNode = ParseTreeUtils.getEnclosingClassOrFunction(node);
1512
- if (containingClassNode && containingClassNode.nodeType === 10 /* Class */) {
1516
+ if (containingClassNode && containingClassNode.nodeType === 10 /* ParseNodeType.Class */) {
1513
1517
  const classType = this._evaluator.getTypeOfClass(containingClassNode);
1514
1518
  if (classType && (0, types_1.isClass)(classType.classType)) {
1515
1519
  constructorClass = classType.classType;
@@ -1523,14 +1527,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1523
1527
  if (nameType && (0, types_1.isTypeVar)(nameType) && !nameType.details.isSynthesizedSelf) {
1524
1528
  // Does this name refer to a TypeVar that is scoped to this function?
1525
1529
  if (nameType.scopeId === ParseTreeUtils.getScopeIdForNode(node)) {
1526
- // We exempt constrained TypeVars, bound TypeVars that are type arguments of
1530
+ // We exempt constrained TypeVars, TypeVars that are type arguments of
1527
1531
  // other types, and ParamSpecs. There are legitimate uses for singleton
1528
1532
  // instances in these particular cases.
1529
1533
  let isExempt = nameType.details.constraints.length > 0 ||
1530
1534
  !!nameType.details.defaultType ||
1531
- (exemptBoundTypeVar &&
1532
- nameType.details.boundType !== undefined &&
1533
- subscriptIndex !== undefined) ||
1535
+ (exemptBoundTypeVar && subscriptIndex !== undefined) ||
1534
1536
  (0, types_1.isParamSpec)(nameType);
1535
1537
  if (!isExempt && baseExpression && subscriptIndex !== undefined) {
1536
1538
  // Is this a type argument for a generic type alias? If so,
@@ -1544,10 +1546,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1544
1546
  }
1545
1547
  }
1546
1548
  const existingEntry = localTypeVarUsage.get(nameType.details.name);
1547
- const isParamTypeWithEllipsisUsage = ((_a = curParamNode === null || curParamNode === void 0 ? void 0 : curParamNode.defaultValue) === null || _a === void 0 ? void 0 : _a.nodeType) === 18 /* Ellipsis */;
1549
+ const isParamTypeWithEllipsisUsage = ((_a = curParamNode === null || curParamNode === void 0 ? void 0 : curParamNode.defaultValue) === null || _a === void 0 ? void 0 : _a.nodeType) === 18 /* ParseNodeType.Ellipsis */;
1548
1550
  if (!existingEntry) {
1549
1551
  localTypeVarUsage.set(nameType.details.name, {
1550
1552
  nodes: [nameNode],
1553
+ typeVar: nameType,
1551
1554
  paramTypeUsageCount: curParamNode !== undefined ? 1 : 0,
1552
1555
  paramTypeWithEllipsisUsageCount: isParamTypeWithEllipsisUsage ? 1 : 0,
1553
1556
  returnTypeUsageCount: curParamNode === undefined ? 1 : 0,
@@ -1575,10 +1578,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1575
1578
  // this constructor method?
1576
1579
  if (constructorClass && nameType.scopeId === constructorClass.details.typeVarScopeId) {
1577
1580
  const existingEntry = classTypeVarUsage.get(nameType.details.name);
1578
- const isParamTypeWithEllipsisUsage = ((_d = curParamNode === null || curParamNode === void 0 ? void 0 : curParamNode.defaultValue) === null || _d === void 0 ? void 0 : _d.nodeType) === 18 /* Ellipsis */;
1581
+ const isParamTypeWithEllipsisUsage = ((_d = curParamNode === null || curParamNode === void 0 ? void 0 : curParamNode.defaultValue) === null || _d === void 0 ? void 0 : _d.nodeType) === 18 /* ParseNodeType.Ellipsis */;
1579
1582
  const isExempt = !!nameType.details.defaultType;
1580
1583
  if (!existingEntry) {
1581
1584
  classTypeVarUsage.set(nameType.details.name, {
1585
+ typeVar: nameType,
1582
1586
  nodes: [nameNode],
1583
1587
  paramTypeUsageCount: curParamNode !== undefined ? 1 : 0,
1584
1588
  paramTypeWithEllipsisUsageCount: isParamTypeWithEllipsisUsage ? 1 : 0,
@@ -1622,9 +1626,23 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1622
1626
  var _a;
1623
1627
  // Report error for local type variable that appears only once.
1624
1628
  if (usage.nodes.length === 1 && !usage.isExempt) {
1629
+ let altTypeText;
1630
+ if (usage.typeVar.details.isVariadic) {
1631
+ altTypeText = '"tuple[object, ...]"';
1632
+ }
1633
+ else if (usage.typeVar.details.boundType) {
1634
+ altTypeText = `"${this._evaluator.printType((0, typeUtils_1.convertToInstance)(usage.typeVar.details.boundType))}"`;
1635
+ }
1636
+ else {
1637
+ altTypeText = '"object"';
1638
+ }
1639
+ const diag = new diagnostic_1.DiagnosticAddendum();
1640
+ diag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarUnnecessarySuggestion().format({
1641
+ type: altTypeText,
1642
+ }));
1625
1643
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportInvalidTypeVarUse, diagnosticRules_1.DiagnosticRule.reportInvalidTypeVarUse, localize_1.Localizer.Diagnostic.typeVarUsedOnlyOnce().format({
1626
1644
  name: usage.nodes[0].value,
1627
- }), usage.nodes[0]);
1645
+ }) + diag.getString(), usage.nodes[0]);
1628
1646
  }
1629
1647
  // Report error for local type variable that appears in return type
1630
1648
  // (but not as a top-level TypeVar within a union) and appears only
@@ -1694,7 +1712,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1694
1712
  returnType &&
1695
1713
  !this._evaluator.assignType(returnType, prevReturnType,
1696
1714
  /* diag */ undefined, new typeVarContext_1.TypeVarContext(),
1697
- /* srcTypeVarContext */ undefined, 8 /* SkipSolveTypeVars */ | 512 /* IgnoreTypeVarScope */)) {
1715
+ /* srcTypeVarContext */ undefined, 8 /* AssignTypeFlags.SkipSolveTypeVars */ | 512 /* AssignTypeFlags.IgnoreTypeVarScope */)) {
1698
1716
  const altNode = this._findNodeForOverload(node, prevOverload);
1699
1717
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportOverlappingOverload, diagnosticRules_1.DiagnosticRule.reportOverlappingOverload, localize_1.Localizer.Diagnostic.overloadReturnTypeMismatch().format({
1700
1718
  name: node.name.value,
@@ -1715,7 +1733,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1715
1733
  return undefined;
1716
1734
  }
1717
1735
  for (const decl of decls) {
1718
- if (decl.type === 5 /* Function */) {
1736
+ if (decl.type === 5 /* DeclarationType.Function */) {
1719
1737
  const functionType = this._evaluator.getTypeOfFunction(decl.node);
1720
1738
  if ((functionType === null || functionType === void 0 ? void 0 : functionType.functionType) === overloadType) {
1721
1739
  return decl.node;
@@ -1735,22 +1753,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1735
1753
  }
1736
1754
  return this._evaluator.assignType(functionType, prevOverload,
1737
1755
  /* diag */ undefined, new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType)),
1738
- /* srcTypeVarContext */ undefined, 32 /* SkipFunctionReturnTypeCheck */ | 16 /* OverloadOverlapCheck */);
1756
+ /* srcTypeVarContext */ undefined, 32 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */ | 16 /* AssignTypeFlags.OverloadOverlapCheck */);
1739
1757
  }
1740
1758
  _isLegalOverloadImplementation(overload, implementation, diag) {
1741
1759
  var _a;
1742
1760
  const implTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(implementation));
1743
1761
  const overloadTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(overload));
1744
1762
  // First check the parameters to see if they are assignable.
1745
- let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 32 /* SkipFunctionReturnTypeCheck */ |
1746
- 2 /* ReverseTypeVarMatching */ |
1747
- 256 /* SkipSelfClsTypeCheck */);
1763
+ let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 32 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */ |
1764
+ 2 /* AssignTypeFlags.ReverseTypeVarMatching */ |
1765
+ 256 /* AssignTypeFlags.SkipSelfClsTypeCheck */);
1748
1766
  // Now check the return types.
1749
1767
  const overloadReturnType = (_a = overload.details.declaredReturnType) !== null && _a !== void 0 ? _a : this._evaluator.getFunctionInferredReturnType(overload);
1750
1768
  const implementationReturnType = (0, typeUtils_1.applySolvedTypeVars)(implementation.details.declaredReturnType || this._evaluator.getFunctionInferredReturnType(implementation), implTypeVarContext);
1751
1769
  const returnDiag = new diagnostic_1.DiagnosticAddendum();
1752
1770
  if (!(0, types_1.isNever)(overloadReturnType) &&
1753
- !this._evaluator.assignType(implementationReturnType, overloadReturnType, returnDiag.createAddendum(), implTypeVarContext, overloadTypeVarContext, 8 /* SkipSolveTypeVars */)) {
1771
+ !this._evaluator.assignType(implementationReturnType, overloadReturnType, returnDiag.createAddendum(), implTypeVarContext, overloadTypeVarContext, 8 /* AssignTypeFlags.SkipSolveTypeVars */)) {
1754
1772
  returnDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.functionReturnTypeMismatch().format({
1755
1773
  sourceType: this._evaluator.printType(overloadReturnType),
1756
1774
  destType: this._evaluator.printType(implementationReturnType),
@@ -1786,72 +1804,72 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1786
1804
  }
1787
1805
  _validateStubStatement(statement) {
1788
1806
  switch (statement.nodeType) {
1789
- case 19 /* If */:
1790
- case 28 /* Function */:
1791
- case 10 /* Class */:
1792
- case 0 /* Error */: {
1807
+ case 19 /* ParseNodeType.If */:
1808
+ case 28 /* ParseNodeType.Function */:
1809
+ case 10 /* ParseNodeType.Class */:
1810
+ case 0 /* ParseNodeType.Error */: {
1793
1811
  // These are allowed in a stub file.
1794
1812
  break;
1795
1813
  }
1796
- case 57 /* While */:
1797
- case 26 /* For */:
1798
- case 53 /* Try */:
1799
- case 58 /* With */: {
1814
+ case 57 /* ParseNodeType.While */:
1815
+ case 26 /* ParseNodeType.For */:
1816
+ case 53 /* ParseNodeType.Try */:
1817
+ case 58 /* ParseNodeType.With */: {
1800
1818
  // These are not allowed.
1801
1819
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportInvalidStubStatement, diagnosticRules_1.DiagnosticRule.reportInvalidStubStatement, localize_1.Localizer.Diagnostic.invalidStubStatement(), statement);
1802
1820
  break;
1803
1821
  }
1804
- case 47 /* StatementList */: {
1822
+ case 47 /* ParseNodeType.StatementList */: {
1805
1823
  for (const substatement of statement.statements) {
1806
1824
  let isValid = true;
1807
1825
  switch (substatement.nodeType) {
1808
- case 2 /* Assert */:
1809
- case 4 /* AssignmentExpression */:
1810
- case 6 /* Await */:
1811
- case 7 /* BinaryOperation */:
1812
- case 11 /* Constant */:
1813
- case 14 /* Del */:
1814
- case 15 /* Dictionary */:
1815
- case 24 /* Index */:
1816
- case 26 /* For */:
1817
- case 27 /* FormatString */:
1818
- case 29 /* Global */:
1819
- case 30 /* Lambda */:
1820
- case 31 /* List */:
1821
- case 35 /* MemberAccess */:
1822
- case 38 /* Name */:
1823
- case 39 /* Nonlocal */:
1824
- case 40 /* Number */:
1825
- case 43 /* Raise */:
1826
- case 44 /* Return */:
1827
- case 45 /* Set */:
1828
- case 46 /* Slice */:
1829
- case 51 /* Ternary */:
1830
- case 52 /* Tuple */:
1831
- case 53 /* Try */:
1832
- case 55 /* UnaryOperation */:
1833
- case 56 /* Unpack */:
1834
- case 57 /* While */:
1835
- case 58 /* With */:
1836
- case 59 /* WithItem */:
1837
- case 60 /* Yield */:
1838
- case 61 /* YieldFrom */: {
1826
+ case 2 /* ParseNodeType.Assert */:
1827
+ case 4 /* ParseNodeType.AssignmentExpression */:
1828
+ case 6 /* ParseNodeType.Await */:
1829
+ case 7 /* ParseNodeType.BinaryOperation */:
1830
+ case 11 /* ParseNodeType.Constant */:
1831
+ case 14 /* ParseNodeType.Del */:
1832
+ case 15 /* ParseNodeType.Dictionary */:
1833
+ case 24 /* ParseNodeType.Index */:
1834
+ case 26 /* ParseNodeType.For */:
1835
+ case 27 /* ParseNodeType.FormatString */:
1836
+ case 29 /* ParseNodeType.Global */:
1837
+ case 30 /* ParseNodeType.Lambda */:
1838
+ case 31 /* ParseNodeType.List */:
1839
+ case 35 /* ParseNodeType.MemberAccess */:
1840
+ case 38 /* ParseNodeType.Name */:
1841
+ case 39 /* ParseNodeType.Nonlocal */:
1842
+ case 40 /* ParseNodeType.Number */:
1843
+ case 43 /* ParseNodeType.Raise */:
1844
+ case 44 /* ParseNodeType.Return */:
1845
+ case 45 /* ParseNodeType.Set */:
1846
+ case 46 /* ParseNodeType.Slice */:
1847
+ case 51 /* ParseNodeType.Ternary */:
1848
+ case 52 /* ParseNodeType.Tuple */:
1849
+ case 53 /* ParseNodeType.Try */:
1850
+ case 55 /* ParseNodeType.UnaryOperation */:
1851
+ case 56 /* ParseNodeType.Unpack */:
1852
+ case 57 /* ParseNodeType.While */:
1853
+ case 58 /* ParseNodeType.With */:
1854
+ case 59 /* ParseNodeType.WithItem */:
1855
+ case 60 /* ParseNodeType.Yield */:
1856
+ case 61 /* ParseNodeType.YieldFrom */: {
1839
1857
  isValid = false;
1840
1858
  break;
1841
1859
  }
1842
- case 5 /* AugmentedAssignment */: {
1860
+ case 5 /* ParseNodeType.AugmentedAssignment */: {
1843
1861
  // Exempt __all__ manipulations.
1844
1862
  isValid =
1845
- substatement.operator === 1 /* AddEqual */ &&
1846
- substatement.leftExpression.nodeType === 38 /* Name */ &&
1863
+ substatement.operator === 1 /* OperatorType.AddEqual */ &&
1864
+ substatement.leftExpression.nodeType === 38 /* ParseNodeType.Name */ &&
1847
1865
  substatement.leftExpression.value === '__all__';
1848
1866
  break;
1849
1867
  }
1850
- case 9 /* Call */: {
1868
+ case 9 /* ParseNodeType.Call */: {
1851
1869
  // Exempt __all__ manipulations.
1852
1870
  isValid =
1853
- substatement.leftExpression.nodeType === 35 /* MemberAccess */ &&
1854
- substatement.leftExpression.leftExpression.nodeType === 38 /* Name */ &&
1871
+ substatement.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
1872
+ substatement.leftExpression.leftExpression.nodeType === 38 /* ParseNodeType.Name */ &&
1855
1873
  substatement.leftExpression.leftExpression.value === '__all__';
1856
1874
  break;
1857
1875
  }
@@ -1966,7 +1984,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1966
1984
  const typedDecls = symbol.getTypedDeclarations();
1967
1985
  if (typedDecls.length >= 1) {
1968
1986
  const primaryDecl = typedDecls[0];
1969
- if (primaryDecl.type === 5 /* Function */) {
1987
+ if (primaryDecl.type === 5 /* DeclarationType.Function */) {
1970
1988
  const type = this._evaluator.getEffectiveTypeOfSymbol(symbol);
1971
1989
  const overloadedFunctions = (0, types_1.isOverloadedFunction)(type)
1972
1990
  ? types_1.OverloadedFunctionType.getOverloads(type)
@@ -1990,7 +2008,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1990
2008
  if (!implementationFunction) {
1991
2009
  let exemptMissingImplementation = false;
1992
2010
  const containingClassNode = ParseTreeUtils.getEnclosingClassOrFunction(primaryDecl.node);
1993
- if (containingClassNode && containingClassNode.nodeType === 10 /* Class */) {
2011
+ if (containingClassNode && containingClassNode.nodeType === 10 /* ParseNodeType.Class */) {
1994
2012
  const classType = this._evaluator.getTypeOfClass(containingClassNode);
1995
2013
  if (classType) {
1996
2014
  if (types_1.ClassType.isProtocolClass(classType.classType)) {
@@ -2048,13 +2066,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2048
2066
  }
2049
2067
  sawFinal = true;
2050
2068
  }
2051
- if (decl.type === 1 /* Variable */ && decl.inferredTypeSource) {
2069
+ if (decl.type === 1 /* DeclarationType.Variable */ && decl.inferredTypeSource) {
2052
2070
  if (sawAssignment) {
2053
2071
  // We check for assignment of Final instance and class variables
2054
2072
  // the type evaluator because we need to take into account whether
2055
2073
  // the assignment is within an `__init__` method, so ignore class
2056
2074
  // scopes here.
2057
- if (scopeType !== 2 /* Class */) {
2075
+ if (scopeType !== 2 /* ScopeType.Class */) {
2058
2076
  this._evaluator.addError(localize_1.Localizer.Diagnostic.finalReassigned().format({ name }), decl.node);
2059
2077
  }
2060
2078
  }
@@ -2063,7 +2081,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2063
2081
  });
2064
2082
  // If it's not a stub file, an assignment must be provided.
2065
2083
  if (!sawAssignment && !this._fileInfo.isStubFile) {
2066
- const firstDecl = decls.find((decl) => decl.type === 1 /* Variable */ && decl.isFinal);
2084
+ const firstDecl = decls.find((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isFinal);
2067
2085
  if (firstDecl) {
2068
2086
  // Is this an instance variable declared within a dataclass? If so, it
2069
2087
  // is implicitly initialized by the synthesized `__init__` method and
@@ -2122,10 +2140,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2122
2140
  let otherDecls = symbol.getDeclarations().filter((decl) => decl !== primaryDecl);
2123
2141
  // If it's a function, we can skip any other declarations
2124
2142
  // that are overloads or property setters/deleters.
2125
- if (primaryDecl.type === 5 /* Function */) {
2143
+ if (primaryDecl.type === 5 /* DeclarationType.Function */) {
2126
2144
  const primaryDeclTypeInfo = this._evaluator.getTypeOfFunction(primaryDecl.node);
2127
2145
  otherDecls = otherDecls.filter((decl) => {
2128
- if (decl.type !== 5 /* Function */) {
2146
+ if (decl.type !== 5 /* DeclarationType.Function */) {
2129
2147
  return true;
2130
2148
  }
2131
2149
  const funcTypeInfo = this._evaluator.getTypeOfFunction(decl.node);
@@ -2153,7 +2171,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2153
2171
  return;
2154
2172
  }
2155
2173
  let primaryDeclInfo;
2156
- if (primaryDecl.type === 5 /* Function */) {
2174
+ if (primaryDecl.type === 5 /* DeclarationType.Function */) {
2157
2175
  if (primaryDecl.isMethod) {
2158
2176
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeMethodDeclaration();
2159
2177
  }
@@ -2161,16 +2179,16 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2161
2179
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeFunctionDeclaration();
2162
2180
  }
2163
2181
  }
2164
- else if (primaryDecl.type === 6 /* Class */) {
2182
+ else if (primaryDecl.type === 6 /* DeclarationType.Class */) {
2165
2183
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeClassDeclaration();
2166
2184
  }
2167
- else if (primaryDecl.type === 2 /* Parameter */) {
2185
+ else if (primaryDecl.type === 2 /* DeclarationType.Parameter */) {
2168
2186
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeParameterDeclaration();
2169
2187
  }
2170
- else if (primaryDecl.type === 1 /* Variable */) {
2188
+ else if (primaryDecl.type === 1 /* DeclarationType.Variable */) {
2171
2189
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeVariableDeclaration();
2172
2190
  }
2173
- else if (primaryDecl.type === 4 /* TypeAlias */) {
2191
+ else if (primaryDecl.type === 4 /* DeclarationType.TypeAlias */) {
2174
2192
  primaryDeclInfo = localize_1.Localizer.DiagnosticAddendum.seeTypeAliasDeclaration();
2175
2193
  }
2176
2194
  else {
@@ -2179,16 +2197,16 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2179
2197
  const addPrimaryDeclInfo = (diag) => {
2180
2198
  if (diag) {
2181
2199
  let primaryDeclNode;
2182
- if (primaryDecl.type === 5 /* Function */ || primaryDecl.type === 6 /* Class */) {
2200
+ if (primaryDecl.type === 5 /* DeclarationType.Function */ || primaryDecl.type === 6 /* DeclarationType.Class */) {
2183
2201
  primaryDeclNode = primaryDecl.node.name;
2184
2202
  }
2185
- else if (primaryDecl.type === 1 /* Variable */) {
2186
- if (primaryDecl.node.nodeType === 38 /* Name */) {
2203
+ else if (primaryDecl.type === 1 /* DeclarationType.Variable */) {
2204
+ if (primaryDecl.node.nodeType === 38 /* ParseNodeType.Name */) {
2187
2205
  primaryDeclNode = primaryDecl.node;
2188
2206
  }
2189
2207
  }
2190
- else if (primaryDecl.type === 2 /* Parameter */ ||
2191
- primaryDecl.type === 3 /* TypeParameter */) {
2208
+ else if (primaryDecl.type === 2 /* DeclarationType.Parameter */ ||
2209
+ primaryDecl.type === 3 /* DeclarationType.TypeParameter */) {
2192
2210
  if (primaryDecl.node.name) {
2193
2211
  primaryDeclNode = primaryDecl.node.name;
2194
2212
  }
@@ -2199,9 +2217,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2199
2217
  }
2200
2218
  };
2201
2219
  for (const otherDecl of otherDecls) {
2202
- if (otherDecl.type === 6 /* Class */) {
2220
+ if (otherDecl.type === 6 /* DeclarationType.Class */) {
2203
2221
  let duplicateIsOk = false;
2204
- if (primaryDecl.type === 3 /* TypeParameter */) {
2222
+ if (primaryDecl.type === 3 /* DeclarationType.TypeParameter */) {
2205
2223
  // The error will be reported elsewhere if a type parameter is
2206
2224
  // involved, so don't report it here.
2207
2225
  duplicateIsOk = true;
@@ -2211,7 +2229,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2211
2229
  addPrimaryDeclInfo(diag);
2212
2230
  }
2213
2231
  }
2214
- else if (otherDecl.type === 5 /* Function */) {
2232
+ else if (otherDecl.type === 5 /* DeclarationType.Function */) {
2215
2233
  const primaryType = (_a = this._evaluator.getTypeForDeclaration(primaryDecl)) === null || _a === void 0 ? void 0 : _a.type;
2216
2234
  let duplicateIsOk = false;
2217
2235
  // If the return type has not yet been inferred, do so now.
@@ -2234,7 +2252,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2234
2252
  if (!isInSameStatementList && primaryType && otherType && (0, types_1.isTypeSame)(primaryType, otherType)) {
2235
2253
  duplicateIsOk = true;
2236
2254
  }
2237
- if (primaryDecl.type === 3 /* TypeParameter */) {
2255
+ if (primaryDecl.type === 3 /* DeclarationType.TypeParameter */) {
2238
2256
  // The error will be reported elsewhere if a type parameter is
2239
2257
  // involved, so don't report it here.
2240
2258
  duplicateIsOk = true;
@@ -2246,10 +2264,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2246
2264
  addPrimaryDeclInfo(diag);
2247
2265
  }
2248
2266
  }
2249
- else if (otherDecl.type === 2 /* Parameter */) {
2267
+ else if (otherDecl.type === 2 /* DeclarationType.Parameter */) {
2250
2268
  if (otherDecl.node.name) {
2251
2269
  let duplicateIsOk = false;
2252
- if (primaryDecl.type === 3 /* TypeParameter */) {
2270
+ if (primaryDecl.type === 3 /* DeclarationType.TypeParameter */) {
2253
2271
  // The error will be reported elsewhere if a type parameter is
2254
2272
  // involved, so don't report it here.
2255
2273
  duplicateIsOk = true;
@@ -2261,17 +2279,17 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2261
2279
  }
2262
2280
  }
2263
2281
  }
2264
- else if (otherDecl.type === 1 /* Variable */) {
2282
+ else if (otherDecl.type === 1 /* DeclarationType.Variable */) {
2265
2283
  const primaryType = (_c = this._evaluator.getTypeForDeclaration(primaryDecl)) === null || _c === void 0 ? void 0 : _c.type;
2266
2284
  if (otherDecl.typeAnnotationNode) {
2267
- if (otherDecl.node.nodeType === 38 /* Name */) {
2285
+ if (otherDecl.node.nodeType === 38 /* ParseNodeType.Name */) {
2268
2286
  let duplicateIsOk = false;
2269
2287
  // It's OK if they both have the same declared type.
2270
2288
  const otherType = (_d = this._evaluator.getTypeForDeclaration(otherDecl)) === null || _d === void 0 ? void 0 : _d.type;
2271
2289
  if (primaryType && otherType && (0, types_1.isTypeSame)(primaryType, otherType)) {
2272
2290
  duplicateIsOk = true;
2273
2291
  }
2274
- if (primaryDecl.type === 3 /* TypeParameter */) {
2292
+ if (primaryDecl.type === 3 /* DeclarationType.TypeParameter */) {
2275
2293
  // The error will be reported elsewhere if a type parameter is
2276
2294
  // involved, so don't report it here.
2277
2295
  duplicateIsOk = true;
@@ -2283,7 +2301,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2283
2301
  }
2284
2302
  }
2285
2303
  }
2286
- else if (otherDecl.type === 4 /* TypeAlias */) {
2304
+ else if (otherDecl.type === 4 /* DeclarationType.TypeAlias */) {
2287
2305
  const diag = this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.obscuredTypeAliasDeclaration().format({ name }), otherDecl.node.name);
2288
2306
  addPrimaryDeclInfo(diag);
2289
2307
  }
@@ -2319,10 +2337,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2319
2337
  let message;
2320
2338
  let rule;
2321
2339
  switch (decl.type) {
2322
- case 8 /* Alias */:
2340
+ case 8 /* DeclarationType.Alias */:
2323
2341
  diagnosticLevel = this._fileInfo.diagnosticRuleSet.reportUnusedImport;
2324
2342
  rule = diagnosticRules_1.DiagnosticRule.reportUnusedImport;
2325
- if (decl.node.nodeType === 21 /* ImportAs */) {
2343
+ if (decl.node.nodeType === 21 /* ParseNodeType.ImportAs */) {
2326
2344
  if (decl.node.alias) {
2327
2345
  // For statements of the form "import x as x", don't mark "x" as unaccessed
2328
2346
  // because it's assumed to be re-exported.
@@ -2338,13 +2356,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2338
2356
  const multipartName = nameParts.map((np) => np.value).join('.');
2339
2357
  let textRange = { start: nameParts[0].start, length: nameParts[0].length };
2340
2358
  textRange = textRange_1.TextRange.extend(textRange, nameParts[nameParts.length - 1]);
2341
- this._fileInfo.diagnosticSink.addUnusedCodeWithTextRange(localize_1.Localizer.Diagnostic.unaccessedSymbol().format({ name: multipartName }), textRange, { action: "pyright.unusedImport" /* unusedImport */ });
2359
+ this._fileInfo.diagnosticSink.addUnusedCodeWithTextRange(localize_1.Localizer.Diagnostic.unaccessedSymbol().format({ name: multipartName }), textRange, { action: "pyright.unusedImport" /* Commands.unusedImport */ });
2342
2360
  this._evaluator.addDiagnosticForTextRange(this._fileInfo, this._fileInfo.diagnosticRuleSet.reportUnusedImport, diagnosticRules_1.DiagnosticRule.reportUnusedImport, localize_1.Localizer.Diagnostic.unaccessedImport().format({ name: multipartName }), textRange);
2343
2361
  return;
2344
2362
  }
2345
2363
  }
2346
2364
  }
2347
- else if (decl.node.nodeType === 23 /* ImportFromAs */) {
2365
+ else if (decl.node.nodeType === 23 /* ParseNodeType.ImportFromAs */) {
2348
2366
  const importFrom = decl.node.parent;
2349
2367
  // For statements of the form "from y import x as x", don't mark "x" as
2350
2368
  // unaccessed because it's assumed to be re-exported.
@@ -2360,9 +2378,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2360
2378
  message = localize_1.Localizer.Diagnostic.unaccessedImport().format({ name: nameNode.value });
2361
2379
  }
2362
2380
  break;
2363
- case 4 /* TypeAlias */:
2364
- case 1 /* Variable */:
2365
- case 2 /* Parameter */:
2381
+ case 4 /* DeclarationType.TypeAlias */:
2382
+ case 1 /* DeclarationType.Variable */:
2383
+ case 2 /* DeclarationType.Parameter */:
2366
2384
  if (!isPrivate) {
2367
2385
  return;
2368
2386
  }
@@ -2372,7 +2390,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2372
2390
  return;
2373
2391
  }
2374
2392
  diagnosticLevel = this._fileInfo.diagnosticRuleSet.reportUnusedVariable;
2375
- if (decl.node.nodeType === 38 /* Name */) {
2393
+ if (decl.node.nodeType === 38 /* ParseNodeType.Name */) {
2376
2394
  nameNode = decl.node;
2377
2395
  // Don't emit a diagnostic if the name starts with an underscore.
2378
2396
  // This indicates that the variable is unused.
@@ -2380,7 +2398,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2380
2398
  diagnosticLevel = 'none';
2381
2399
  }
2382
2400
  }
2383
- else if (decl.node.nodeType === 41 /* Parameter */) {
2401
+ else if (decl.node.nodeType === 41 /* ParseNodeType.Parameter */) {
2384
2402
  nameNode = decl.node.name;
2385
2403
  // Don't emit a diagnostic for unused parameters or type parameters.
2386
2404
  diagnosticLevel = 'none';
@@ -2390,7 +2408,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2390
2408
  message = localize_1.Localizer.Diagnostic.unaccessedVariable().format({ name: nameNode.value });
2391
2409
  }
2392
2410
  break;
2393
- case 6 /* Class */:
2411
+ case 6 /* DeclarationType.Class */:
2394
2412
  if (!isPrivate) {
2395
2413
  return;
2396
2414
  }
@@ -2404,7 +2422,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2404
2422
  rule = diagnosticRules_1.DiagnosticRule.reportUnusedClass;
2405
2423
  message = localize_1.Localizer.Diagnostic.unaccessedClass().format({ name: nameNode.value });
2406
2424
  break;
2407
- case 5 /* Function */:
2425
+ case 5 /* DeclarationType.Function */:
2408
2426
  if (!isPrivate) {
2409
2427
  return;
2410
2428
  }
@@ -2418,18 +2436,18 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2418
2436
  rule = diagnosticRules_1.DiagnosticRule.reportUnusedFunction;
2419
2437
  message = localize_1.Localizer.Diagnostic.unaccessedFunction().format({ name: nameNode.value });
2420
2438
  break;
2421
- case 3 /* TypeParameter */:
2439
+ case 3 /* DeclarationType.TypeParameter */:
2422
2440
  // Never report a diagnostic for an unused TypeParameter.
2423
2441
  diagnosticLevel = 'none';
2424
2442
  nameNode = decl.node.name;
2425
2443
  break;
2426
- case 0 /* Intrinsic */:
2427
- case 7 /* SpecialBuiltInClass */:
2444
+ case 0 /* DeclarationType.Intrinsic */:
2445
+ case 7 /* DeclarationType.SpecialBuiltInClass */:
2428
2446
  return;
2429
2447
  default:
2430
2448
  (0, debug_1.assertNever)(decl);
2431
2449
  }
2432
- const action = rule === diagnosticRules_1.DiagnosticRule.reportUnusedImport ? { action: "pyright.unusedImport" /* unusedImport */ } : undefined;
2450
+ const action = rule === diagnosticRules_1.DiagnosticRule.reportUnusedImport ? { action: "pyright.unusedImport" /* Commands.unusedImport */ } : undefined;
2433
2451
  if (nameNode) {
2434
2452
  this._fileInfo.diagnosticSink.addUnusedCodeWithTextRange(localize_1.Localizer.Diagnostic.unaccessedSymbol().format({ name: nameNode.value }), nameNode, action);
2435
2453
  if (rule !== undefined && message) {
@@ -2441,7 +2459,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2441
2459
  // common source of programming errors. Also validates that arguments passed
2442
2460
  // to isinstance or issubclass won't generate exceptions.
2443
2461
  _validateIsInstanceCall(node) {
2444
- if (node.leftExpression.nodeType !== 38 /* Name */ ||
2462
+ if (node.leftExpression.nodeType !== 38 /* ParseNodeType.Name */ ||
2445
2463
  (node.leftExpression.value !== 'isinstance' && node.leftExpression.value !== 'issubclass') ||
2446
2464
  node.arguments.length !== 2) {
2447
2465
  return;
@@ -2487,7 +2505,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2487
2505
  // it's unnecessary.
2488
2506
  let curNode = node;
2489
2507
  while (curNode) {
2490
- if (curNode.nodeType === 2 /* Assert */) {
2508
+ if (curNode.nodeType === 2 /* ParseNodeType.Assert */) {
2491
2509
  return;
2492
2510
  }
2493
2511
  curNode = curNode.parent;
@@ -2651,11 +2669,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2651
2669
  subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
2652
2670
  subtype = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(subtype);
2653
2671
  switch (subtype.category) {
2654
- case 2 /* Any */:
2655
- case 1 /* Unknown */:
2656
- case 0 /* Unbound */:
2672
+ case 2 /* TypeCategory.Any */:
2673
+ case 1 /* TypeCategory.Unknown */:
2674
+ case 0 /* TypeCategory.Unbound */:
2657
2675
  break;
2658
- case 6 /* Class */:
2676
+ case 6 /* TypeCategory.Class */:
2659
2677
  if ((0, typeUtils_1.isNoneInstance)(subtype)) {
2660
2678
  diag.addMessage(localize_1.Localizer.DiagnosticAddendum.noneNotAllowed());
2661
2679
  isSupported = false;
@@ -2676,13 +2694,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2676
2694
  isSupported = false;
2677
2695
  }
2678
2696
  break;
2679
- case 4 /* Function */:
2697
+ case 4 /* TypeCategory.Function */:
2680
2698
  if (!types_1.TypeBase.isInstantiable(subtype) || subtype.isCallableWithTypeArgs) {
2681
2699
  diag.addMessage(localize_1.Localizer.DiagnosticAddendum.genericClassNotAllowed());
2682
2700
  isSupported = false;
2683
2701
  }
2684
2702
  break;
2685
- case 9 /* TypeVar */:
2703
+ case 9 /* TypeCategory.TypeVar */:
2686
2704
  diag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarNotAllowed());
2687
2705
  isSupported = false;
2688
2706
  break;
@@ -2693,7 +2711,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2693
2711
  _isSymbolPrivate(nameValue, scopeType) {
2694
2712
  // All variables within the scope of a function or a list
2695
2713
  // comprehension are considered private.
2696
- if (scopeType === 1 /* Function */ || scopeType === 0 /* ListComprehension */) {
2714
+ if (scopeType === 1 /* ScopeType.Function */ || scopeType === 0 /* ScopeType.ListComprehension */) {
2697
2715
  return true;
2698
2716
  }
2699
2717
  // See if the symbol is private.
@@ -2702,7 +2720,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2702
2720
  }
2703
2721
  if (SymbolNameUtils.isProtectedName(nameValue)) {
2704
2722
  // Protected names outside of a class scope are considered private.
2705
- const isClassScope = scopeType === 2 /* Class */;
2723
+ const isClassScope = scopeType === 2 /* ScopeType.Class */;
2706
2724
  return !isClassScope;
2707
2725
  }
2708
2726
  return false;
@@ -2744,7 +2762,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2744
2762
  let deprecatedMessage;
2745
2763
  function getDeprecatedMessageForFunction(functionType) {
2746
2764
  if (functionType.details.declaration &&
2747
- functionType.details.declaration.node.nodeType === 28 /* Function */) {
2765
+ functionType.details.declaration.node.nodeType === 28 /* ParseNodeType.Function */) {
2748
2766
  const containingClass = ParseTreeUtils.getEnclosingClass(functionType.details.declaration.node,
2749
2767
  /* stopAtFunction */ true);
2750
2768
  if (containingClass) {
@@ -2901,7 +2919,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2901
2919
  // Add a quick action that renames the file.
2902
2920
  if (diag) {
2903
2921
  const renameAction = {
2904
- action: "renameShadowedFile" /* RenameShadowedFileAction */,
2922
+ action: "renameShadowedFile" /* ActionKind.RenameShadowedFileAction */,
2905
2923
  oldFile: this._fileInfo.filePath,
2906
2924
  newFile: this._sourceMapper.getNextFileName(this._fileInfo.filePath),
2907
2925
  };
@@ -2915,8 +2933,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2915
2933
  return;
2916
2934
  }
2917
2935
  // Skip this check for relative imports.
2918
- const nodeModule = node.nodeType === 23 /* ImportFromAs */
2919
- ? ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 22 /* ImportFrom */
2936
+ const nodeModule = node.nodeType === 23 /* ParseNodeType.ImportFromAs */
2937
+ ? ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 22 /* ParseNodeType.ImportFrom */
2920
2938
  ? (_b = node.parent) === null || _b === void 0 ? void 0 : _b.module
2921
2939
  : undefined
2922
2940
  : node.module;
@@ -2924,9 +2942,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2924
2942
  return;
2925
2943
  }
2926
2944
  // Otherwise use the name to determine if a match for a stdlib module.
2927
- const namePartNodes = node.nodeType === 21 /* ImportAs */
2945
+ const namePartNodes = node.nodeType === 21 /* ParseNodeType.ImportAs */
2928
2946
  ? node.module.nameParts
2929
- : node.nodeType === 23 /* ImportFromAs */
2947
+ : node.nodeType === 23 /* ParseNodeType.ImportFromAs */
2930
2948
  ? [node.name]
2931
2949
  : node.module.nameParts;
2932
2950
  const nameParts = namePartNodes.map((n) => n.value);
@@ -2952,7 +2970,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2952
2970
  // Add a quick action that renames the file.
2953
2971
  if (diag) {
2954
2972
  const renameAction = {
2955
- action: "renameShadowedFile" /* RenameShadowedFileAction */,
2973
+ action: "renameShadowedFile" /* ActionKind.RenameShadowedFileAction */,
2956
2974
  oldFile: p,
2957
2975
  newFile: this._sourceMapper.getNextFileName(p),
2958
2976
  };
@@ -2972,7 +2990,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2972
2990
  return;
2973
2991
  }
2974
2992
  // Ignore privates in named arguments.
2975
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 1 /* Argument */ && node.parent.name === node) {
2993
+ if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 1 /* ParseNodeType.Argument */ && node.parent.name === node) {
2976
2994
  return;
2977
2995
  }
2978
2996
  const nameValue = node.value;
@@ -2988,7 +3006,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2988
3006
  if (!primaryDeclaration || primaryDeclaration.node === node) {
2989
3007
  return;
2990
3008
  }
2991
- if (primaryDeclaration.type === 8 /* Alias */) {
3009
+ if (primaryDeclaration.type === 8 /* DeclarationType.Alias */) {
2992
3010
  // If this symbol is an import alias (i.e. it's a local name rather than the
2993
3011
  // original imported name), skip the private check.
2994
3012
  if (primaryDeclaration.usesLocalName) {
@@ -3084,12 +3102,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3084
3102
  };
3085
3103
  suiteNode.statements.forEach((statement) => {
3086
3104
  if (!AnalyzerNodeInfo.isCodeUnreachable(statement)) {
3087
- if (statement.nodeType === 47 /* StatementList */) {
3105
+ if (statement.nodeType === 47 /* ParseNodeType.StatementList */) {
3088
3106
  for (const substatement of statement.statements) {
3089
- if (substatement.nodeType !== 54 /* TypeAnnotation */ &&
3090
- substatement.nodeType !== 18 /* Ellipsis */ &&
3091
- substatement.nodeType !== 48 /* StringList */ &&
3092
- substatement.nodeType !== 42 /* Pass */) {
3107
+ if (substatement.nodeType !== 54 /* ParseNodeType.TypeAnnotation */ &&
3108
+ substatement.nodeType !== 18 /* ParseNodeType.Ellipsis */ &&
3109
+ substatement.nodeType !== 48 /* ParseNodeType.StringList */ &&
3110
+ substatement.nodeType !== 42 /* ParseNodeType.Pass */) {
3093
3111
  emitBadStatementError(substatement);
3094
3112
  }
3095
3113
  }
@@ -3207,7 +3225,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3207
3225
  _validateReturnTypeIsNotContravariant(returnType, errorNode) {
3208
3226
  let isContraTypeVar = false;
3209
3227
  (0, typeUtils_1.doForEachSubtype)(returnType, (subtype) => {
3210
- if ((0, types_1.isTypeVar)(subtype) && subtype.details.declaredVariance === 4 /* Contravariant */) {
3228
+ if ((0, types_1.isTypeVar)(subtype) && subtype.details.declaredVariance === 4 /* Variance.Contravariant */) {
3211
3229
  isContraTypeVar = true;
3212
3230
  }
3213
3231
  });
@@ -3229,7 +3247,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3229
3247
  // as Final in parent classes.
3230
3248
  _validateFinalMemberOverrides(classType) {
3231
3249
  classType.details.fields.forEach((localSymbol, name) => {
3232
- const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* SkipOriginalClass */);
3250
+ const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* MemberAccessFlags.SkipOriginalClass */);
3233
3251
  if (parentSymbol &&
3234
3252
  (0, types_1.isInstantiableClass)(parentSymbol.classType) &&
3235
3253
  this._evaluator.isFinalVariable(parentSymbol.symbol) &&
@@ -3252,7 +3270,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3252
3270
  return;
3253
3271
  }
3254
3272
  const decls = symbol.getDeclarations();
3255
- if (decls.length >= 2 && decls[0].type === 1 /* Variable */) {
3273
+ if (decls.length >= 2 && decls[0].type === 1 /* DeclarationType.Variable */) {
3256
3274
  const symbolType = this._evaluator.getEffectiveTypeOfSymbol(symbol);
3257
3275
  // Is this symbol a literal instance of the enum class?
3258
3276
  if ((0, types_1.isClassInstance)(symbolType) &&
@@ -3287,10 +3305,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3287
3305
  if (decls.length === 0 || !(0, types_1.isClass)(member.classType)) {
3288
3306
  return;
3289
3307
  }
3290
- if (decls[0].type === 1 /* Variable */) {
3308
+ if (decls[0].type === 1 /* DeclarationType.Variable */) {
3291
3309
  // If none of the declarations involve assignments, assume it's
3292
3310
  // not implemented in the protocol.
3293
- if (!decls.some((decl) => decl.type === 1 /* Variable */ && !!decl.inferredTypeSource)) {
3311
+ if (!decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && !!decl.inferredTypeSource)) {
3294
3312
  // This is a variable declaration that is not implemented in the
3295
3313
  // protocol base class. Make sure it's implemented in the derived class.
3296
3314
  if (!isSymbolImplemented(name)) {
@@ -3301,8 +3319,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3301
3319
  }
3302
3320
  }
3303
3321
  }
3304
- else if (decls[0].type === 5 /* Function */) {
3305
- if (decls.every((decl) => decl.type !== 5 /* Function */ || ParseTreeUtils.isSuiteEmpty(decl.node.suite))) {
3322
+ else if (decls[0].type === 5 /* DeclarationType.Function */) {
3323
+ if (decls.every((decl) => decl.type !== 5 /* DeclarationType.Function */ || ParseTreeUtils.isSuiteEmpty(decl.node.suite))) {
3306
3324
  if ((0, pathUtils_1.getFileExtension)(decls[0].path).toLowerCase() !== '.pyi') {
3307
3325
  if (!isSymbolImplemented(name)) {
3308
3326
  diagAddendum.addMessage(localize_1.Localizer.DiagnosticAddendum.missingProtocolMember().format({
@@ -3325,7 +3343,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3325
3343
  if (!types_1.ClassType.isDataClass(classType)) {
3326
3344
  return;
3327
3345
  }
3328
- const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* SkipBaseClasses */ | 64 /* DeclaredTypesOnly */);
3346
+ const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* MemberAccessFlags.SkipBaseClasses */ | 64 /* MemberAccessFlags.DeclaredTypesOnly */);
3329
3347
  // If there's no __post_init__ method, there's nothing to check.
3330
3348
  if (!postInitMember) {
3331
3349
  return;
@@ -3448,7 +3466,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3448
3466
  // variables. We need to make sure these are initialized.
3449
3467
  const abstractSymbols = new Map();
3450
3468
  if (types_1.ClassType.isFinal(classType)) {
3451
- (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 1024 /* SupportsAbstractMethods */);
3469
+ (0, typeUtils_1.getProtocolSymbolsRecursive)(classType, abstractSymbols, 1024 /* ClassTypeFlags.SupportsAbstractMethods */);
3452
3470
  }
3453
3471
  classType.details.fields.forEach((localSymbol, name) => {
3454
3472
  abstractSymbols.delete(name);
@@ -3465,14 +3483,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3465
3483
  if (!containingClass) {
3466
3484
  return true;
3467
3485
  }
3468
- if (containingClass.nodeType === 10 /* Class */) {
3486
+ if (containingClass.nodeType === 10 /* ParseNodeType.Class */) {
3469
3487
  // If this is part of an assignment statement, assume it has been
3470
3488
  // initialized as a class variable.
3471
- if (((_a = decl.node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* Assignment */) {
3489
+ if (((_a = decl.node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* ParseNodeType.Assignment */) {
3472
3490
  return true;
3473
3491
  }
3474
- if (((_b = decl.node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 54 /* TypeAnnotation */ &&
3475
- ((_c = decl.node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 3 /* Assignment */) {
3492
+ if (((_b = decl.node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 54 /* ParseNodeType.TypeAnnotation */ &&
3493
+ ((_c = decl.node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 3 /* ParseNodeType.Assignment */) {
3476
3494
  return true;
3477
3495
  }
3478
3496
  // If this is part of a dataclass or a class handled by a dataclass_transform,
@@ -3496,7 +3514,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3496
3514
  }
3497
3515
  // If the symbol is declared by its parent, we can assume it
3498
3516
  // is initialized there.
3499
- const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* SkipOriginalClass */);
3517
+ const parentSymbol = (0, typeUtils_1.lookUpClassMember)(classType, name, 1 /* MemberAccessFlags.SkipOriginalClass */);
3500
3518
  if (parentSymbol) {
3501
3519
  return;
3502
3520
  }
@@ -3511,10 +3529,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3511
3529
  if (decls.length === 0 || !(0, types_1.isClass)(member.classType)) {
3512
3530
  return;
3513
3531
  }
3514
- if (decls[0].type === 1 /* Variable */) {
3532
+ if (decls[0].type === 1 /* DeclarationType.Variable */) {
3515
3533
  // If none of the declarations involve assignments, assume it's
3516
3534
  // not implemented in the protocol.
3517
- if (!decls.some((decl) => decl.type === 1 /* Variable */ && !!decl.inferredTypeSource)) {
3535
+ if (!decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && !!decl.inferredTypeSource)) {
3518
3536
  // This is a variable declaration that is not implemented in the
3519
3537
  // protocol base class. Make sure it's implemented in the derived class.
3520
3538
  diagAddendum.addMessage(localize_1.Localizer.DiagnosticAddendum.uninitializedAbstractVariable().format({
@@ -3552,7 +3570,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3552
3570
  return;
3553
3571
  }
3554
3572
  // Skip type variables with auto-variance.
3555
- if (param.details.declaredVariance === 0 /* Auto */) {
3573
+ if (param.details.declaredVariance === 0 /* Variance.Auto */) {
3556
3574
  return;
3557
3575
  }
3558
3576
  // Replace all type arguments with a dummy type except for the
@@ -3575,26 +3593,26 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3575
3593
  const isDestSubtypeOfSrc = this._evaluator.assignClassToSelf(srcType, destType);
3576
3594
  let expectedVariance;
3577
3595
  if (isDestSubtypeOfSrc) {
3578
- expectedVariance = 3 /* Covariant */;
3596
+ expectedVariance = 3 /* Variance.Covariant */;
3579
3597
  }
3580
3598
  else {
3581
3599
  const isSrcSubtypeOfDest = this._evaluator.assignClassToSelf(destType, srcType);
3582
3600
  if (isSrcSubtypeOfDest) {
3583
- expectedVariance = 4 /* Contravariant */;
3601
+ expectedVariance = 4 /* Variance.Contravariant */;
3584
3602
  }
3585
3603
  else {
3586
- expectedVariance = 2 /* Invariant */;
3604
+ expectedVariance = 2 /* Variance.Invariant */;
3587
3605
  }
3588
3606
  }
3589
3607
  if (expectedVariance !== classType.details.typeParameters[paramIndex].details.declaredVariance) {
3590
3608
  let message;
3591
- if (expectedVariance === 3 /* Covariant */) {
3609
+ if (expectedVariance === 3 /* Variance.Covariant */) {
3592
3610
  message = localize_1.Localizer.Diagnostic.protocolVarianceCovariant().format({
3593
3611
  variable: param.details.name,
3594
3612
  class: classType.details.name,
3595
3613
  });
3596
3614
  }
3597
- else if (expectedVariance === 4 /* Contravariant */) {
3615
+ else if (expectedVariance === 4 /* Variance.Contravariant */) {
3598
3616
  message = localize_1.Localizer.Diagnostic.protocolVarianceContravariant().format({
3599
3617
  variable: param.details.name,
3600
3618
  class: classType.details.name,
@@ -3624,13 +3642,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3624
3642
  }
3625
3643
  classType.details.fields.forEach((symbol, name) => {
3626
3644
  const decls = symbol.getDeclarations();
3627
- const isDefinedBySlots = decls.some((decl) => decl.type === 1 /* Variable */ && decl.isDefinedBySlots);
3645
+ const isDefinedBySlots = decls.some((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isDefinedBySlots);
3628
3646
  if (isDefinedBySlots) {
3629
3647
  decls.forEach((decl) => {
3630
- if (decl.type === 1 /* Variable */ &&
3648
+ if (decl.type === 1 /* DeclarationType.Variable */ &&
3631
3649
  !decl.isDefinedBySlots &&
3632
3650
  !decl.isDefinedByMemberAccess) {
3633
- if (decl.node.nodeType === 38 /* Name */ && ParseTreeUtils.isWriteAccess(decl.node)) {
3651
+ if (decl.node.nodeType === 38 /* ParseNodeType.Name */ && ParseTreeUtils.isWriteAccess(decl.node)) {
3634
3652
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.slotsClassVarConflict().format({ name }), decl.node);
3635
3653
  }
3636
3654
  }
@@ -3696,25 +3714,25 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3696
3714
  // often has an *args and/or **kwargs. We'll also set the ParamSpecValue
3697
3715
  // because we don't care about the return type for this check.
3698
3716
  initMemberType = types_1.FunctionType.cloneWithNewFlags(initMemberType, initMemberType.details.flags |
3699
- 32768 /* SkipArgsKwargsCompatibilityCheck */ |
3700
- 65536 /* ParamSpecValue */);
3717
+ 32768 /* FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck */ |
3718
+ 65536 /* FunctionTypeFlags.ParamSpecValue */);
3701
3719
  newMemberType = types_1.FunctionType.cloneWithNewFlags(newMemberType, initMemberType.details.flags |
3702
- 32768 /* SkipArgsKwargsCompatibilityCheck */ |
3703
- 65536 /* ParamSpecValue */);
3720
+ 32768 /* FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck */ |
3721
+ 65536 /* FunctionTypeFlags.ParamSpecValue */);
3704
3722
  if (!this._evaluator.assignType(newMemberType, initMemberType,
3705
3723
  /* diag */ undefined,
3706
3724
  /* destTypeVarContext */ undefined,
3707
- /* srcTypeVarContext */ undefined, 32 /* SkipFunctionReturnTypeCheck */) ||
3725
+ /* srcTypeVarContext */ undefined, 32 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */) ||
3708
3726
  !this._evaluator.assignType(initMemberType, newMemberType,
3709
3727
  /* diag */ undefined,
3710
3728
  /* destTypeVarContext */ undefined,
3711
- /* srcTypeVarContext */ undefined, 32 /* SkipFunctionReturnTypeCheck */)) {
3729
+ /* srcTypeVarContext */ undefined, 32 /* AssignTypeFlags.SkipFunctionReturnTypeCheck */)) {
3712
3730
  const displayOnInit = types_1.ClassType.isSameGenericClass(initMethodResult.classType, classType);
3713
3731
  const initDecl = initMemberType.details.declaration;
3714
3732
  const newDecl = newMemberType.details.declaration;
3715
3733
  if (initDecl && newDecl) {
3716
3734
  const mainDecl = displayOnInit ? initDecl : newDecl;
3717
- const mainDeclNode = mainDecl.node.nodeType === 28 /* Function */ ? mainDecl.node.name : mainDecl.node;
3735
+ const mainDeclNode = mainDecl.node.nodeType === 28 /* ParseNodeType.Function */ ? mainDecl.node.name : mainDecl.node;
3718
3736
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();
3719
3737
  const initSignature = this._evaluator.printType(initMemberType);
3720
3738
  const newSignature = this._evaluator.printType(newMemberType);
@@ -3897,7 +3915,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3897
3915
  /* baseClass */ undefined, diagAddendum,
3898
3916
  /* enforceParamNameMatch */ true)) {
3899
3917
  const decl = overrideFunction.details.declaration;
3900
- if (decl && decl.type === 5 /* Function */) {
3918
+ if (decl && decl.type === 5 /* DeclarationType.Function */) {
3901
3919
  diag = this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportIncompatibleMethodOverride, diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.Localizer.Diagnostic.baseClassMethodTypeIncompatible().format({
3902
3920
  classType: childClassType.details.name,
3903
3921
  name: memberName,
@@ -3983,7 +4001,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3983
4001
  continue;
3984
4002
  }
3985
4003
  (0, debug_1.assert)((0, types_1.isClass)(mroBaseClass));
3986
- const baseClassAndSymbol = (0, typeUtils_1.lookUpClassMember)(mroBaseClass, name, 0 /* Default */);
4004
+ const baseClassAndSymbol = (0, typeUtils_1.lookUpClassMember)(mroBaseClass, name, 0 /* MemberAccessFlags.Default */);
3987
4005
  if (!baseClassAndSymbol) {
3988
4006
  continue;
3989
4007
  }
@@ -4013,8 +4031,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4013
4031
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
4014
4032
  }
4015
4033
  else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
4016
- if (overrideType.fgetFunction) {
4017
- overrideFunction = overrideType.fgetFunction;
4034
+ if (overrideType.fgetInfo) {
4035
+ overrideFunction = overrideType.fgetInfo.methodType;
4018
4036
  }
4019
4037
  }
4020
4038
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || types_1.FunctionType.isOverridden(overrideFunction)) {
@@ -4047,8 +4065,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4047
4065
  overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
4048
4066
  }
4049
4067
  else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
4050
- if (overrideType.fgetFunction) {
4051
- overrideFunction = overrideType.fgetFunction;
4068
+ if (overrideType.fgetInfo) {
4069
+ overrideFunction = overrideType.fgetInfo.methodType;
4052
4070
  }
4053
4071
  }
4054
4072
  if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || !types_1.FunctionType.isOverridden(overrideFunction)) {
@@ -4108,7 +4126,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4108
4126
  const diag = this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportIncompatibleMethodOverride, diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.Localizer.Diagnostic.incompatibleMethodOverride().format({
4109
4127
  name: memberName,
4110
4128
  className: baseClass.details.name,
4111
- }) + diagAddendum.getString(), decl.type === 5 /* Function */ ? decl.node.name : decl.node);
4129
+ }) + diagAddendum.getString(), decl.type === 5 /* DeclarationType.Function */ ? decl.node.name : decl.node);
4112
4130
  const origDecl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(baseClassAndSymbol.symbol);
4113
4131
  if (diag && origDecl) {
4114
4132
  diag.addRelatedInfo(localize_1.Localizer.DiagnosticAddendum.overriddenMethod(), origDecl.path, origDecl.range);
@@ -4120,7 +4138,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4120
4138
  // Private names (starting with double underscore) are exempt from this check.
4121
4139
  if (!SymbolNameUtils.isPrivateName(memberName) && types_1.FunctionType.isFinal(baseType)) {
4122
4140
  const decl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(overrideSymbol);
4123
- if (decl && decl.type === 5 /* Function */) {
4141
+ if (decl && decl.type === 5 /* DeclarationType.Function */) {
4124
4142
  const diag = this._evaluator.addError(localize_1.Localizer.Diagnostic.finalMethodOverride().format({
4125
4143
  name: memberName,
4126
4144
  className: baseClass.details.name,
@@ -4168,9 +4186,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4168
4186
  else {
4169
4187
  const baseClassType = baseClass;
4170
4188
  const propMethodInfo = [
4171
- ['fget', (c) => c.fgetFunction],
4172
- ['fset', (c) => c.fsetFunction],
4173
- ['fdel', (c) => c.fdelFunction],
4189
+ ['fget', (c) => { var _a; return (_a = c.fgetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4190
+ ['fset', (c) => { var _a; return (_a = c.fsetInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4191
+ ['fdel', (c) => { var _a; return (_a = c.fdelInfo) === null || _a === void 0 ? void 0 : _a.methodType; }],
4174
4192
  ];
4175
4193
  propMethodInfo.forEach((info) => {
4176
4194
  const diagAddendum = new diagnostic_1.DiagnosticAddendum();
@@ -4206,7 +4224,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4206
4224
  name: methodName,
4207
4225
  }));
4208
4226
  const decl = subclassMethodType.details.declaration;
4209
- if (decl && decl.type === 5 /* Function */) {
4227
+ if (decl && decl.type === 5 /* DeclarationType.Function */) {
4210
4228
  const diag = this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportIncompatibleMethodOverride, diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.Localizer.Diagnostic.propertyOverridden().format({
4211
4229
  name: memberName,
4212
4230
  className: baseClassType.details.name,
@@ -4234,7 +4252,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4234
4252
  const primaryDecl = decls[0];
4235
4253
  // Verify that the override type is assignable to (same or narrower than)
4236
4254
  // the declared type of the base symbol.
4237
- let isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal;
4255
+ let isInvariant = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* DeclarationType.Variable */ && !primaryDecl.isFinal;
4238
4256
  // If the entry is a member of a frozen dataclass, it is immutable,
4239
4257
  // so it does not need to be invariant.
4240
4258
  if (types_1.ClassType.isFrozenDataClass(baseClass) && baseClass.details.dataClassEntries) {
@@ -4246,7 +4264,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4246
4264
  let diagAddendum = new diagnostic_1.DiagnosticAddendum();
4247
4265
  if (!this._evaluator.assignType(baseType, overrideType, diagAddendum,
4248
4266
  /* destTypeVarContext */ undefined,
4249
- /* srcTypeVarContext */ undefined, isInvariant ? 1 /* EnforceInvariance */ : 0 /* Default */)) {
4267
+ /* srcTypeVarContext */ undefined, isInvariant ? 1 /* AssignTypeFlags.EnforceInvariance */ : 0 /* AssignTypeFlags.Default */)) {
4250
4268
  if (isInvariant) {
4251
4269
  diagAddendum = new diagnostic_1.DiagnosticAddendum();
4252
4270
  diagAddendum.addMessage(localize_1.Localizer.DiagnosticAddendum.overrideIsInvariant());
@@ -4289,7 +4307,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4289
4307
  }
4290
4308
  // If the subclass is declaring an inner class, we'll consider that
4291
4309
  // to be a ClassVar.
4292
- if (overrideSymbol.getTypedDeclarations().every((decl) => decl.type === 6 /* Class */)) {
4310
+ if (overrideSymbol.getTypedDeclarations().every((decl) => decl.type === 6 /* DeclarationType.Class */)) {
4293
4311
  isClassVar = true;
4294
4312
  }
4295
4313
  }
@@ -4379,7 +4397,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4379
4397
  if (node.parameters[0].name) {
4380
4398
  paramName = node.parameters[0].name.value;
4381
4399
  }
4382
- if (node.parameters[0].category !== 0 /* Simple */) {
4400
+ if (node.parameters[0].category !== 0 /* ParameterCategory.Simple */) {
4383
4401
  firstParamIsSimple = false;
4384
4402
  }
4385
4403
  }
@@ -4425,9 +4443,9 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4425
4443
  // it could be combined with other classes in a multi-inheritance
4426
4444
  // situation that effectively adds new superclasses that we don't know
4427
4445
  // about statically.
4428
- let effectiveFlags = 16 /* SkipInstanceMembers */ | 1 /* SkipOriginalClass */;
4446
+ let effectiveFlags = 16 /* MemberAccessFlags.SkipInstanceMembers */ | 1 /* MemberAccessFlags.SkipOriginalClass */;
4429
4447
  if (types_1.ClassType.isFinal(classType)) {
4430
- effectiveFlags |= 4 /* SkipObjectBaseClass */;
4448
+ effectiveFlags |= 4 /* MemberAccessFlags.SkipObjectBaseClass */;
4431
4449
  }
4432
4450
  const methodMember = (0, typeUtils_1.lookUpClassMember)(classType, methodType.details.name, effectiveFlags);
4433
4451
  if (!methodMember) {
@@ -4437,13 +4455,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4437
4455
  // Now scan the implementation of the method to determine whether
4438
4456
  // super().<method> has been called for all of the required base classes.
4439
4457
  const callNodeWalker = new ParseTreeUtils.CallNodeWalker((node) => {
4440
- if (node.leftExpression.nodeType === 35 /* MemberAccess */) {
4458
+ if (node.leftExpression.nodeType === 35 /* ParseNodeType.MemberAccess */) {
4441
4459
  // Is it accessing the method by the same name?
4442
4460
  if (node.leftExpression.memberName.value === methodType.details.name) {
4443
4461
  const memberBaseExpr = node.leftExpression.leftExpression;
4444
4462
  // Is it a "super" call?
4445
- if (memberBaseExpr.nodeType === 9 /* Call */ &&
4446
- memberBaseExpr.leftExpression.nodeType === 38 /* Name */ &&
4463
+ if (memberBaseExpr.nodeType === 9 /* ParseNodeType.Call */ &&
4464
+ memberBaseExpr.leftExpression.nodeType === 38 /* ParseNodeType.Name */ &&
4447
4465
  memberBaseExpr.leftExpression.value === 'super') {
4448
4466
  foundCallOfMember = true;
4449
4467
  }
@@ -4493,7 +4511,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4493
4511
  return;
4494
4512
  }
4495
4513
  // If the method starts with a `*args: P.args`, skip the check.
4496
- if (paramInfo.category === 1 /* ArgsList */ &&
4514
+ if (paramInfo.category === 1 /* ParameterCategory.ArgsList */ &&
4497
4515
  (0, types_1.isParamSpec)(paramInfo.type) &&
4498
4516
  paramInfo.type.paramSpecAccess === 'args') {
4499
4517
  return;
@@ -4645,7 +4663,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4645
4663
  const importStatements = (0, importStatementUtils_1.getTopLevelImports)(this._moduleNode);
4646
4664
  const importModuleMap = new Map();
4647
4665
  importStatements.orderedImports.forEach((importStatement) => {
4648
- if (importStatement.node.nodeType === 22 /* ImportFrom */) {
4666
+ if (importStatement.node.nodeType === 22 /* ParseNodeType.ImportFrom */) {
4649
4667
  const symbolMap = new Map();
4650
4668
  importStatement.node.imports.forEach((importFromAs) => {
4651
4669
  // Ignore duplicates if they're aliased.
@@ -4678,7 +4696,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
4678
4696
  const regionComments = (0, regions_1.getRegionComments)(this._parseResults);
4679
4697
  const regionStack = [];
4680
4698
  regionComments.forEach((regionComment) => {
4681
- if (regionComment.type === 0 /* Region */) {
4699
+ if (regionComment.type === 0 /* RegionCommentType.Region */) {
4682
4700
  regionStack.push(regionComment);
4683
4701
  }
4684
4702
  else {