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

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 (402) 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 +201 -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.d.ts +4 -1
  16. package/dist/analyzer/checker.js +403 -248
  17. package/dist/analyzer/checker.js.map +1 -1
  18. package/dist/analyzer/codeFlowEngine.d.ts +1 -1
  19. package/dist/analyzer/codeFlowEngine.js +33 -26
  20. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  21. package/dist/analyzer/codeFlowTypes.d.ts +1 -1
  22. package/dist/analyzer/codeFlowTypes.js +23 -23
  23. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  24. package/dist/analyzer/codeFlowUtils.js +39 -37
  25. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  26. package/dist/analyzer/commentUtils.js +7 -0
  27. package/dist/analyzer/commentUtils.js.map +1 -1
  28. package/dist/analyzer/constraintSolver.js +51 -47
  29. package/dist/analyzer/constraintSolver.js.map +1 -1
  30. package/dist/analyzer/constructorTransform.js +8 -8
  31. package/dist/analyzer/constructorTransform.js.map +1 -1
  32. package/dist/analyzer/constructors.js +25 -26
  33. package/dist/analyzer/constructors.js.map +1 -1
  34. package/dist/analyzer/dataClasses.js +124 -109
  35. package/dist/analyzer/dataClasses.js.map +1 -1
  36. package/dist/analyzer/declaration.d.ts +2 -2
  37. package/dist/analyzer/declaration.js +10 -10
  38. package/dist/analyzer/declaration.js.map +1 -1
  39. package/dist/analyzer/declarationUtils.js +41 -41
  40. package/dist/analyzer/declarationUtils.js.map +1 -1
  41. package/dist/analyzer/decorators.js +51 -51
  42. package/dist/analyzer/decorators.js.map +1 -1
  43. package/dist/analyzer/enums.js +27 -27
  44. package/dist/analyzer/enums.js.map +1 -1
  45. package/dist/analyzer/functionTransform.js +4 -4
  46. package/dist/analyzer/functionTransform.js.map +1 -1
  47. package/dist/analyzer/importResolver.d.ts +1 -1
  48. package/dist/analyzer/importResolver.js +21 -17
  49. package/dist/analyzer/importResolver.js.map +1 -1
  50. package/dist/analyzer/importResult.js +1 -1
  51. package/dist/analyzer/importResult.js.map +1 -1
  52. package/dist/analyzer/importStatementUtils.js +31 -27
  53. package/dist/analyzer/importStatementUtils.js.map +1 -1
  54. package/dist/analyzer/namedTuples.js +36 -32
  55. package/dist/analyzer/namedTuples.js.map +1 -1
  56. package/dist/analyzer/operations.js +94 -92
  57. package/dist/analyzer/operations.js.map +1 -1
  58. package/dist/analyzer/packageTypeReport.d.ts +1 -1
  59. package/dist/analyzer/packageTypeReport.js +2 -2
  60. package/dist/analyzer/packageTypeReport.js.map +1 -1
  61. package/dist/analyzer/packageTypeVerifier.js +90 -90
  62. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  63. package/dist/analyzer/parameterUtils.js +14 -14
  64. package/dist/analyzer/parameterUtils.js.map +1 -1
  65. package/dist/analyzer/parentDirectoryCache.d.ts +2 -2
  66. package/dist/analyzer/parseTreeCleaner.js +5 -1
  67. package/dist/analyzer/parseTreeCleaner.js.map +1 -1
  68. package/dist/analyzer/parseTreeUtils.d.ts +1 -1
  69. package/dist/analyzer/parseTreeUtils.js +383 -379
  70. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  71. package/dist/analyzer/parseTreeWalker.js +161 -157
  72. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  73. package/dist/analyzer/patternMatching.d.ts +1 -1
  74. package/dist/analyzer/patternMatching.js +52 -50
  75. package/dist/analyzer/patternMatching.js.map +1 -1
  76. package/dist/analyzer/program.d.ts +1 -1
  77. package/dist/analyzer/program.js +18 -14
  78. package/dist/analyzer/program.js.map +1 -1
  79. package/dist/analyzer/properties.js +53 -44
  80. package/dist/analyzer/properties.js.map +1 -1
  81. package/dist/analyzer/protocols.js +41 -27
  82. package/dist/analyzer/protocols.js.map +1 -1
  83. package/dist/analyzer/pythonPathUtils.js +5 -1
  84. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  85. package/dist/analyzer/regions.js +3 -3
  86. package/dist/analyzer/regions.js.map +1 -1
  87. package/dist/analyzer/scope.js +8 -8
  88. package/dist/analyzer/scope.js.map +1 -1
  89. package/dist/analyzer/scopeUtils.js +1 -1
  90. package/dist/analyzer/scopeUtils.js.map +1 -1
  91. package/dist/analyzer/service.js +5 -1
  92. package/dist/analyzer/service.js.map +1 -1
  93. package/dist/analyzer/sourceFile.js +25 -21
  94. package/dist/analyzer/sourceFile.js.map +1 -1
  95. package/dist/analyzer/sourceMapper.d.ts +2 -2
  96. package/dist/analyzer/sourceMapper.js +12 -8
  97. package/dist/analyzer/sourceMapper.js.map +1 -1
  98. package/dist/analyzer/staticExpressions.js +40 -40
  99. package/dist/analyzer/staticExpressions.js.map +1 -1
  100. package/dist/analyzer/symbol.d.ts +1 -1
  101. package/dist/analyzer/symbol.js +26 -26
  102. package/dist/analyzer/symbol.js.map +1 -1
  103. package/dist/analyzer/symbolUtils.js +1 -1
  104. package/dist/analyzer/symbolUtils.js.map +1 -1
  105. package/dist/analyzer/testWalker.js +5 -5
  106. package/dist/analyzer/testWalker.js.map +1 -1
  107. package/dist/analyzer/tracePrinter.d.ts +1 -1
  108. package/dist/analyzer/tracePrinter.js +35 -31
  109. package/dist/analyzer/tracePrinter.js.map +1 -1
  110. package/dist/analyzer/typeCacheUtils.js +5 -1
  111. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  112. package/dist/analyzer/typeDocStringUtils.js +13 -9
  113. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  114. package/dist/analyzer/typeEvaluator.js +1347 -1270
  115. package/dist/analyzer/typeEvaluator.js.map +1 -1
  116. package/dist/analyzer/typeEvaluatorTypes.d.ts +4 -2
  117. package/dist/analyzer/typeEvaluatorTypes.js +4 -2
  118. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  119. package/dist/analyzer/typeGuards.d.ts +1 -1
  120. package/dist/analyzer/typeGuards.js +79 -65
  121. package/dist/analyzer/typeGuards.js.map +1 -1
  122. package/dist/analyzer/typePrinter.d.ts +1 -1
  123. package/dist/analyzer/typePrinter.js +80 -76
  124. package/dist/analyzer/typePrinter.js.map +1 -1
  125. package/dist/analyzer/typeStubWriter.js +26 -22
  126. package/dist/analyzer/typeStubWriter.js.map +1 -1
  127. package/dist/analyzer/typeUtils.d.ts +1 -1
  128. package/dist/analyzer/typeUtils.js +139 -135
  129. package/dist/analyzer/typeUtils.js.map +1 -1
  130. package/dist/analyzer/typeVarContext.d.ts +2 -0
  131. package/dist/analyzer/typeVarContext.js +36 -9
  132. package/dist/analyzer/typeVarContext.js.map +1 -1
  133. package/dist/analyzer/typeWalker.js +10 -10
  134. package/dist/analyzer/typedDicts.js +76 -102
  135. package/dist/analyzer/typedDicts.js.map +1 -1
  136. package/dist/analyzer/types.d.ts +18 -18
  137. package/dist/analyzer/types.js +186 -191
  138. package/dist/analyzer/types.js.map +1 -1
  139. package/dist/backgroundAnalysisBase.d.ts +2 -2
  140. package/dist/backgroundAnalysisBase.js +5 -1
  141. package/dist/backgroundAnalysisBase.js.map +1 -1
  142. package/dist/backgroundThreadBase.js +5 -1
  143. package/dist/backgroundThreadBase.js.map +1 -1
  144. package/dist/commands/commandController.js +6 -7
  145. package/dist/commands/commandController.js.map +1 -1
  146. package/dist/commands/commandResult.js +1 -1
  147. package/dist/commands/commandResult.js.map +1 -1
  148. package/dist/commands/commands.d.ts +0 -1
  149. package/dist/commands/commands.js +1 -2
  150. package/dist/commands/commands.js.map +1 -1
  151. package/dist/commands/dumpFileDebugInfoCommand.js +196 -196
  152. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  153. package/dist/commands/quickActionCommand.js +1 -1
  154. package/dist/commands/quickActionCommand.js.map +1 -1
  155. package/dist/common/charCodes.js +1 -1
  156. package/dist/common/charCodes.js.map +1 -1
  157. package/dist/common/chokidarFileWatcherProvider.js +5 -1
  158. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  159. package/dist/common/collectionUtils.d.ts +3 -3
  160. package/dist/common/collectionUtils.js +3 -3
  161. package/dist/common/collectionUtils.js.map +1 -1
  162. package/dist/common/commandLineOptions.d.ts +1 -1
  163. package/dist/common/commandLineOptions.js +5 -5
  164. package/dist/common/commandLineOptions.js.map +1 -1
  165. package/dist/common/configOptions.d.ts +2 -1
  166. package/dist/common/configOptions.js +102 -10
  167. package/dist/common/configOptions.js.map +1 -1
  168. package/dist/common/console.js +7 -3
  169. package/dist/common/console.js.map +1 -1
  170. package/dist/common/core.d.ts +2 -2
  171. package/dist/common/core.js +6 -6
  172. package/dist/common/core.js.map +1 -1
  173. package/dist/common/diagnostic.d.ts +0 -4
  174. package/dist/common/diagnostic.js +6 -6
  175. package/dist/common/diagnostic.js.map +1 -1
  176. package/dist/common/diagnosticRules.js +1 -1
  177. package/dist/common/diagnosticRules.js.map +1 -1
  178. package/dist/common/diagnosticSink.js +12 -12
  179. package/dist/common/diagnosticSink.js.map +1 -1
  180. package/dist/common/editAction.d.ts +1 -1
  181. package/dist/common/editAction.js +2 -2
  182. package/dist/common/editAction.js.map +1 -1
  183. package/dist/common/envVarUtils.js +5 -1
  184. package/dist/common/envVarUtils.js.map +1 -1
  185. package/dist/common/extensibility.js +1 -1
  186. package/dist/common/extensibility.js.map +1 -1
  187. package/dist/common/fileBasedCancellationUtils.js +5 -1
  188. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  189. package/dist/common/fileSystem.d.ts +1 -0
  190. package/dist/common/fileSystem.js +2 -2
  191. package/dist/common/fileSystem.js.map +1 -1
  192. package/dist/common/fileWatcher.d.ts +2 -2
  193. package/dist/common/fullAccessHost.js +10 -6
  194. package/dist/common/fullAccessHost.js.map +1 -1
  195. package/dist/common/host.d.ts +1 -1
  196. package/dist/common/host.js +2 -2
  197. package/dist/common/host.js.map +1 -1
  198. package/dist/common/lspUtils.js +7 -7
  199. package/dist/common/lspUtils.js.map +1 -1
  200. package/dist/common/memUtils.d.ts +1 -1
  201. package/dist/common/pathUtils.js +12 -8
  202. package/dist/common/pathUtils.js.map +1 -1
  203. package/dist/common/pythonVersion.js +1 -1
  204. package/dist/common/pythonVersion.js.map +1 -1
  205. package/dist/common/realFileSystem.js +5 -1
  206. package/dist/common/realFileSystem.js.map +1 -1
  207. package/dist/common/serviceProvider.d.ts +1 -1
  208. package/dist/common/serviceProvider.js +5 -1
  209. package/dist/common/serviceProvider.js.map +1 -1
  210. package/dist/common/serviceProviderExtensions.js +1 -1
  211. package/dist/common/serviceProviderExtensions.js.map +1 -1
  212. package/dist/common/stringUtils.js +5 -5
  213. package/dist/common/stringUtils.js.map +1 -1
  214. package/dist/common/textEditTracker.js +11 -7
  215. package/dist/common/textEditTracker.js.map +1 -1
  216. package/dist/common/textRange.js +3 -3
  217. package/dist/common/textRange.js.map +1 -1
  218. package/dist/languageServerBase.js +13 -13
  219. package/dist/languageServerBase.js.map +1 -1
  220. package/dist/languageService/autoImporter.d.ts +3 -3
  221. package/dist/languageService/autoImporter.js +12 -8
  222. package/dist/languageService/autoImporter.js.map +1 -1
  223. package/dist/languageService/callHierarchyProvider.js +27 -23
  224. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  225. package/dist/languageService/codeActionProvider.js +5 -19
  226. package/dist/languageService/codeActionProvider.js.map +1 -1
  227. package/dist/languageService/completionProvider.js +166 -162
  228. package/dist/languageService/completionProvider.js.map +1 -1
  229. package/dist/languageService/completionProviderUtils.js +9 -9
  230. package/dist/languageService/completionProviderUtils.js.map +1 -1
  231. package/dist/languageService/definitionProvider.js +14 -10
  232. package/dist/languageService/definitionProvider.js.map +1 -1
  233. package/dist/languageService/documentHighlightProvider.js +7 -3
  234. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  235. package/dist/languageService/documentSymbolCollector.d.ts +1 -1
  236. package/dist/languageService/documentSymbolCollector.js +21 -17
  237. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  238. package/dist/languageService/hoverProvider.js +30 -26
  239. package/dist/languageService/hoverProvider.js.map +1 -1
  240. package/dist/languageService/importSorter.js +1 -1
  241. package/dist/languageService/importSorter.js.map +1 -1
  242. package/dist/languageService/quickActions.d.ts +1 -2
  243. package/dist/languageService/quickActions.js +1 -77
  244. package/dist/languageService/quickActions.js.map +1 -1
  245. package/dist/languageService/referencesProvider.d.ts +1 -1
  246. package/dist/languageService/referencesProvider.js +24 -20
  247. package/dist/languageService/referencesProvider.js.map +1 -1
  248. package/dist/languageService/signatureHelpProvider.js +8 -4
  249. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  250. package/dist/languageService/symbolIndexer.js +8 -4
  251. package/dist/languageService/symbolIndexer.js.map +1 -1
  252. package/dist/languageService/tooltipUtils.js +20 -16
  253. package/dist/languageService/tooltipUtils.js.map +1 -1
  254. package/dist/languageService/workspaceSymbolProvider.js +5 -1
  255. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  256. package/dist/localization/localize.d.ts +19 -18
  257. package/dist/localization/localize.js +11 -8
  258. package/dist/localization/localize.js.map +1 -1
  259. package/dist/localization/package.nls.cs.json +0 -7
  260. package/dist/localization/package.nls.de.json +0 -7
  261. package/dist/localization/package.nls.en-us.json +11 -8
  262. package/dist/localization/package.nls.es.json +2 -9
  263. package/dist/localization/package.nls.fr.json +0 -7
  264. package/dist/localization/package.nls.it.json +0 -7
  265. package/dist/localization/package.nls.ja.json +0 -7
  266. package/dist/localization/package.nls.ko.json +0 -7
  267. package/dist/localization/package.nls.pl.json +0 -7
  268. package/dist/localization/package.nls.pt-br.json +0 -7
  269. package/dist/localization/package.nls.qps-ploc.json +0 -7
  270. package/dist/localization/package.nls.ru.json +0 -7
  271. package/dist/localization/package.nls.tr.json +0 -7
  272. package/dist/localization/package.nls.zh-cn.json +0 -7
  273. package/dist/localization/package.nls.zh-tw.json +0 -7
  274. package/dist/parser/characterStream.js +3 -3
  275. package/dist/parser/characterStream.js.map +1 -1
  276. package/dist/parser/characters.js +13 -9
  277. package/dist/parser/characters.js.map +1 -1
  278. package/dist/parser/parseNodes.d.ts +12 -12
  279. package/dist/parser/parseNodes.js +193 -193
  280. package/dist/parser/parseNodes.js.map +1 -1
  281. package/dist/parser/parser.js +563 -559
  282. package/dist/parser/parser.js.map +1 -1
  283. package/dist/parser/stringTokenUtils.js +47 -47
  284. package/dist/parser/stringTokenUtils.js.map +1 -1
  285. package/dist/parser/tokenizer.js +288 -288
  286. package/dist/parser/tokenizer.js.map +1 -1
  287. package/dist/parser/tokenizerTypes.js +35 -35
  288. package/dist/parser/tokenizerTypes.js.map +1 -1
  289. package/dist/parser/unicode.d.ts +3 -3
  290. package/dist/pyright.js +21 -17
  291. package/dist/pyright.js.map +1 -1
  292. package/dist/pyrightFileSystem.d.ts +1 -0
  293. package/dist/pyrightFileSystem.js +2 -2
  294. package/dist/pyrightFileSystem.js.map +1 -1
  295. package/dist/readonlyAugmentedFileSystem.d.ts +2 -1
  296. package/dist/readonlyAugmentedFileSystem.js +15 -5
  297. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  298. package/dist/server.js +1 -1
  299. package/dist/server.js.map +1 -1
  300. package/dist/tests/chainedSourceFiles.test.js +5 -1
  301. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  302. package/dist/tests/checker.test.js +13 -1
  303. package/dist/tests/checker.test.js.map +1 -1
  304. package/dist/tests/collectionUtils.test.js +5 -1
  305. package/dist/tests/collectionUtils.test.js.map +1 -1
  306. package/dist/tests/common.test.js +5 -1
  307. package/dist/tests/common.test.js.map +1 -1
  308. package/dist/tests/debug.test.js +8 -4
  309. package/dist/tests/debug.test.js.map +1 -1
  310. package/dist/tests/deferred.test.js +5 -1
  311. package/dist/tests/deferred.test.js.map +1 -1
  312. package/dist/tests/diagnosticOverrides.test.js +5 -1
  313. package/dist/tests/diagnosticOverrides.test.js.map +1 -1
  314. package/dist/tests/docStringUtils.test.js +5 -1
  315. package/dist/tests/docStringUtils.test.js.map +1 -1
  316. package/dist/tests/filesystem.test.js +5 -1
  317. package/dist/tests/filesystem.test.js.map +1 -1
  318. package/dist/tests/fourSlashParser.test.js +5 -1
  319. package/dist/tests/fourSlashParser.test.js.map +1 -1
  320. package/dist/tests/fourSlashRunner.test.js +5 -1
  321. package/dist/tests/fourSlashRunner.test.js.map +1 -1
  322. package/dist/tests/fourslash/fourslash.d.ts +1 -2
  323. package/dist/tests/harness/fourslash/fourSlashParser.js +13 -13
  324. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  325. package/dist/tests/harness/fourslash/fourSlashTypes.js +11 -7
  326. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  327. package/dist/tests/harness/fourslash/runner.d.ts +1 -1
  328. package/dist/tests/harness/fourslash/runner.js +5 -1
  329. package/dist/tests/harness/fourslash/runner.js.map +1 -1
  330. package/dist/tests/harness/fourslash/testLanguageService.js +5 -1
  331. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  332. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -2
  333. package/dist/tests/harness/fourslash/testState.Consts.js +6 -3
  334. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  335. package/dist/tests/harness/fourslash/testState.js +18 -14
  336. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  337. package/dist/tests/harness/fourslash/testStateUtils.js +9 -5
  338. package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
  339. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +5 -1
  340. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  341. package/dist/tests/harness/testHost.js +5 -1
  342. package/dist/tests/harness/testHost.js.map +1 -1
  343. package/dist/tests/harness/utils.d.ts +13 -12
  344. package/dist/tests/harness/utils.js.map +1 -1
  345. package/dist/tests/harness/vfs/factory.js +6 -2
  346. package/dist/tests/harness/vfs/factory.js.map +1 -1
  347. package/dist/tests/harness/vfs/filesystem.d.ts +4 -3
  348. package/dist/tests/harness/vfs/filesystem.js +11 -7
  349. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  350. package/dist/tests/harness/vfs/pathValidation.js +30 -26
  351. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  352. package/dist/tests/importStatementUtils.test.js +25 -25
  353. package/dist/tests/importStatementUtils.test.js.map +1 -1
  354. package/dist/tests/ipythonMode.test.js +6 -6
  355. package/dist/tests/ipythonMode.test.js.map +1 -1
  356. package/dist/tests/localizer.test.js +5 -1
  357. package/dist/tests/localizer.test.js.map +1 -1
  358. package/dist/tests/logger.test.js +5 -1
  359. package/dist/tests/logger.test.js.map +1 -1
  360. package/dist/tests/parseTreeUtils.test.js +10 -10
  361. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  362. package/dist/tests/parser.test.js +13 -9
  363. package/dist/tests/parser.test.js.map +1 -1
  364. package/dist/tests/pathUtils.test.js +5 -1
  365. package/dist/tests/pathUtils.test.js.map +1 -1
  366. package/dist/tests/pyrightFileSystem.test.js +48 -1
  367. package/dist/tests/pyrightFileSystem.test.js.map +1 -1
  368. package/dist/tests/sourceFile.test.js +5 -1
  369. package/dist/tests/sourceFile.test.js.map +1 -1
  370. package/dist/tests/sourceMapperUtils.test.js +5 -1
  371. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  372. package/dist/tests/stringUtils.test.js +10 -6
  373. package/dist/tests/stringUtils.test.js.map +1 -1
  374. package/dist/tests/symbolNameUtils.test.js +5 -1
  375. package/dist/tests/symbolNameUtils.test.js.map +1 -1
  376. package/dist/tests/testState.test.js +5 -1
  377. package/dist/tests/testState.test.js.map +1 -1
  378. package/dist/tests/testUtils.js +11 -7
  379. package/dist/tests/testUtils.js.map +1 -1
  380. package/dist/tests/textRange.test.js +5 -1
  381. package/dist/tests/textRange.test.js.map +1 -1
  382. package/dist/tests/tokenizer.test.js +463 -459
  383. package/dist/tests/tokenizer.test.js.map +1 -1
  384. package/dist/tests/typeEvaluator1.test.js +22 -7
  385. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  386. package/dist/tests/typeEvaluator2.test.js +14 -6
  387. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  388. package/dist/tests/typeEvaluator3.test.js +23 -12
  389. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  390. package/dist/tests/typeEvaluator4.test.js +16 -4
  391. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  392. package/dist/tests/typeEvaluator5.test.js +13 -5
  393. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  394. package/dist/tests/typePrinter.test.js +44 -40
  395. package/dist/tests/typePrinter.test.js.map +1 -1
  396. package/dist/tests/workspaceEditUtils.test.js +5 -1
  397. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  398. package/dist/tests/zipfs.test.js +5 -1
  399. package/dist/tests/zipfs.test.js.map +1 -1
  400. package/dist/workspaceFactory.js +2 -2
  401. package/dist/workspaceFactory.js.map +1 -1
  402. package/package.json +2 -2
@@ -10,7 +10,11 @@
10
10
  */
11
11
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
12
  if (k2 === undefined) k2 = k;
13
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
14
18
  }) : (function(o, m, k, k2) {
15
19
  if (k2 === undefined) k2 = k;
16
20
  o[k2] = m[k];
@@ -51,13 +55,13 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
51
55
  var _a;
52
56
  (0, debug_1.assert)(types_1.ClassType.isDataClass(classType));
53
57
  const classTypeVar = (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ true);
54
- const newType = types_1.FunctionType.createSynthesizedInstance('__new__', 1 /* ConstructorMethod */);
58
+ const newType = types_1.FunctionType.createSynthesizedInstance('__new__', 1 /* FunctionTypeFlags.ConstructorMethod */);
55
59
  const initType = types_1.FunctionType.createSynthesizedInstance('__init__');
56
60
  // Override `__new__` because some dataclasses (such as those that are
57
61
  // created by subclassing from NamedTuple) may have their own custom
58
62
  // __new__ that requires overriding.
59
63
  types_1.FunctionType.addParameter(newType, {
60
- category: 0 /* Simple */,
64
+ category: 0 /* ParameterCategory.Simple */,
61
65
  name: 'cls',
62
66
  type: classTypeVar,
63
67
  hasDeclaredType: true,
@@ -65,7 +69,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
65
69
  types_1.FunctionType.addDefaultParameters(newType);
66
70
  newType.details.declaredReturnType = (0, typeUtils_1.convertToInstance)(classTypeVar);
67
71
  const selfParam = {
68
- category: 0 /* Simple */,
72
+ category: 0 /* ParameterCategory.Simple */,
69
73
  name: 'self',
70
74
  type: (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ false),
71
75
  hasDeclaredType: true,
@@ -87,7 +91,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
87
91
  const localEntryTypeEvaluator = [];
88
92
  let sawKeywordOnlySeparator = false;
89
93
  classType.details.fields.forEach((symbol, name) => {
90
- var _a, _b, _c;
94
+ var _a, _b, _c, _d, _e, _f, _g;
91
95
  if (symbol.isIgnoredForProtocolMatch()) {
92
96
  return;
93
97
  }
@@ -98,11 +102,11 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
98
102
  }
99
103
  // Only variables (not functions, classes, etc.) are considered.
100
104
  const classVarDecl = symbol.getTypedDeclarations().find((decl) => {
101
- if (decl.type !== 1 /* Variable */) {
105
+ if (decl.type !== 1 /* DeclarationType.Variable */) {
102
106
  return false;
103
107
  }
104
108
  const container = (0, parseTreeUtils_1.getEnclosingClassOrFunction)(decl.node);
105
- if (!container || container.nodeType !== 10 /* Class */) {
109
+ if (!container || container.nodeType !== 10 /* ParseNodeType.Class */) {
106
110
  return false;
107
111
  }
108
112
  return true;
@@ -110,11 +114,11 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
110
114
  if (classVarDecl) {
111
115
  let statement = classVarDecl.node;
112
116
  while (statement) {
113
- if (statement.nodeType === 3 /* Assignment */) {
117
+ if (statement.nodeType === 3 /* ParseNodeType.Assignment */) {
114
118
  break;
115
119
  }
116
- if (statement.nodeType === 54 /* TypeAnnotation */) {
117
- if (((_a = statement.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* Assignment */) {
120
+ if (statement.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
121
+ if (((_a = statement.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* ParseNodeType.Assignment */) {
118
122
  statement = statement.parent;
119
123
  }
120
124
  break;
@@ -132,9 +136,9 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
132
136
  let defaultValueExpression;
133
137
  let includeInInit = true;
134
138
  let converter;
135
- if (statement.nodeType === 3 /* Assignment */) {
136
- if (statement.leftExpression.nodeType === 54 /* TypeAnnotation */ &&
137
- statement.leftExpression.valueExpression.nodeType === 38 /* Name */) {
139
+ if (statement.nodeType === 3 /* ParseNodeType.Assignment */) {
140
+ if (statement.leftExpression.nodeType === 54 /* ParseNodeType.TypeAnnotation */ &&
141
+ statement.leftExpression.valueExpression.nodeType === 38 /* ParseNodeType.Name */) {
138
142
  variableNameNode = statement.leftExpression.valueExpression;
139
143
  const assignmentStatement = statement;
140
144
  variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(assignmentStatement.leftExpression.typeAnnotation, {
@@ -147,62 +151,29 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
147
151
  defaultValueExpression = statement.rightExpression;
148
152
  // If the RHS of the assignment is assigning a field instance where the
149
153
  // "init" parameter is set to false, do not include it in the init method.
150
- if (statement.rightExpression.nodeType === 9 /* Call */) {
151
- const callTypeResult = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 16777218 /* CallBaseDefaults */);
154
+ if (statement.rightExpression.nodeType === 9 /* ParseNodeType.Call */) {
155
+ const callTypeResult = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */);
152
156
  const callType = callTypeResult.type;
153
157
  if (isDataclassFieldConstructor(callType, ((_b = classType.details.dataClassBehaviors) === null || _b === void 0 ? void 0 : _b.fieldDescriptorNames) || [])) {
154
158
  const initArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'init'; });
155
159
  if (initArg && initArg.valueExpression) {
156
160
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
157
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(initArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
158
- if (value === false) {
159
- includeInInit = false;
160
- }
161
+ includeInInit =
162
+ (_c = (0, staticExpressions_1.evaluateStaticBoolExpression)(initArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _c !== void 0 ? _c : includeInInit;
161
163
  }
162
164
  else {
163
- // See if the field constructor has an `init` parameter with
164
- // a default value.
165
- let callTarget;
166
- if ((0, types_1.isFunction)(callType)) {
167
- callTarget = callType;
168
- }
169
- else if ((0, types_1.isOverloadedFunction)(callType)) {
170
- callTarget = evaluator.getBestOverloadForArguments(statement.rightExpression, { type: callType, isIncomplete: callTypeResult.isIncomplete }, statement.rightExpression.arguments);
171
- }
172
- else if ((0, types_1.isInstantiableClass)(callType)) {
173
- const initMethodResult = (0, constructors_1.getBoundInitMethod)(evaluator, node.name, callType);
174
- if (initMethodResult) {
175
- if ((0, types_1.isFunction)(initMethodResult.type)) {
176
- callTarget = initMethodResult.type;
177
- }
178
- else if ((0, types_1.isOverloadedFunction)(initMethodResult.type)) {
179
- callTarget = evaluator.getBestOverloadForArguments(statement.rightExpression, { type: initMethodResult.type }, statement.rightExpression.arguments);
180
- }
181
- }
182
- }
183
- if (callTarget) {
184
- const initParam = callTarget.details.parameters.find((p) => p.name === 'init');
185
- if (initParam && initParam.defaultValueExpression && initParam.hasDeclaredType) {
186
- if ((0, types_1.isClass)(initParam.type) &&
187
- types_1.ClassType.isBuiltIn(initParam.type, 'bool') &&
188
- (0, typeUtils_1.isLiteralType)(initParam.type)) {
189
- if (initParam.type.literalValue === false) {
190
- includeInInit = false;
191
- }
192
- }
193
- }
194
- }
165
+ includeInInit =
166
+ (_d = getDefaultArgValueForFieldSpecifier(evaluator, statement.rightExpression, callTypeResult, 'init')) !== null && _d !== void 0 ? _d : includeInInit;
195
167
  }
196
168
  const kwOnlyArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'kw_only'; });
197
169
  if (kwOnlyArg && kwOnlyArg.valueExpression) {
198
170
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
199
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(kwOnlyArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
200
- if (value === false) {
201
- isKeywordOnly = false;
202
- }
203
- else if (value === true) {
204
- isKeywordOnly = true;
205
- }
171
+ isKeywordOnly =
172
+ (_e = (0, staticExpressions_1.evaluateStaticBoolExpression)(kwOnlyArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _e !== void 0 ? _e : isKeywordOnly;
173
+ }
174
+ else {
175
+ isKeywordOnly =
176
+ (_f = getDefaultArgValueForFieldSpecifier(evaluator, statement.rightExpression, callTypeResult, 'kw_only')) !== null && _f !== void 0 ? _f : isKeywordOnly;
206
177
  }
207
178
  const defaultArg = statement.rightExpression.arguments.find((arg) => {
208
179
  var _a, _b, _c;
@@ -230,8 +201,8 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
230
201
  }
231
202
  }
232
203
  }
233
- else if (statement.nodeType === 54 /* TypeAnnotation */) {
234
- if (statement.valueExpression.nodeType === 38 /* Name */) {
204
+ else if (statement.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
205
+ if (statement.valueExpression.nodeType === 38 /* ParseNodeType.Name */) {
235
206
  variableNameNode = statement.valueExpression;
236
207
  const annotationStatement = statement;
237
208
  variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(annotationStatement.typeAnnotation, {
@@ -255,7 +226,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
255
226
  // Don't include class vars. PEP 557 indicates that they shouldn't
256
227
  // be considered data class entries.
257
228
  const variableSymbol = classType.details.fields.get(variableName);
258
- const isFinal = variableSymbol === null || variableSymbol === void 0 ? void 0 : variableSymbol.getDeclarations().some((decl) => decl.type === 1 /* Variable */ && decl.isFinal);
229
+ const isFinal = variableSymbol === null || variableSymbol === void 0 ? void 0 : variableSymbol.getDeclarations().some((decl) => decl.type === 1 /* DeclarationType.Variable */ && decl.isFinal);
259
230
  if ((variableSymbol === null || variableSymbol === void 0 ? void 0 : variableSymbol.isClassVar()) && !isFinal) {
260
231
  // If an ancestor class declared an instance variable but this dataclass
261
232
  // declares a ClassVar, delete the older one from the full data class entries.
@@ -343,18 +314,18 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
343
314
  return;
344
315
  }
345
316
  const lastDecl = declarations[declarations.length - 1];
346
- if (lastDecl.type !== 1 /* Variable */) {
317
+ if (lastDecl.type !== 1 /* DeclarationType.Variable */) {
347
318
  return;
348
319
  }
349
320
  const statement = lastDecl.node.parent;
350
- if (!statement || statement.nodeType !== 3 /* Assignment */) {
321
+ if (!statement || statement.nodeType !== 3 /* ParseNodeType.Assignment */) {
351
322
  return;
352
323
  }
353
324
  // If the RHS of the assignment is assigning a field instance where the
354
325
  // "init" parameter is set to false, do not include it in the init method.
355
- if (statement.rightExpression.nodeType === 9 /* Call */) {
356
- const callType = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 16777218 /* CallBaseDefaults */).type;
357
- if (isDataclassFieldConstructor(callType, ((_c = classType.details.dataClassBehaviors) === null || _c === void 0 ? void 0 : _c.fieldDescriptorNames) || [])) {
326
+ if (statement.rightExpression.nodeType === 9 /* ParseNodeType.Call */) {
327
+ const callType = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 16777218 /* EvaluatorFlags.CallBaseDefaults */).type;
328
+ if (isDataclassFieldConstructor(callType, ((_g = classType.details.dataClassBehaviors) === null || _g === void 0 ? void 0 : _g.fieldDescriptorNames) || [])) {
358
329
  evaluator.addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.dataClassFieldWithoutAnnotation(), statement.rightExpression);
359
330
  }
360
331
  }
@@ -396,7 +367,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
396
367
  evaluator.addError(localize_1.Localizer.Diagnostic.dataClassFieldWithPrivateName(), entry.nameNode);
397
368
  }
398
369
  const functionParam = {
399
- category: 0 /* Simple */,
370
+ category: 0 /* ParameterCategory.Simple */,
400
371
  name: effectiveName,
401
372
  hasDefault: entry.hasDefault,
402
373
  defaultValueExpression: entry.defaultValueExpression,
@@ -413,7 +384,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
413
384
  });
414
385
  if (keywordOnlyParams.length > 0) {
415
386
  types_1.FunctionType.addParameter(initType, {
416
- category: 1 /* ArgsList */,
387
+ category: 1 /* ParameterCategory.ArgsList */,
417
388
  type: types_1.AnyType.create(),
418
389
  });
419
390
  keywordOnlyParams.forEach((param) => {
@@ -421,8 +392,8 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
421
392
  });
422
393
  }
423
394
  }
424
- symbolTable.set('__init__', symbol_1.Symbol.createWithType(4 /* ClassMember */, initType));
425
- symbolTable.set('__new__', symbol_1.Symbol.createWithType(4 /* ClassMember */, newType));
395
+ symbolTable.set('__init__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, initType));
396
+ symbolTable.set('__new__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, newType));
426
397
  }
427
398
  // Synthesize the __match_args__ class variable if it doesn't exist.
428
399
  const strType = evaluator.getBuiltInType(node, 'str');
@@ -443,13 +414,13 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
443
414
  return { type: types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneWithLiteral(strType, name)), isUnbounded: false };
444
415
  });
445
416
  const matchArgsType = types_1.ClassType.cloneAsInstance((0, typeUtils_1.specializeTupleClass)(tupleClassType, literalTypes));
446
- symbolTable.set('__match_args__', symbol_1.Symbol.createWithType(4 /* ClassMember */, matchArgsType));
417
+ symbolTable.set('__match_args__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, matchArgsType));
447
418
  }
448
419
  const synthesizeComparisonMethod = (operator, paramType) => {
449
420
  const operatorMethod = types_1.FunctionType.createSynthesizedInstance(operator);
450
421
  types_1.FunctionType.addParameter(operatorMethod, selfParam);
451
422
  types_1.FunctionType.addParameter(operatorMethod, {
452
- category: 0 /* Simple */,
423
+ category: 0 /* ParameterCategory.Simple */,
453
424
  name: 'other',
454
425
  type: paramType,
455
426
  hasDeclaredType: true,
@@ -457,7 +428,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
457
428
  operatorMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'bool');
458
429
  // If a method of this name already exists, don't override it.
459
430
  if (!symbolTable.get(operator)) {
460
- symbolTable.set(operator, symbol_1.Symbol.createWithType(4 /* ClassMember */, operatorMethod));
431
+ symbolTable.set(operator, symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, operatorMethod));
461
432
  }
462
433
  };
463
434
  // Synthesize comparison operators.
@@ -484,17 +455,17 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
484
455
  const hashMethod = types_1.FunctionType.createSynthesizedInstance('__hash__');
485
456
  types_1.FunctionType.addParameter(hashMethod, selfParam);
486
457
  hashMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'int');
487
- symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 4096 /* IgnoredForOverrideChecks */, hashMethod));
458
+ symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 4096 /* SymbolFlags.IgnoredForOverrideChecks */, hashMethod));
488
459
  }
489
460
  else if (synthesizeHashNone && !skipSynthesizeHash) {
490
- symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 4096 /* IgnoredForOverrideChecks */, evaluator.getNoneType()));
461
+ symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 4096 /* SymbolFlags.IgnoredForOverrideChecks */, evaluator.getNoneType()));
491
462
  }
492
463
  let dictType = evaluator.getBuiltInType(node, 'dict');
493
464
  if ((0, types_1.isInstantiableClass)(dictType)) {
494
465
  dictType = types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneForSpecialization(dictType, [evaluator.getBuiltInObject(node, 'str'), types_1.AnyType.create()],
495
466
  /* isTypeArgumentExplicit */ true));
496
467
  }
497
- symbolTable.set('__dataclass_fields__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 128 /* ClassVar */, dictType));
468
+ symbolTable.set('__dataclass_fields__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 128 /* SymbolFlags.ClassVar */, dictType));
498
469
  if (types_1.ClassType.isGeneratedDataClassSlots(classType) && classType.details.localSlotsNames === undefined) {
499
470
  classType.details.localSlotsNames = localDataClassEntries.map((entry) => entry.name);
500
471
  }
@@ -505,7 +476,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
505
476
  iterableType = types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneForSpecialization(iterableType, [evaluator.getBuiltInObject(node, 'str')],
506
477
  /* isTypeArgumentExplicit */ true));
507
478
  }
508
- symbolTable.set('__slots__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 128 /* ClassVar */, iterableType));
479
+ symbolTable.set('__slots__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 128 /* SymbolFlags.ClassVar */, iterableType));
509
480
  }
510
481
  // If this dataclass derived from a NamedTuple, update the NamedTuple with
511
482
  // the specialized entry types.
@@ -516,6 +487,50 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
516
487
  }
517
488
  }
518
489
  exports.synthesizeDataClassMethods = synthesizeDataClassMethods;
490
+ // If a field specifier is used to define a field, it may define a default
491
+ // argument value (either True or False) for a supported keyword parameter.
492
+ // This function extracts that default value if present and returns it. If
493
+ // it's not present, it returns undefined.
494
+ function getDefaultArgValueForFieldSpecifier(evaluator, callNode, callTypeResult, paramName) {
495
+ const callType = callTypeResult.type;
496
+ let callTarget;
497
+ if ((0, types_1.isFunction)(callType)) {
498
+ callTarget = callType;
499
+ }
500
+ else if ((0, types_1.isOverloadedFunction)(callType)) {
501
+ callTarget = evaluator.getBestOverloadForArguments(callNode, { type: callType, isIncomplete: callTypeResult.isIncomplete }, callNode.arguments);
502
+ }
503
+ else if ((0, types_1.isInstantiableClass)(callType)) {
504
+ const initMethodResult = (0, constructors_1.getBoundInitMethod)(evaluator, callNode, callType);
505
+ if (initMethodResult) {
506
+ if ((0, types_1.isFunction)(initMethodResult.type)) {
507
+ callTarget = initMethodResult.type;
508
+ }
509
+ else if ((0, types_1.isOverloadedFunction)(initMethodResult.type)) {
510
+ callTarget = evaluator.getBestOverloadForArguments(callNode, { type: initMethodResult.type }, callNode.arguments);
511
+ }
512
+ }
513
+ }
514
+ if (callTarget) {
515
+ const initParam = callTarget.details.parameters.find((p) => p.name === paramName);
516
+ if (initParam) {
517
+ // Is the parameter type a literal bool?
518
+ if (initParam.hasDeclaredType &&
519
+ (0, types_1.isClass)(initParam.type) &&
520
+ typeof initParam.type.literalValue === 'boolean') {
521
+ return initParam.type.literalValue;
522
+ }
523
+ // Is the default argument value a literal bool?
524
+ if (initParam.defaultValueExpression &&
525
+ initParam.defaultType &&
526
+ (0, types_1.isClass)(initParam.defaultType) &&
527
+ typeof initParam.defaultType.literalValue === 'boolean') {
528
+ return initParam.defaultType.literalValue;
529
+ }
530
+ }
531
+ }
532
+ return undefined;
533
+ }
519
534
  // Validates converter and, if valid, returns its input type. If invalid,
520
535
  // fieldType is returned.
521
536
  function getConverterInputType(evaluator, converterNode, fieldType, fieldName) {
@@ -532,13 +547,13 @@ function getConverterInputType(evaluator, converterNode, fieldType, fieldName) {
532
547
  targetFunction.details.typeVarScopeId = typeVar.scopeId;
533
548
  targetFunction.details.declaredReturnType = fieldType;
534
549
  types_1.FunctionType.addParameter(targetFunction, {
535
- category: 0 /* Simple */,
550
+ category: 0 /* ParameterCategory.Simple */,
536
551
  name: '__input',
537
552
  type: typeVar,
538
553
  hasDeclaredType: true,
539
554
  });
540
555
  types_1.FunctionType.addParameter(targetFunction, {
541
- category: 0 /* Simple */,
556
+ category: 0 /* ParameterCategory.Simple */,
542
557
  name: '',
543
558
  type: types_1.UnknownType.create(),
544
559
  });
@@ -597,7 +612,7 @@ function getDescriptorForConverterField(evaluator, dataclassNode, converterNode,
597
612
  const fileInfo = (0, analyzerNodeInfo_1.getFileInfo)(dataclassNode);
598
613
  const typeMetaclass = evaluator.getBuiltInType(dataclassNode, 'type');
599
614
  const descriptorName = `__converterDescriptor_${fieldName}`;
600
- const descriptorClass = types_1.ClassType.createInstantiable(descriptorName, (0, parseTreeUtils_1.getClassFullName)(converterNode, fileInfo.moduleName, descriptorName), fileInfo.moduleName, fileInfo.filePath, 0 /* None */, (0, parseTreeUtils_1.getTypeSourceId)(converterNode),
615
+ const descriptorClass = types_1.ClassType.createInstantiable(descriptorName, (0, parseTreeUtils_1.getClassFullName)(converterNode, fileInfo.moduleName, descriptorName), fileInfo.moduleName, fileInfo.filePath, 0 /* ClassTypeFlags.None */, (0, parseTreeUtils_1.getTypeSourceId)(converterNode),
601
616
  /* declaredMetaclass */ undefined, (0, types_1.isInstantiableClass)(typeMetaclass) ? typeMetaclass : types_1.UnknownType.create());
602
617
  descriptorClass.details.baseClasses.push(evaluator.getBuiltInType(dataclassNode, 'object'));
603
618
  (0, typeUtils_1.computeMroLinearization)(descriptorClass);
@@ -605,55 +620,55 @@ function getDescriptorForConverterField(evaluator, dataclassNode, converterNode,
605
620
  const selfType = (0, typeUtils_1.synthesizeTypeVarForSelfCls)(descriptorClass, /* isClsParam */ false);
606
621
  const setFunction = types_1.FunctionType.createSynthesizedInstance('__set__');
607
622
  types_1.FunctionType.addParameter(setFunction, {
608
- category: 0 /* Simple */,
623
+ category: 0 /* ParameterCategory.Simple */,
609
624
  name: 'self',
610
625
  type: selfType,
611
626
  hasDeclaredType: true,
612
627
  });
613
628
  types_1.FunctionType.addParameter(setFunction, {
614
- category: 0 /* Simple */,
629
+ category: 0 /* ParameterCategory.Simple */,
615
630
  name: 'obj',
616
631
  type: types_1.AnyType.create(),
617
632
  hasDeclaredType: true,
618
633
  });
619
634
  types_1.FunctionType.addParameter(setFunction, {
620
- category: 0 /* Simple */,
635
+ category: 0 /* ParameterCategory.Simple */,
621
636
  name: 'value',
622
637
  type: setType,
623
638
  hasDeclaredType: true,
624
639
  });
625
640
  setFunction.details.declaredReturnType = evaluator.getNoneType();
626
- const setSymbol = symbol_1.Symbol.createWithType(4 /* ClassMember */, setFunction);
641
+ const setSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, setFunction);
627
642
  fields.set('__set__', setSymbol);
628
643
  const getFunction = types_1.FunctionType.createSynthesizedInstance('__get__');
629
644
  types_1.FunctionType.addParameter(getFunction, {
630
- category: 0 /* Simple */,
645
+ category: 0 /* ParameterCategory.Simple */,
631
646
  name: 'self',
632
647
  type: selfType,
633
648
  hasDeclaredType: true,
634
649
  });
635
650
  types_1.FunctionType.addParameter(getFunction, {
636
- category: 0 /* Simple */,
651
+ category: 0 /* ParameterCategory.Simple */,
637
652
  name: 'obj',
638
653
  type: types_1.AnyType.create(),
639
654
  hasDeclaredType: true,
640
655
  });
641
656
  types_1.FunctionType.addParameter(getFunction, {
642
- category: 0 /* Simple */,
657
+ category: 0 /* ParameterCategory.Simple */,
643
658
  name: 'objtype',
644
659
  type: types_1.AnyType.create(),
645
660
  hasDeclaredType: true,
646
661
  });
647
662
  getFunction.details.declaredReturnType = getType;
648
- const getSymbol = symbol_1.Symbol.createWithType(4 /* ClassMember */, getFunction);
663
+ const getSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, getFunction);
649
664
  fields.set('__get__', getSymbol);
650
- return symbol_1.Symbol.createWithType(4 /* ClassMember */, types_1.ClassType.cloneAsInstance(descriptorClass));
665
+ return symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, types_1.ClassType.cloneAsInstance(descriptorClass));
651
666
  }
652
667
  // If the specified type is a descriptor — in particular, if it implements a
653
668
  // __set__ method, this method transforms the type into the input parameter
654
669
  // for the set method.
655
670
  function transformDescriptorType(evaluator, type) {
656
- if (!(0, types_1.isClassInstance)(type)) {
671
+ if (!(0, types_1.isClassInstance)(type) || (0, typeUtils_1.isMetaclassInstance)(type)) {
657
672
  return type;
658
673
  }
659
674
  const setMethodType = evaluator.getBoundMagicMethod(type, '__set__');
@@ -732,7 +747,7 @@ function validateDataClassTransformDecorator(evaluator, node) {
732
747
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
733
748
  // Parse the arguments to the call.
734
749
  node.arguments.forEach((arg) => {
735
- if (!arg.name || arg.argumentCategory !== 0 /* Simple */) {
750
+ if (!arg.name || arg.argumentCategory !== 0 /* ArgumentCategory.Simple */) {
736
751
  evaluator.addError(localize_1.Localizer.Diagnostic.dataClassTransformPositionalParam(), arg);
737
752
  return;
738
753
  }
@@ -853,28 +868,28 @@ function applyDataClassBehaviorOverrideValue(evaluator, errorNode, classType, ar
853
868
  switch (argName) {
854
869
  case 'order':
855
870
  if (argValue === true) {
856
- classType.details.flags |= 64 /* SynthesizedDataClassOrder */;
871
+ classType.details.flags |= 64 /* ClassTypeFlags.SynthesizedDataClassOrder */;
857
872
  }
858
873
  else if (argValue === false) {
859
- classType.details.flags &= ~64 /* SynthesizedDataClassOrder */;
874
+ classType.details.flags &= ~64 /* ClassTypeFlags.SynthesizedDataClassOrder */;
860
875
  }
861
876
  break;
862
877
  case 'kw_only':
863
878
  if (argValue === false) {
864
- classType.details.flags &= ~2097152 /* DataClassKeywordOnlyParams */;
879
+ classType.details.flags &= ~2097152 /* ClassTypeFlags.DataClassKeywordOnlyParams */;
865
880
  }
866
881
  else if (argValue === true) {
867
- classType.details.flags |= 2097152 /* DataClassKeywordOnlyParams */;
882
+ classType.details.flags |= 2097152 /* ClassTypeFlags.DataClassKeywordOnlyParams */;
868
883
  }
869
884
  break;
870
885
  case 'frozen': {
871
886
  let hasUnfrozenBaseClass = false;
872
887
  let hasFrozenBaseClass = false;
873
888
  if (argValue === false) {
874
- classType.details.flags &= ~8 /* FrozenDataClass */;
889
+ classType.details.flags &= ~8 /* ClassTypeFlags.FrozenDataClass */;
875
890
  }
876
891
  else if (argValue === true) {
877
- classType.details.flags |= 8 /* FrozenDataClass */;
892
+ classType.details.flags |= 8 /* ClassTypeFlags.FrozenDataClass */;
878
893
  }
879
894
  classType.details.baseClasses.forEach((baseClass) => {
880
895
  if ((0, types_1.isInstantiableClass)(baseClass) && types_1.ClassType.isDataClass(baseClass)) {
@@ -908,35 +923,35 @@ function applyDataClassBehaviorOverrideValue(evaluator, errorNode, classType, ar
908
923
  }
909
924
  case 'init':
910
925
  if (argValue === false) {
911
- classType.details.flags |= 16 /* SkipSynthesizedDataClassInit */;
926
+ classType.details.flags |= 16 /* ClassTypeFlags.SkipSynthesizedDataClassInit */;
912
927
  }
913
928
  else if (argValue === true) {
914
- classType.details.flags &= ~16 /* SkipSynthesizedDataClassInit */;
929
+ classType.details.flags &= ~16 /* ClassTypeFlags.SkipSynthesizedDataClassInit */;
915
930
  }
916
931
  break;
917
932
  case 'eq':
918
933
  if (argValue === false) {
919
- classType.details.flags |= 32 /* SkipSynthesizedDataClassEq */;
934
+ classType.details.flags |= 32 /* ClassTypeFlags.SkipSynthesizedDataClassEq */;
920
935
  }
921
936
  else if (argValue === true) {
922
- classType.details.flags &= ~32 /* SkipSynthesizedDataClassEq */;
937
+ classType.details.flags &= ~32 /* ClassTypeFlags.SkipSynthesizedDataClassEq */;
923
938
  }
924
939
  break;
925
940
  case 'slots':
926
941
  if (argValue === true) {
927
- classType.details.flags |= 33554432 /* GenerateDataClassSlots */;
942
+ classType.details.flags |= 33554432 /* ClassTypeFlags.GenerateDataClassSlots */;
928
943
  if (classType.details.localSlotsNames) {
929
944
  evaluator.addDiagnostic(AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.dataClassSlotsOverwrite(), errorNode);
930
945
  }
931
946
  }
932
947
  else if (argValue === false) {
933
- classType.details.flags &= ~33554432 /* GenerateDataClassSlots */;
948
+ classType.details.flags &= ~33554432 /* ClassTypeFlags.GenerateDataClassSlots */;
934
949
  }
935
950
  break;
936
951
  case 'hash':
937
952
  case 'unsafe_hash':
938
953
  if (argValue === true) {
939
- classType.details.flags |= 67108864 /* SynthesizeDataClassUnsafeHash */;
954
+ classType.details.flags |= 67108864 /* ClassTypeFlags.SynthesizeDataClassUnsafeHash */;
940
955
  }
941
956
  break;
942
957
  }
@@ -960,18 +975,18 @@ function applyDataClassClassBehaviorOverrides(evaluator, errorNode, classType, a
960
975
  exports.applyDataClassClassBehaviorOverrides = applyDataClassClassBehaviorOverrides;
961
976
  function applyDataClassDefaultBehaviors(classType, defaultBehaviors) {
962
977
  classType.details.dataClassBehaviors = defaultBehaviors;
963
- classType.details.flags |= 4 /* DataClass */;
978
+ classType.details.flags |= 4 /* ClassTypeFlags.DataClass */;
964
979
  if (defaultBehaviors.keywordOnlyParams) {
965
- classType.details.flags |= 2097152 /* DataClassKeywordOnlyParams */;
980
+ classType.details.flags |= 2097152 /* ClassTypeFlags.DataClassKeywordOnlyParams */;
966
981
  }
967
982
  if (!defaultBehaviors.generateEq) {
968
- classType.details.flags |= 32 /* SkipSynthesizedDataClassEq */;
983
+ classType.details.flags |= 32 /* ClassTypeFlags.SkipSynthesizedDataClassEq */;
969
984
  }
970
985
  if (defaultBehaviors.generateOrder) {
971
- classType.details.flags |= 64 /* SynthesizedDataClassOrder */;
986
+ classType.details.flags |= 64 /* ClassTypeFlags.SynthesizedDataClassOrder */;
972
987
  }
973
988
  if (defaultBehaviors.frozen) {
974
- classType.details.flags |= 8 /* FrozenDataClass */;
989
+ classType.details.flags |= 8 /* ClassTypeFlags.FrozenDataClass */;
975
990
  }
976
991
  }
977
992
  exports.applyDataClassDefaultBehaviors = applyDataClassDefaultBehaviors;