@zzzen/pyright-internal 1.2.0-dev.20241208 → 1.2.0-dev.20241222

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 (285) hide show
  1. package/dist/analyzer/analysis.js +1 -1
  2. package/dist/analyzer/analysis.js.map +1 -1
  3. package/dist/analyzer/analyzerNodeInfo.js +17 -18
  4. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  5. package/dist/analyzer/backgroundAnalysisProgram.js +18 -35
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.js +38 -55
  8. package/dist/analyzer/binder.js.map +1 -1
  9. package/dist/analyzer/checker.js +146 -185
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowEngine.js +24 -31
  12. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  13. package/dist/analyzer/constraintSolver.js +23 -24
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/constraintTracker.js +1 -2
  16. package/dist/analyzer/constraintTracker.js.map +1 -1
  17. package/dist/analyzer/constructorTransform.js +10 -12
  18. package/dist/analyzer/constructorTransform.js.map +1 -1
  19. package/dist/analyzer/constructors.js +14 -19
  20. package/dist/analyzer/constructors.js.map +1 -1
  21. package/dist/analyzer/dataClasses.js +32 -27
  22. package/dist/analyzer/dataClasses.js.map +1 -1
  23. package/dist/analyzer/declarationUtils.js +8 -11
  24. package/dist/analyzer/declarationUtils.js.map +1 -1
  25. package/dist/analyzer/decorators.js +2 -3
  26. package/dist/analyzer/decorators.js.map +1 -1
  27. package/dist/analyzer/docStringConversion.js +6 -8
  28. package/dist/analyzer/docStringConversion.js.map +1 -1
  29. package/dist/analyzer/enums.js +12 -13
  30. package/dist/analyzer/enums.js.map +1 -1
  31. package/dist/analyzer/functionTransform.js +1 -2
  32. package/dist/analyzer/functionTransform.js.map +1 -1
  33. package/dist/analyzer/importResolver.js +18 -27
  34. package/dist/analyzer/importResolver.js.map +1 -1
  35. package/dist/analyzer/importStatementUtils.js +4 -5
  36. package/dist/analyzer/importStatementUtils.js.map +1 -1
  37. package/dist/analyzer/namedTuples.js +6 -7
  38. package/dist/analyzer/namedTuples.js.map +1 -1
  39. package/dist/analyzer/operations.js +14 -17
  40. package/dist/analyzer/operations.js.map +1 -1
  41. package/dist/analyzer/packageTypeVerifier.js +48 -50
  42. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  43. package/dist/analyzer/parameterUtils.js +5 -7
  44. package/dist/analyzer/parameterUtils.js.map +1 -1
  45. package/dist/analyzer/parentDirectoryCache.js +8 -9
  46. package/dist/analyzer/parentDirectoryCache.js.map +1 -1
  47. package/dist/analyzer/parseTreeUtils.js +30 -44
  48. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  49. package/dist/analyzer/parseTreeWalker.js +2 -3
  50. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  51. package/dist/analyzer/patternMatching.js +18 -20
  52. package/dist/analyzer/patternMatching.js.map +1 -1
  53. package/dist/analyzer/program.js +29 -40
  54. package/dist/analyzer/program.js.map +1 -1
  55. package/dist/analyzer/properties.js +7 -8
  56. package/dist/analyzer/properties.js.map +1 -1
  57. package/dist/analyzer/protocols.js +21 -23
  58. package/dist/analyzer/protocols.js.map +1 -1
  59. package/dist/analyzer/pythonPathUtils.js +1 -1
  60. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  61. package/dist/analyzer/scope.js +10 -10
  62. package/dist/analyzer/scope.js.map +1 -1
  63. package/dist/analyzer/service.js +32 -47
  64. package/dist/analyzer/service.js.map +1 -1
  65. package/dist/analyzer/sourceFile.js +21 -26
  66. package/dist/analyzer/sourceFile.js.map +1 -1
  67. package/dist/analyzer/sourceFileInfo.js +2 -3
  68. package/dist/analyzer/sourceFileInfo.js.map +1 -1
  69. package/dist/analyzer/sourceFileInfoUtils.js +5 -5
  70. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  71. package/dist/analyzer/sourceMapper.js +19 -30
  72. package/dist/analyzer/sourceMapper.js.map +1 -1
  73. package/dist/analyzer/testWalker.js +1 -2
  74. package/dist/analyzer/testWalker.js.map +1 -1
  75. package/dist/analyzer/tracePrinter.js +7 -9
  76. package/dist/analyzer/tracePrinter.js.map +1 -1
  77. package/dist/analyzer/tuples.js +11 -13
  78. package/dist/analyzer/tuples.js.map +1 -1
  79. package/dist/analyzer/typeCacheUtils.js +5 -6
  80. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  81. package/dist/analyzer/typeDocStringUtils.js +7 -11
  82. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  83. package/dist/analyzer/typeEvaluator.js +619 -776
  84. package/dist/analyzer/typeEvaluator.js.map +1 -1
  85. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
  86. package/dist/analyzer/typeEvaluatorWithTracker.js +2 -2
  87. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  88. package/dist/analyzer/typeGuards.js +26 -36
  89. package/dist/analyzer/typeGuards.js.map +1 -1
  90. package/dist/analyzer/typePrinter.js +15 -24
  91. package/dist/analyzer/typePrinter.js.map +1 -1
  92. package/dist/analyzer/typeStubWriter.js +1 -2
  93. package/dist/analyzer/typeStubWriter.js.map +1 -1
  94. package/dist/analyzer/typeUtils.js +65 -94
  95. package/dist/analyzer/typeUtils.js.map +1 -1
  96. package/dist/analyzer/typeWalker.js +4 -8
  97. package/dist/analyzer/typeWalker.js.map +1 -1
  98. package/dist/analyzer/typedDicts.js +39 -46
  99. package/dist/analyzer/typedDicts.js.map +1 -1
  100. package/dist/analyzer/types.d.ts +1 -0
  101. package/dist/analyzer/types.js +64 -103
  102. package/dist/analyzer/types.js.map +1 -1
  103. package/dist/backgroundAnalysis.js +2 -3
  104. package/dist/backgroundAnalysis.js.map +1 -1
  105. package/dist/backgroundAnalysisBase.js +9 -10
  106. package/dist/backgroundAnalysisBase.js.map +1 -1
  107. package/dist/backgroundThreadBase.js +6 -7
  108. package/dist/backgroundThreadBase.js.map +1 -1
  109. package/dist/commands/createTypeStub.js +1 -1
  110. package/dist/commands/createTypeStub.js.map +1 -1
  111. package/dist/commands/dumpFileDebugInfoCommand.js +3 -3
  112. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  113. package/dist/commands/quickActionCommand.js +1 -1
  114. package/dist/commands/quickActionCommand.js.map +1 -1
  115. package/dist/common/asyncInitialization.js +1 -1
  116. package/dist/common/chokidarFileWatcherProvider.js +2 -4
  117. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  118. package/dist/common/configOptions.js +6 -9
  119. package/dist/common/configOptions.js.map +1 -1
  120. package/dist/common/console.js +1 -2
  121. package/dist/common/console.js.map +1 -1
  122. package/dist/common/core.js +2 -2
  123. package/dist/common/core.js.map +1 -1
  124. package/dist/common/crypto.js +1 -1
  125. package/dist/common/crypto.js.map +1 -1
  126. package/dist/common/diagnostic.js +3 -5
  127. package/dist/common/diagnostic.js.map +1 -1
  128. package/dist/common/envVarUtils.js +1 -1
  129. package/dist/common/envVarUtils.js.map +1 -1
  130. package/dist/common/extensibility.d.ts +1 -0
  131. package/dist/common/extensibility.js.map +1 -1
  132. package/dist/common/fileSystem.d.ts +1 -0
  133. package/dist/common/fileSystem.js.map +1 -1
  134. package/dist/common/fullAccessHost.js +5 -5
  135. package/dist/common/fullAccessHost.js.map +1 -1
  136. package/dist/common/host.js +1 -1
  137. package/dist/common/host.js.map +1 -1
  138. package/dist/common/logTracker.js +1 -1
  139. package/dist/common/logTracker.js.map +1 -1
  140. package/dist/common/lspUtils.js +1 -2
  141. package/dist/common/lspUtils.js.map +1 -1
  142. package/dist/common/progressReporter.js +1 -2
  143. package/dist/common/progressReporter.js.map +1 -1
  144. package/dist/common/realFileSystem.js +2 -3
  145. package/dist/common/realFileSystem.js.map +1 -1
  146. package/dist/common/serviceProvider.js +1 -1
  147. package/dist/common/serviceProvider.js.map +1 -1
  148. package/dist/common/streamUtils.d.ts +2 -0
  149. package/dist/common/streamUtils.js +29 -0
  150. package/dist/common/streamUtils.js.map +1 -0
  151. package/dist/common/textEditTracker.js +4 -6
  152. package/dist/common/textEditTracker.js.map +1 -1
  153. package/dist/common/tomlUtils.js +3 -1
  154. package/dist/common/tomlUtils.js.map +1 -1
  155. package/dist/common/uri/baseUri.js +1 -1
  156. package/dist/common/uri/baseUri.js.map +1 -1
  157. package/dist/common/uri/emptyUri.js +1 -1
  158. package/dist/common/uri/emptyUri.js.map +1 -1
  159. package/dist/common/uri/fileUri.js +2 -2
  160. package/dist/common/uri/fileUri.js.map +1 -1
  161. package/dist/common/uri/memoization.js +1 -1
  162. package/dist/common/uri/memoization.js.map +1 -1
  163. package/dist/common/uri/uri.js +2 -3
  164. package/dist/common/uri/uri.js.map +1 -1
  165. package/dist/common/uri/uriUtils.js +6 -8
  166. package/dist/common/uri/uriUtils.js.map +1 -1
  167. package/dist/common/uri/webUri.js +2 -2
  168. package/dist/common/uri/webUri.js.map +1 -1
  169. package/dist/common/workspaceEditUtils.js +10 -15
  170. package/dist/common/workspaceEditUtils.js.map +1 -1
  171. package/dist/languageServerBase.js +34 -42
  172. package/dist/languageServerBase.js.map +1 -1
  173. package/dist/languageService/analyzerServiceExecutor.js +8 -10
  174. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  175. package/dist/languageService/autoImporter.js +16 -19
  176. package/dist/languageService/autoImporter.js.map +1 -1
  177. package/dist/languageService/callHierarchyProvider.js +6 -11
  178. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  179. package/dist/languageService/completionProvider.js +81 -106
  180. package/dist/languageService/completionProvider.js.map +1 -1
  181. package/dist/languageService/completionProviderUtils.js +3 -3
  182. package/dist/languageService/completionProviderUtils.js.map +1 -1
  183. package/dist/languageService/definitionProvider.js +6 -9
  184. package/dist/languageService/definitionProvider.js.map +1 -1
  185. package/dist/languageService/documentSymbolCollector.js +32 -32
  186. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  187. package/dist/languageService/dynamicFeature.js +1 -2
  188. package/dist/languageService/dynamicFeature.js.map +1 -1
  189. package/dist/languageService/hoverProvider.js +17 -23
  190. package/dist/languageService/hoverProvider.js.map +1 -1
  191. package/dist/languageService/referencesProvider.js +4 -9
  192. package/dist/languageService/referencesProvider.js.map +1 -1
  193. package/dist/languageService/renameProvider.js +2 -4
  194. package/dist/languageService/renameProvider.js.map +1 -1
  195. package/dist/languageService/signatureHelpProvider.js +11 -15
  196. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  197. package/dist/languageService/tooltipUtils.js +15 -17
  198. package/dist/languageService/tooltipUtils.js.map +1 -1
  199. package/dist/localization/localize.js +3 -3
  200. package/dist/localization/localize.js.map +1 -1
  201. package/dist/localization/package.nls.cs.json +6 -0
  202. package/dist/localization/package.nls.de.json +6 -0
  203. package/dist/localization/package.nls.en-us.json +8 -8
  204. package/dist/localization/package.nls.es.json +6 -0
  205. package/dist/localization/package.nls.fr.json +7 -1
  206. package/dist/localization/package.nls.it.json +6 -0
  207. package/dist/localization/package.nls.ja.json +6 -0
  208. package/dist/localization/package.nls.ko.json +6 -0
  209. package/dist/localization/package.nls.pl.json +6 -0
  210. package/dist/localization/package.nls.pt-br.json +6 -0
  211. package/dist/localization/package.nls.qps-ploc.json +6 -0
  212. package/dist/localization/package.nls.ru.json +6 -0
  213. package/dist/localization/package.nls.tr.json +6 -0
  214. package/dist/localization/package.nls.zh-cn.json +6 -0
  215. package/dist/localization/package.nls.zh-tw.json +6 -0
  216. package/dist/parser/parser.js +30 -38
  217. package/dist/parser/parser.js.map +1 -1
  218. package/dist/parser/tokenizer.js +8 -13
  219. package/dist/parser/tokenizer.js.map +1 -1
  220. package/dist/pprof/profiler.js +3 -3
  221. package/dist/pprof/profiler.js.map +1 -1
  222. package/dist/pyright.js +9 -11
  223. package/dist/pyright.js.map +1 -1
  224. package/dist/pyrightFileSystem.js +4 -5
  225. package/dist/pyrightFileSystem.js.map +1 -1
  226. package/dist/readonlyAugmentedFileSystem.js +3 -5
  227. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  228. package/dist/server.js +1 -1
  229. package/dist/server.js.map +1 -1
  230. package/dist/tests/chainedSourceFiles.test.js +3 -3
  231. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  232. package/dist/tests/classDeclaration.test.js +7 -10
  233. package/dist/tests/classDeclaration.test.js.map +1 -1
  234. package/dist/tests/completions.test.js +3 -3
  235. package/dist/tests/completions.test.js.map +1 -1
  236. package/dist/tests/config.test.js +10 -15
  237. package/dist/tests/config.test.js.map +1 -1
  238. package/dist/tests/diagnosticOverrides.test.js +4 -6
  239. package/dist/tests/diagnosticOverrides.test.js.map +1 -1
  240. package/dist/tests/envVarUtils.test.js +9 -12
  241. package/dist/tests/envVarUtils.test.js.map +1 -1
  242. package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
  243. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  244. package/dist/tests/harness/fourslash/testState.js +45 -60
  245. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  246. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +6 -7
  247. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  248. package/dist/tests/harness/vfs/filesystem.js +3 -3
  249. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  250. package/dist/tests/importResolver.test.js +6 -7
  251. package/dist/tests/importResolver.test.js.map +1 -1
  252. package/dist/tests/importStatementUtils.test.js +2 -2
  253. package/dist/tests/importStatementUtils.test.js.map +1 -1
  254. package/dist/tests/ipythonMode.test.js +11 -12
  255. package/dist/tests/ipythonMode.test.js.map +1 -1
  256. package/dist/tests/languageServer.test.js +1 -2
  257. package/dist/tests/languageServer.test.js.map +1 -1
  258. package/dist/tests/lsp/languageServer.js +10 -14
  259. package/dist/tests/lsp/languageServer.js.map +1 -1
  260. package/dist/tests/lsp/languageServerTestUtils.js +10 -14
  261. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  262. package/dist/tests/parseTreeUtils.test.js +7 -7
  263. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  264. package/dist/tests/parser.test.js +2 -2
  265. package/dist/tests/parser.test.js.map +1 -1
  266. package/dist/tests/service.test.js +2 -3
  267. package/dist/tests/service.test.js.map +1 -1
  268. package/dist/tests/sourceFile.test.js +2 -3
  269. package/dist/tests/sourceFile.test.js.map +1 -1
  270. package/dist/tests/sourceMapperUtils.test.js +3 -4
  271. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  272. package/dist/tests/testState.test.js +3 -6
  273. package/dist/tests/testState.test.js.map +1 -1
  274. package/dist/tests/testStateUtils.js +3 -4
  275. package/dist/tests/testStateUtils.js.map +1 -1
  276. package/dist/tests/textEditUtil.test.js +2 -2
  277. package/dist/tests/textEditUtil.test.js.map +1 -1
  278. package/dist/tests/typeEvaluator1.test.js +1 -1
  279. package/dist/tests/typePrinter.test.js +1 -2
  280. package/dist/tests/typePrinter.test.js.map +1 -1
  281. package/dist/tests/workspaceEditUtils.test.js +3 -5
  282. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  283. package/dist/workspaceFactory.js +2 -3
  284. package/dist/workspaceFactory.js.map +1 -1
  285. package/package.json +1 -1
@@ -180,7 +180,7 @@ class CompletionProvider {
180
180
  return null;
181
181
  }
182
182
  const completionMap = this._getCompletions();
183
- return vscode_languageserver_1.CompletionList.create(completionMap === null || completionMap === void 0 ? void 0 : completionMap.toArray());
183
+ return vscode_languageserver_1.CompletionList.create(completionMap?.toArray());
184
184
  }
185
185
  // When the user selects a completion, this callback is invoked,
186
186
  // allowing us to record what was selected. This allows us to
@@ -265,7 +265,6 @@ class CompletionProvider {
265
265
  return (0, lspUtils_1.fromLSPAny)(item.data);
266
266
  }
267
267
  getMethodOverrideCompletions(priorWord, partialName, decorators) {
268
- var _a, _b;
269
268
  const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, /* stopAtFunction */ true);
270
269
  if (!enclosingClass) {
271
270
  return undefined;
@@ -281,15 +280,14 @@ class CompletionProvider {
281
280
  (0, typeUtils_1.getMembersForClass)(mroClass, symbolTable, /* includeInstanceVars */ false);
282
281
  }
283
282
  }
284
- const staticmethod = (_a = decorators === null || decorators === void 0 ? void 0 : decorators.some((d) => ParseTreeUtils.checkDecorator(d, 'staticmethod'))) !== null && _a !== void 0 ? _a : false;
285
- const classmethod = (_b = decorators === null || decorators === void 0 ? void 0 : decorators.some((d) => ParseTreeUtils.checkDecorator(d, 'classmethod'))) !== null && _b !== void 0 ? _b : false;
283
+ const staticmethod = decorators?.some((d) => ParseTreeUtils.checkDecorator(d, 'staticmethod')) ?? false;
284
+ const classmethod = decorators?.some((d) => ParseTreeUtils.checkDecorator(d, 'classmethod')) ?? false;
286
285
  const completionMap = new CompletionMap();
287
286
  symbolTable.forEach((symbol, name) => {
288
- var _a;
289
287
  let decl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(symbol);
290
288
  if (decl && decl.type === 5 /* DeclarationType.Function */) {
291
289
  if (StringUtils.isPatternInSymbol(partialName.d.value, name)) {
292
- const declaredType = (_a = this.evaluator.getTypeForDeclaration(decl)) === null || _a === void 0 ? void 0 : _a.type;
290
+ const declaredType = this.evaluator.getTypeForDeclaration(decl)?.type;
293
291
  if (!declaredType) {
294
292
  return;
295
293
  }
@@ -383,8 +381,7 @@ class CompletionProvider {
383
381
  return results;
384
382
  }
385
383
  function convertToString(parameter) {
386
- var _a;
387
- const name = (_a = parameter[0].d.name) === null || _a === void 0 ? void 0 : _a.d.value;
384
+ const name = parameter[0].d.name?.d.value;
388
385
  if (parameter[0].d.category === 1 /* ParamCategory.ArgsList */) {
389
386
  return `*${name}`;
390
387
  }
@@ -395,7 +392,7 @@ class CompletionProvider {
395
392
  }
396
393
  }
397
394
  createReplaceEdits(priorWord, node, text) {
398
- const replaceOrInsertEndChar = (node === null || node === void 0 ? void 0 : node.nodeType) === 38 /* ParseNodeType.Name */
395
+ const replaceOrInsertEndChar = node?.nodeType === 38 /* ParseNodeType.Name */
399
396
  ? this.position.character - priorWord.length + node.d.value.length
400
397
  : this.position.character;
401
398
  const range = {
@@ -409,7 +406,6 @@ class CompletionProvider {
409
406
  return true;
410
407
  }
411
408
  addSymbol(name, symbol, priorWord, completionMap, detail) {
412
- var _a, _b, _c, _d;
413
409
  // Make sure we don't crash due to OOM.
414
410
  this.program.handleMemoryHighUsage();
415
411
  let primaryDecl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(symbol);
@@ -423,7 +419,7 @@ class CompletionProvider {
423
419
  return;
424
420
  }
425
421
  primaryDecl = primaryDecl
426
- ? (_a = this.evaluator.resolveAliasDeclaration(primaryDecl, /* resolveLocalNames */ true)) !== null && _a !== void 0 ? _a : primaryDecl
422
+ ? this.evaluator.resolveAliasDeclaration(primaryDecl, /* resolveLocalNames */ true) ?? primaryDecl
427
423
  : undefined;
428
424
  const autoImportText = detail.autoImportSource
429
425
  ? this.getAutoImportText(name, detail.autoImportSource, detail.autoImportAlias)
@@ -437,7 +433,7 @@ class CompletionProvider {
437
433
  return;
438
434
  }
439
435
  if (this.itemToResolve.additionalTextEdits === undefined &&
440
- ((_b = detail.edits) === null || _b === void 0 ? void 0 : _b.additionalTextEdits) !== undefined) {
436
+ detail.edits?.additionalTextEdits !== undefined) {
441
437
  this.itemToResolve.additionalTextEdits = (0, workspaceEditUtils_1.convertToTextEdits)(detail.edits.additionalTextEdits);
442
438
  }
443
439
  if (completionItemData.autoImportText) {
@@ -473,7 +469,7 @@ class CompletionProvider {
473
469
  if (this._isEnumMember(detail.boundObjectOrClass, name)) {
474
470
  itemKind = vscode_languageserver_1.CompletionItemKind.EnumMember;
475
471
  }
476
- this.addNameToCompletions((_c = detail.autoImportAlias) !== null && _c !== void 0 ? _c : name, itemKind, priorWord, completionMap, {
472
+ this.addNameToCompletions(detail.autoImportAlias ?? name, itemKind, priorWord, completionMap, {
477
473
  autoImportText,
478
474
  extraCommitChars: detail.extraCommitChars,
479
475
  funcParensDisabled: detail.funcParensDisabled,
@@ -482,7 +478,7 @@ class CompletionProvider {
482
478
  }
483
479
  else {
484
480
  // Does the symbol have no declaration but instead has a synthesized type?
485
- const synthesizedType = (_d = symbol.getSynthesizedType()) === null || _d === void 0 ? void 0 : _d.type;
481
+ const synthesizedType = symbol.getSynthesizedType()?.type;
486
482
  if (synthesizedType) {
487
483
  const itemKind = this._convertTypeToItemKind(synthesizedType);
488
484
  this.addNameToCompletions(name, itemKind, priorWord, completionMap, {
@@ -561,7 +557,6 @@ class CompletionProvider {
561
557
  this.addImportResults(results, priorWord, completionMap, parensDisabled);
562
558
  }
563
559
  addImportResults(results, priorWord, completionMap, parensDisabled) {
564
- var _a, _b;
565
560
  for (const result of results) {
566
561
  if (result.symbol) {
567
562
  this.addSymbol(result.name, result.symbol, priorWord, completionMap, {
@@ -576,7 +571,7 @@ class CompletionProvider {
576
571
  });
577
572
  }
578
573
  else {
579
- this.addNameToCompletions((_a = result.alias) !== null && _a !== void 0 ? _a : result.name, (_b = result.kind) !== null && _b !== void 0 ? _b : vscode_languageserver_1.CompletionItemKind.Module, priorWord, completionMap, {
574
+ this.addNameToCompletions(result.alias ?? result.name, result.kind ?? vscode_languageserver_1.CompletionItemKind.Module, priorWord, completionMap, {
580
575
  extraCommitChars: true,
581
576
  autoImportText: this.getAutoImportText(result.name, result.source, result.alias),
582
577
  edits: {
@@ -592,36 +587,35 @@ class CompletionProvider {
592
587
  // extra commit char is not supported.
593
588
  }
594
589
  addNameToCompletions(name, itemKind, filter, completionMap, detail) {
595
- var _a, _b, _c, _d;
596
590
  // Auto importer already filtered out unnecessary ones. No need to do it again.
597
- const similarity = (detail === null || detail === void 0 ? void 0 : detail.autoImportText) ? true : StringUtils.isPatternInSymbol(filter, name);
591
+ const similarity = detail?.autoImportText ? true : StringUtils.isPatternInSymbol(filter, name);
598
592
  if (!similarity) {
599
593
  return;
600
594
  }
601
- if (completionMap.has(name, (i) => CompletionMap.matchKindAndImportText(i, this.getCompletionItemData.bind(this)), itemKind, (_a = detail === null || detail === void 0 ? void 0 : detail.autoImportText) === null || _a === void 0 ? void 0 : _a.importText)) {
595
+ if (completionMap.has(name, (i) => CompletionMap.matchKindAndImportText(i, this.getCompletionItemData.bind(this)), itemKind, detail?.autoImportText?.importText)) {
602
596
  return;
603
597
  }
604
598
  const completionItem = vscode_languageserver_1.CompletionItem.create(name);
605
599
  completionItem.kind = itemKind;
606
- if (detail === null || detail === void 0 ? void 0 : detail.extraCommitChars) {
600
+ if (detail?.extraCommitChars) {
607
601
  this.addExtraCommitChar(completionItem);
608
602
  }
609
603
  const completionItemData = {
610
604
  uri: this.fileUri.toString(),
611
605
  position: this.position,
612
606
  };
613
- if ((detail === null || detail === void 0 ? void 0 : detail.funcParensDisabled) || !this.options.snippet) {
607
+ if (detail?.funcParensDisabled || !this.options.snippet) {
614
608
  completionItemData.funcParensDisabled = true;
615
609
  }
616
- if (detail === null || detail === void 0 ? void 0 : detail.moduleUri) {
610
+ if (detail?.moduleUri) {
617
611
  completionItemData.moduleUri = detail.moduleUri.toString();
618
612
  }
619
613
  completionItem.data = (0, lspUtils_1.toLSPAny)(completionItemData);
620
- if ((detail === null || detail === void 0 ? void 0 : detail.sortText) || (detail === null || detail === void 0 ? void 0 : detail.itemDetail)) {
614
+ if (detail?.sortText || detail?.itemDetail) {
621
615
  completionItem.sortText = detail.sortText;
622
616
  completionItem.detail = detail.itemDetail;
623
617
  }
624
- else if (detail === null || detail === void 0 ? void 0 : detail.autoImportText) {
618
+ else if (detail?.autoImportText) {
625
619
  // Force auto-import entries to the end.
626
620
  completionItem.sortText = this._makeSortText(SortCategory.AutoImport, `${name}.${this._formatInteger(detail.autoImportText.source.length, 2)}.${detail.autoImportText.source}`, detail.autoImportText.importText);
627
621
  completionItemData.autoImportText = detail.autoImportText.importText;
@@ -650,17 +644,17 @@ class CompletionProvider {
650
644
  completionItemData.symbolLabel = name;
651
645
  if (this.options.format === vscode_languageserver_1.MarkupKind.Markdown) {
652
646
  let markdownString = '';
653
- if (detail === null || detail === void 0 ? void 0 : detail.autoImportText) {
647
+ if (detail?.autoImportText) {
654
648
  markdownString += detail.autoImportText.importText;
655
649
  if (detail.typeDetail || detail.documentation) {
656
650
  // Micro perf optimization to not create new string from trimEnd.
657
651
  markdownString += '\n\n';
658
652
  }
659
653
  }
660
- if (detail === null || detail === void 0 ? void 0 : detail.typeDetail) {
654
+ if (detail?.typeDetail) {
661
655
  markdownString += '```python\n' + detail.typeDetail + '\n```\n';
662
656
  }
663
- if (detail === null || detail === void 0 ? void 0 : detail.documentation) {
657
+ if (detail?.documentation) {
664
658
  markdownString += '---\n';
665
659
  markdownString += this.program.serviceProvider
666
660
  .docStringService()
@@ -676,17 +670,17 @@ class CompletionProvider {
676
670
  }
677
671
  else if (this.options.format === vscode_languageserver_1.MarkupKind.PlainText) {
678
672
  let plainTextString = '';
679
- if (detail === null || detail === void 0 ? void 0 : detail.autoImportText) {
673
+ if (detail?.autoImportText) {
680
674
  plainTextString += detail.autoImportText.importText;
681
675
  if (detail.typeDetail || detail.documentation) {
682
676
  // Micro perf optimization to not create new string from trimEnd.
683
677
  plainTextString += '\n\n';
684
678
  }
685
679
  }
686
- if (detail === null || detail === void 0 ? void 0 : detail.typeDetail) {
680
+ if (detail?.typeDetail) {
687
681
  plainTextString += detail.typeDetail + '\n';
688
682
  }
689
- if (detail === null || detail === void 0 ? void 0 : detail.documentation) {
683
+ if (detail?.documentation) {
690
684
  plainTextString +=
691
685
  '\n' +
692
686
  this.program.serviceProvider.docStringService().convertDocStringToPlainText(detail.documentation);
@@ -702,13 +696,13 @@ class CompletionProvider {
702
696
  else {
703
697
  (0, debug_1.fail)(`Unsupported markup type: ${this.options.format}`);
704
698
  }
705
- if ((_b = detail === null || detail === void 0 ? void 0 : detail.edits) === null || _b === void 0 ? void 0 : _b.format) {
699
+ if (detail?.edits?.format) {
706
700
  completionItem.insertTextFormat = detail.edits.format;
707
701
  }
708
- if ((_c = detail === null || detail === void 0 ? void 0 : detail.edits) === null || _c === void 0 ? void 0 : _c.textEdit) {
702
+ if (detail?.edits?.textEdit) {
709
703
  completionItem.textEdit = detail.edits.textEdit;
710
704
  }
711
- if ((_d = detail === null || detail === void 0 ? void 0 : detail.edits) === null || _d === void 0 ? void 0 : _d.additionalTextEdits) {
705
+ if (detail?.edits?.additionalTextEdits) {
712
706
  completionItem.additionalTextEdits = (0, workspaceEditUtils_1.convertToTextEdits)(detail.edits.additionalTextEdits);
713
707
  // This is for auto import entries from indices which skip symbols.
714
708
  if (this.itemToResolve) {
@@ -733,16 +727,14 @@ class CompletionProvider {
733
727
  (0, debug_1.fail)(`Unsupported markup type: ${this.options.format}`);
734
728
  }
735
729
  return {
736
- source: importFrom !== null && importFrom !== void 0 ? importFrom : '',
730
+ source: importFrom ?? '',
737
731
  importText,
738
732
  };
739
733
  }
740
734
  get _fileContents() {
741
- var _a, _b;
742
- return (_b = (_a = this.parseResults) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : '';
735
+ return this.parseResults?.text ?? '';
743
736
  }
744
737
  _getCompletions() {
745
- var _a, _b;
746
738
  const offset = (0, positionUtils_1.convertPositionToOffset)(this.position, this.parseResults.tokenizerOutput.lines);
747
739
  if (offset === undefined) {
748
740
  return undefined;
@@ -750,7 +742,7 @@ class CompletionProvider {
750
742
  let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, offset);
751
743
  // See if we're inside a string literal or an f-string statement.
752
744
  const token = ParseTreeUtils.getTokenOverlapping(this.parseResults.tokenizerOutput.tokens, offset);
753
- if ((token === null || token === void 0 ? void 0 : token.type) === 5 /* TokenType.String */) {
745
+ if (token?.type === 5 /* TokenType.String */) {
754
746
  const stringToken = token;
755
747
  this._stringLiteralContainer = textRange_1.TextRange.contains(stringToken, offset)
756
748
  ? stringToken
@@ -788,7 +780,7 @@ class CompletionProvider {
788
780
  node = curNode;
789
781
  // If we're at the end of a list with a hanging comma, handle the
790
782
  // special case of "from x import y, ".
791
- if (sawComma && ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 26 /* ParseNodeType.ImportFromAs */) {
783
+ if (sawComma && node.parent?.nodeType === 26 /* ParseNodeType.ImportFromAs */) {
792
784
  node = node.parent;
793
785
  }
794
786
  }
@@ -848,7 +840,7 @@ class CompletionProvider {
848
840
  }
849
841
  const dictionaryEntry = ParseTreeUtils.getFirstAncestorOrSelfOfKind(curNode, 20 /* ParseNodeType.DictionaryKeyEntry */);
850
842
  if (dictionaryEntry) {
851
- if (((_b = dictionaryEntry.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 18 /* ParseNodeType.Dictionary */) {
843
+ if (dictionaryEntry.parent?.nodeType === 18 /* ParseNodeType.Dictionary */) {
852
844
  const dictionaryNode = dictionaryEntry.parent;
853
845
  if (dictionaryNode.d.trailingCommaToken && dictionaryNode.d.trailingCommaToken.start < offset) {
854
846
  const completionMap = new CompletionMap();
@@ -919,7 +911,6 @@ class CompletionProvider {
919
911
  // tree. It returns CompletionResults or undefined if it wants the
920
912
  // caller to return.
921
913
  _tryGetNameCompletions(curNode, offset, priorWord, priorText, postText) {
922
- var _a, _b, _c, _d;
923
914
  if (!curNode.parent) {
924
915
  return false;
925
916
  }
@@ -964,7 +955,7 @@ class CompletionProvider {
964
955
  return undefined;
965
956
  }
966
957
  if (curNode.parent.nodeType === 31 /* ParseNodeType.Function */ && curNode === curNode.parent.d.name) {
967
- if ((_a = curNode.parent.d.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
958
+ if (curNode.parent.d.decorators?.some((d) => this._isOverload(d))) {
968
959
  return this._getMethodOverloadsCompletions(priorWord, curNode);
969
960
  }
970
961
  return undefined;
@@ -992,8 +983,8 @@ class CompletionProvider {
992
983
  if (leftNode !== curNode || priorWord.length === 0) {
993
984
  return false;
994
985
  }
995
- const decls = (_b = this.evaluator.getDeclInfoForNameNode(curNode)) === null || _b === void 0 ? void 0 : _b.decls;
996
- if ((decls === null || decls === void 0 ? void 0 : decls.length) !== 1 || !(0, declaration_1.isVariableDeclaration)(decls[0]) || decls[0].node !== curNode) {
986
+ const decls = this.evaluator.getDeclInfoForNameNode(curNode)?.decls;
987
+ if (decls?.length !== 1 || !(0, declaration_1.isVariableDeclaration)(decls[0]) || decls[0].node !== curNode) {
997
988
  return false;
998
989
  }
999
990
  const completionMap = this._getExpressionCompletions(curNode, priorWord, priorText, postText);
@@ -1006,8 +997,8 @@ class CompletionProvider {
1006
997
  // ex) class A:
1007
998
  // variable = 1
1008
999
  if (curNode.parent.nodeType === 47 /* ParseNodeType.StatementList */ &&
1009
- ((_c = curNode.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 50 /* ParseNodeType.Suite */ &&
1010
- ((_d = curNode.parent.parent.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 10 /* ParseNodeType.Class */) {
1000
+ curNode.parent.parent?.nodeType === 50 /* ParseNodeType.Suite */ &&
1001
+ curNode.parent.parent.parent?.nodeType === 10 /* ParseNodeType.Class */) {
1011
1002
  const completionList = this._getClassVariableCompletions(curNode);
1012
1003
  if (completionList) {
1013
1004
  return completionList;
@@ -1016,13 +1007,12 @@ class CompletionProvider {
1016
1007
  return false;
1017
1008
  }
1018
1009
  _isWithinComment(offset) {
1019
- var _a, _b;
1020
1010
  const token = getTokenAfter(offset, this.parseResults.tokenizerOutput.tokens);
1021
1011
  if (!token) {
1022
1012
  // If we're in the middle of a token, we're not in a comment.
1023
1013
  return false;
1024
1014
  }
1025
- return (_b = (_a = token.comments) === null || _a === void 0 ? void 0 : _a.some((c) => textRange_1.TextRange.overlaps(c, offset))) !== null && _b !== void 0 ? _b : false;
1015
+ return token.comments?.some((c) => textRange_1.TextRange.overlaps(c, offset)) ?? false;
1026
1016
  function getTokenAfter(offset, tokens) {
1027
1017
  const tokenIndex = tokens.getItemAtPosition(offset);
1028
1018
  if (tokenIndex < 0) {
@@ -1053,7 +1043,6 @@ class CompletionProvider {
1053
1043
  }
1054
1044
  }
1055
1045
  _getExpressionErrorCompletions(node, offset, priorWord, priorText, postText) {
1056
- var _a;
1057
1046
  // Is the error due to a missing member access name? If so,
1058
1047
  // we can evaluate the left side of the member access expression
1059
1048
  // to determine its type and offer suggestions based on it.
@@ -1074,7 +1063,7 @@ class CompletionProvider {
1074
1063
  const prevToken = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index - 1);
1075
1064
  if (node.d.category === 2 /* ErrorExpressionCategory.MissingExpression */) {
1076
1065
  // Skip dots on expressions.
1077
- if ((token === null || token === void 0 ? void 0 : token.type) === 20 /* TokenType.Dot */ || (token === null || token === void 0 ? void 0 : token.type) === 19 /* TokenType.Ellipsis */) {
1066
+ if (token?.type === 20 /* TokenType.Dot */ || token?.type === 19 /* TokenType.Ellipsis */) {
1078
1067
  break;
1079
1068
  }
1080
1069
  // ex) class MyType:
@@ -1086,15 +1075,15 @@ class CompletionProvider {
1086
1075
  // since parser won't see "is" as partially written member name instead it will see it as
1087
1076
  // expression statement with missing expression after "is" keyword.
1088
1077
  // In such case, use "MyType." to get completion.
1089
- if ((token === null || token === void 0 ? void 0 : token.type) !== 8 /* TokenType.Keyword */ || textRange_1.TextRange.getEnd(token) !== offset) {
1078
+ if (token?.type !== 8 /* TokenType.Keyword */ || textRange_1.TextRange.getEnd(token) !== offset) {
1090
1079
  return this._getExpressionCompletions(node, priorWord, priorText, postText);
1091
1080
  }
1092
- if ((prevToken === null || prevToken === void 0 ? void 0 : prevToken.type) !== 20 /* TokenType.Dot */) {
1081
+ if (prevToken?.type !== 20 /* TokenType.Dot */) {
1093
1082
  return this._getExpressionCompletions(node, priorWord, priorText, postText);
1094
1083
  }
1095
1084
  const previousOffset = textRange_1.TextRange.getEnd(prevToken);
1096
1085
  const previousNode = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, previousOffset);
1097
- if ((previousNode === null || previousNode === void 0 ? void 0 : previousNode.nodeType) !== 0 /* ParseNodeType.Error */ ||
1086
+ if (previousNode?.nodeType !== 0 /* ParseNodeType.Error */ ||
1098
1087
  previousNode.d.category !== 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
1099
1088
  return this._getExpressionCompletions(node, priorWord, priorText, postText);
1100
1089
  }
@@ -1105,8 +1094,8 @@ class CompletionProvider {
1105
1094
  }
1106
1095
  else if (node.d.category === 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
1107
1096
  // Skip double dots on member access.
1108
- if (((token === null || token === void 0 ? void 0 : token.type) === 20 /* TokenType.Dot */ || (token === null || token === void 0 ? void 0 : token.type) === 19 /* TokenType.Ellipsis */) &&
1109
- ((prevToken === null || prevToken === void 0 ? void 0 : prevToken.type) === 20 /* TokenType.Dot */ || (prevToken === null || prevToken === void 0 ? void 0 : prevToken.type) === 19 /* TokenType.Ellipsis */)) {
1097
+ if ((token?.type === 20 /* TokenType.Dot */ || token?.type === 19 /* TokenType.Ellipsis */) &&
1098
+ (prevToken?.type === 20 /* TokenType.Dot */ || prevToken?.type === 19 /* TokenType.Ellipsis */)) {
1110
1099
  return undefined;
1111
1100
  }
1112
1101
  }
@@ -1125,7 +1114,7 @@ class CompletionProvider {
1125
1114
  }
1126
1115
  case 10 /* ErrorExpressionCategory.MissingFunctionParameterList */: {
1127
1116
  if (node.d.child && node.d.child.nodeType === 38 /* ParseNodeType.Name */) {
1128
- if ((_a = node.d.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
1117
+ if (node.d.decorators?.some((d) => this._isOverload(d))) {
1129
1118
  return this._getMethodOverloadsCompletions(priorWord, node.d.child);
1130
1119
  }
1131
1120
  // Determine if the partial name is a method that's overriding
@@ -1158,15 +1147,14 @@ class CompletionProvider {
1158
1147
  return completionMap;
1159
1148
  }
1160
1149
  _addClassVariableTypeAnnotationCompletions(priorWord, parseNode, completionMap) {
1161
- var _a, _b, _c, _d;
1162
1150
  // class T:
1163
1151
  // f: |<= here
1164
- const isTypeAnnotationOfClassVariable = ((_a = parseNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 54 /* ParseNodeType.TypeAnnotation */ &&
1152
+ const isTypeAnnotationOfClassVariable = parseNode.parent?.nodeType === 54 /* ParseNodeType.TypeAnnotation */ &&
1165
1153
  parseNode.parent.d.valueExpr.nodeType === 38 /* ParseNodeType.Name */ &&
1166
1154
  parseNode.parent.d.annotation === parseNode &&
1167
- ((_b = parseNode.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 47 /* ParseNodeType.StatementList */ &&
1168
- ((_c = parseNode.parent.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 50 /* ParseNodeType.Suite */ &&
1169
- ((_d = parseNode.parent.parent.parent.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 10 /* ParseNodeType.Class */;
1155
+ parseNode.parent.parent?.nodeType === 47 /* ParseNodeType.StatementList */ &&
1156
+ parseNode.parent.parent.parent?.nodeType === 50 /* ParseNodeType.Suite */ &&
1157
+ parseNode.parent.parent.parent.parent?.nodeType === 10 /* ParseNodeType.Class */;
1170
1158
  if (!isTypeAnnotationOfClassVariable) {
1171
1159
  return;
1172
1160
  }
@@ -1264,12 +1252,11 @@ class CompletionProvider {
1264
1252
  return completionMap.size > 0 ? completionMap : undefined;
1265
1253
  }
1266
1254
  _getMethodOverloadsCompletions(priorWord, partialName) {
1267
- var _a;
1268
1255
  const symbolTable = getSymbolTable(this.evaluator, partialName);
1269
1256
  if (!symbolTable) {
1270
1257
  return undefined;
1271
1258
  }
1272
- const funcParensDisabled = ((_a = partialName.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 31 /* ParseNodeType.Function */ ? true : undefined;
1259
+ const funcParensDisabled = partialName.parent?.nodeType === 31 /* ParseNodeType.Function */ ? true : undefined;
1273
1260
  const completionMap = new CompletionMap();
1274
1261
  const enclosingFunc = ParseTreeUtils.getEnclosingFunction(partialName);
1275
1262
  symbolTable.forEach((symbol, name) => {
@@ -1314,7 +1301,7 @@ class CompletionProvider {
1314
1301
  const moduleNode = ParseTreeUtils.getEnclosingModule(partialName);
1315
1302
  if (moduleNode) {
1316
1303
  const moduleScope = AnalyzerNodeInfo.getScope(moduleNode);
1317
- return moduleScope === null || moduleScope === void 0 ? void 0 : moduleScope.symbolTable;
1304
+ return moduleScope?.symbolTable;
1318
1305
  }
1319
1306
  return undefined;
1320
1307
  }
@@ -1354,7 +1341,7 @@ class CompletionProvider {
1354
1341
  }
1355
1342
  if (param.d.defaultValue) {
1356
1343
  paramString += paramTypeAnnotation ? ' = ' : '=';
1357
- const useEllipsis = ellipsisForDefault !== null && ellipsisForDefault !== void 0 ? ellipsisForDefault : !ParseTreeUtils.isSimpleDefault(param.d.defaultValue);
1344
+ const useEllipsis = ellipsisForDefault ?? !ParseTreeUtils.isSimpleDefault(param.d.defaultValue);
1358
1345
  paramString += useEllipsis
1359
1346
  ? '...'
1360
1347
  : ParseTreeUtils.printExpression(param.d.defaultValue, printFlags);
@@ -1380,7 +1367,6 @@ class CompletionProvider {
1380
1367
  return this._getExpressionCompletions(parseNode, priorWord, priorText, postText);
1381
1368
  }
1382
1369
  _getExpressionCompletions(parseNode, priorWord, priorText, postText) {
1383
- var _a, _b, _c;
1384
1370
  const isIndexArgument = this._isIndexArgument(parseNode);
1385
1371
  // If the user typed a "." as part of a number, don't present
1386
1372
  // any completion options.
@@ -1389,8 +1375,8 @@ class CompletionProvider {
1389
1375
  }
1390
1376
  // Are we within a "with Y as []"?
1391
1377
  // Don't add any completion options.
1392
- if (((_a = parseNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 59 /* ParseNodeType.WithItem */ &&
1393
- parseNode.parent === ((_b = parseNode.parent.d.target) === null || _b === void 0 ? void 0 : _b.parent)) {
1378
+ if (parseNode.parent?.nodeType === 59 /* ParseNodeType.WithItem */ &&
1379
+ parseNode.parent === parseNode.parent.d.target?.parent) {
1394
1380
  return undefined;
1395
1381
  }
1396
1382
  const completionMap = new CompletionMap();
@@ -1420,7 +1406,7 @@ class CompletionProvider {
1420
1406
  // Add auto-import suggestions from other modules.
1421
1407
  // Ignore this check for privates, since they are not imported.
1422
1408
  if (!priorWord.startsWith('_') && !this.itemToResolve) {
1423
- const parensDisabled = ((_c = parseNode.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 16 /* ParseNodeType.Decorator */;
1409
+ const parensDisabled = parseNode.parent?.nodeType === 16 /* ParseNodeType.Decorator */;
1424
1410
  this.addAutoImportCompletions(priorWord, similarityLimit, this.options.lazyEdit, completionMap, parensDisabled);
1425
1411
  }
1426
1412
  // Add literal values if appropriate.
@@ -1494,7 +1480,7 @@ class CompletionProvider {
1494
1480
  return [];
1495
1481
  }
1496
1482
  return node.d.items.flatMap((entry) => {
1497
- if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */ || (excludeIds === null || excludeIds === void 0 ? void 0 : excludeIds.has(entry.d.keyExpr.id))) {
1483
+ if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */ || excludeIds?.has(entry.d.keyExpr.id)) {
1498
1484
  return [];
1499
1485
  }
1500
1486
  if (entry.d.keyExpr.nodeType === 48 /* ParseNodeType.StringList */) {
@@ -1545,7 +1531,6 @@ class CompletionProvider {
1545
1531
  return undefined;
1546
1532
  }
1547
1533
  _getIndexKeys(indexNode, invocationNode) {
1548
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1549
1534
  const baseType = this.evaluator.getType(indexNode.d.leftExpr);
1550
1535
  if (!baseType || !(0, types_1.isClassInstance)(baseType)) {
1551
1536
  return [];
@@ -1573,7 +1558,7 @@ class CompletionProvider {
1573
1558
  return [];
1574
1559
  }
1575
1560
  // Must be local variable/parameter
1576
- const declarations = (_b = (_a = this.evaluator.getDeclInfoForNameNode(indexNode.d.leftExpr)) === null || _a === void 0 ? void 0 : _a.decls) !== null && _b !== void 0 ? _b : [];
1561
+ const declarations = this.evaluator.getDeclInfoForNameNode(indexNode.d.leftExpr)?.decls ?? [];
1577
1562
  const declaration = declarations.length > 0 ? declarations[0] : undefined;
1578
1563
  if (!declaration ||
1579
1564
  (declaration.type !== 1 /* DeclarationType.Variable */ && declaration.type !== 2 /* DeclarationType.Param */)) {
@@ -1586,16 +1571,16 @@ class CompletionProvider {
1586
1571
  if (declaration.node) {
1587
1572
  const scopeRoot = ParseTreeUtils.getEvaluationScopeNode(declaration.node).node;
1588
1573
  // Find the lowest tree to search the symbol.
1589
- if ((_c = ParseTreeUtils.getFileInfoFromNode(startingNode)) === null || _c === void 0 ? void 0 : _c.fileUri.equals((_d = ParseTreeUtils.getFileInfoFromNode(scopeRoot)) === null || _d === void 0 ? void 0 : _d.fileUri)) {
1574
+ if (ParseTreeUtils.getFileInfoFromNode(startingNode)?.fileUri.equals(ParseTreeUtils.getFileInfoFromNode(scopeRoot)?.fileUri)) {
1590
1575
  startingNode = scopeRoot;
1591
1576
  }
1592
1577
  }
1593
1578
  const results = documentSymbolCollector_1.DocumentSymbolCollector.collectFromNode(this.program, indexNode.d.leftExpr, this.cancellationToken, startingNode);
1594
1579
  const keys = new Set();
1595
1580
  for (const result of results) {
1596
- const node = ((_e = result.node.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 54 /* ParseNodeType.TypeAnnotation */ ? result.node.parent : result.node;
1597
- if (((_f = node.parent) === null || _f === void 0 ? void 0 : _f.nodeType) === 3 /* ParseNodeType.Assignment */ ||
1598
- ((_g = node.parent) === null || _g === void 0 ? void 0 : _g.nodeType) === 4 /* ParseNodeType.AssignmentExpression */) {
1581
+ const node = result.node.parent?.nodeType === 54 /* ParseNodeType.TypeAnnotation */ ? result.node.parent : result.node;
1582
+ if (node.parent?.nodeType === 3 /* ParseNodeType.Assignment */ ||
1583
+ node.parent?.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
1599
1584
  if (node.parent.d.rightExpr.nodeType === 18 /* ParseNodeType.Dictionary */) {
1600
1585
  const dictionary = node.parent.d.rightExpr;
1601
1586
  for (const entry of dictionary.d.items.filter((e) => e.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */)) {
@@ -1611,7 +1596,7 @@ class CompletionProvider {
1611
1596
  continue;
1612
1597
  }
1613
1598
  for (const arg of call.d.args) {
1614
- const key = (_j = (_h = arg.d.name) === null || _h === void 0 ? void 0 : _h.d.value.trim()) !== null && _j !== void 0 ? _j : '';
1599
+ const key = arg.d.name?.d.value.trim() ?? '';
1615
1600
  const quote = this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter;
1616
1601
  if (key.length > 0) {
1617
1602
  keys.add(`${quote}${key}${quote}`);
@@ -1619,7 +1604,7 @@ class CompletionProvider {
1619
1604
  }
1620
1605
  }
1621
1606
  }
1622
- if (((_k = node.parent) === null || _k === void 0 ? void 0 : _k.nodeType) === 27 /* ParseNodeType.Index */ &&
1607
+ if (node.parent?.nodeType === 27 /* ParseNodeType.Index */ &&
1623
1608
  node.parent.d.items.length === 1 &&
1624
1609
  node.parent.d.items[0].d.valueExpr.nodeType !== 0 /* ParseNodeType.Error */ &&
1625
1610
  !textRange_1.TextRange.containsRange(node.parent, invocationNode)) {
@@ -1648,7 +1633,6 @@ class CompletionProvider {
1648
1633
  return completionMap;
1649
1634
  }
1650
1635
  _tryAddLiterals(parseNode, priorWord, priorText, postText, completionMap) {
1651
- var _a, _b, _c, _d, _e, _f;
1652
1636
  const parentAndChild = getParentSkippingStringList(parseNode);
1653
1637
  if (!parentAndChild) {
1654
1638
  return false;
@@ -1677,10 +1661,10 @@ class CompletionProvider {
1677
1661
  let dictOrSet;
1678
1662
  if (nodeForKey.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */ &&
1679
1663
  nodeForKey.d.keyExpr === parentAndChild.child &&
1680
- ((_a = nodeForKey.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 18 /* ParseNodeType.Dictionary */) {
1664
+ nodeForKey.parent?.nodeType === 18 /* ParseNodeType.Dictionary */) {
1681
1665
  dictOrSet = nodeForKey.parent;
1682
1666
  }
1683
- else if ((nodeForKey === null || nodeForKey === void 0 ? void 0 : nodeForKey.nodeType) === 45 /* ParseNodeType.Set */) {
1667
+ else if (nodeForKey?.nodeType === 45 /* ParseNodeType.Set */) {
1684
1668
  dictOrSet = nodeForKey;
1685
1669
  }
1686
1670
  if (dictOrSet) {
@@ -1692,7 +1676,7 @@ class CompletionProvider {
1692
1676
  // a: DictType = { .... }
1693
1677
  // a[/* here */] or a['/* here */'] or a[variable/*here*/]
1694
1678
  const argument = parentAndChild.parent;
1695
- if (argument.nodeType === 1 /* ParseNodeType.Argument */ && ((_b = argument.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 27 /* ParseNodeType.Index */) {
1679
+ if (argument.nodeType === 1 /* ParseNodeType.Argument */ && argument.parent?.nodeType === 27 /* ParseNodeType.Index */) {
1696
1680
  const priorTextInString = parseNode.nodeType === 49 /* ParseNodeType.String */ ? priorText : '';
1697
1681
  if (this._tryAddTypedDictKeysFromIndexer(argument.parent, priorWord, priorTextInString, postText, completionMap)) {
1698
1682
  return true;
@@ -1757,7 +1741,7 @@ class CompletionProvider {
1757
1741
  caseNode.d.pattern.nodeType === 0 /* ParseNodeType.Error */ &&
1758
1742
  caseNode.d.pattern.d.category === 11 /* ErrorExpressionCategory.MissingPattern */ &&
1759
1743
  caseNode.d.suite === parentAndChild.child &&
1760
- ((_c = caseNode.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 63 /* ParseNodeType.Match */) {
1744
+ caseNode.parent?.nodeType === 63 /* ParseNodeType.Match */) {
1761
1745
  const type = this.evaluator.getType(caseNode.parent.d.expr);
1762
1746
  if (type && (0, typeUtils_1.containsLiteralType)(type)) {
1763
1747
  this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
@@ -1770,9 +1754,9 @@ class CompletionProvider {
1770
1754
  const patternLiteral = parentAndChild.parent;
1771
1755
  if ((patternLiteral.nodeType === 67 /* ParseNodeType.PatternLiteral */ ||
1772
1756
  patternLiteral.nodeType === 69 /* ParseNodeType.PatternCapture */) &&
1773
- ((_d = patternLiteral.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 66 /* ParseNodeType.PatternAs */ &&
1774
- ((_e = patternLiteral.parent.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 64 /* ParseNodeType.Case */ &&
1775
- ((_f = patternLiteral.parent.parent.parent) === null || _f === void 0 ? void 0 : _f.nodeType) === 63 /* ParseNodeType.Match */) {
1757
+ patternLiteral.parent?.nodeType === 66 /* ParseNodeType.PatternAs */ &&
1758
+ patternLiteral.parent.parent?.nodeType === 64 /* ParseNodeType.Case */ &&
1759
+ patternLiteral.parent.parent.parent?.nodeType === 63 /* ParseNodeType.Match */) {
1776
1760
  const type = this.evaluator.getType(patternLiteral.parent.parent.parent.d.expr);
1777
1761
  if (type && (0, typeUtils_1.containsLiteralType)(type)) {
1778
1762
  this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
@@ -1787,7 +1771,6 @@ class CompletionProvider {
1787
1771
  }
1788
1772
  return false;
1789
1773
  function getParentSkippingStringList(node) {
1790
- var _a;
1791
1774
  if (!node.parent) {
1792
1775
  return undefined;
1793
1776
  }
@@ -1797,7 +1780,7 @@ class CompletionProvider {
1797
1780
  if (!node.parent.parent) {
1798
1781
  return undefined;
1799
1782
  }
1800
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 48 /* ParseNodeType.StringList */ || node.parent.d.strings.length > 1) {
1783
+ if (node.parent?.nodeType !== 48 /* ParseNodeType.StringList */ || node.parent.d.strings.length > 1) {
1801
1784
  return undefined;
1802
1785
  }
1803
1786
  return { parent: node.parent.parent, child: node.parent };
@@ -1829,7 +1812,6 @@ class CompletionProvider {
1829
1812
  return true;
1830
1813
  }
1831
1814
  _tryAddTypedDictKeysFromDictionary(dictionaryNode, stringNode, priorWord, priorText, postText, completionMap) {
1832
- var _a;
1833
1815
  const expectedTypeResult = this.evaluator.getExpectedType(dictionaryNode);
1834
1816
  if (!expectedTypeResult) {
1835
1817
  return false;
@@ -1839,7 +1821,7 @@ class CompletionProvider {
1839
1821
  if (ParseTreeUtils.getNodeDepth(expectedTypeResult.node) < ParseTreeUtils.getNodeDepth(dictionaryNode)) {
1840
1822
  return false;
1841
1823
  }
1842
- const keys = this._getDictExpressionStringKeys(dictionaryNode, stringNode ? new Set([(_a = stringNode.parent) === null || _a === void 0 ? void 0 : _a.id]) : undefined);
1824
+ const keys = this._getDictExpressionStringKeys(dictionaryNode, stringNode ? new Set([stringNode.parent?.id]) : undefined);
1843
1825
  return this._tryAddTypedDictKeys(expectedTypeResult.type, keys, priorWord, priorText, postText, completionMap);
1844
1826
  }
1845
1827
  _tryNarrowTypedDicts(types, keys) {
@@ -1947,7 +1929,6 @@ class CompletionProvider {
1947
1929
  completionMap.set(completionItem);
1948
1930
  }
1949
1931
  _getImportFromCompletions(importFromNode, offset, priorWord) {
1950
- var _a;
1951
1932
  // Don't attempt to provide completions for "from X import *".
1952
1933
  if (importFromNode.d.isWildcardImport) {
1953
1934
  return undefined;
@@ -1968,7 +1949,7 @@ class CompletionProvider {
1968
1949
  this._addImplicitImportsToCompletion(importInfo, importFromNode, priorWord, completionMap);
1969
1950
  return completionMap;
1970
1951
  }
1971
- const symbolTable = (_a = AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree)) === null || _a === void 0 ? void 0 : _a.symbolTable;
1952
+ const symbolTable = AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree)?.symbolTable;
1972
1953
  if (!symbolTable) {
1973
1954
  return completionMap;
1974
1955
  }
@@ -2013,9 +1994,8 @@ class CompletionProvider {
2013
1994
  });
2014
1995
  // Add keys from typed dict outside signatures.
2015
1996
  signatureInfo.signatures.forEach((signature) => {
2016
- var _a;
2017
1997
  if (signature.type.priv.boundToType) {
2018
- const keys = Array.from(((_a = signature.type.priv.boundToType.shared.typedDictEntries) === null || _a === void 0 ? void 0 : _a.knownItems.keys()) || []);
1998
+ const keys = Array.from(signature.type.priv.boundToType.shared.typedDictEntries?.knownItems.keys() || []);
2019
1999
  keys.forEach((key) => argNameSet.add(key));
2020
2000
  }
2021
2001
  });
@@ -2100,7 +2080,6 @@ class CompletionProvider {
2100
2080
  const insideTypeAnnotation = ParseTreeUtils.isWithinAnnotationComment(node) ||
2101
2081
  ParseTreeUtils.isWithinTypeAnnotation(node, /* requireQuotedAnnotation */ false);
2102
2082
  symbolTable.forEach((symbol, name) => {
2103
- var _a;
2104
2083
  // If there are no declarations or the symbol is not
2105
2084
  // exported from this scope, don't include it in the
2106
2085
  // suggestion list unless we are in the same file.
@@ -2111,7 +2090,7 @@ class CompletionProvider {
2111
2090
  if (!completionMap.has(name)) {
2112
2091
  // Skip func parens for classes when not a direct assignment or an argument (passed as a value)
2113
2092
  const skipForClass = !this._shouldShowAutoParensForClass(symbol, node);
2114
- const skipForDecorator = ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 16 /* ParseNodeType.Decorator */;
2093
+ const skipForDecorator = node.parent?.nodeType === 16 /* ParseNodeType.Decorator */;
2115
2094
  this.addSymbol(name, symbol, priorWord, completionMap, {
2116
2095
  boundObjectOrClass,
2117
2096
  funcParensDisabled: isInImport || insideTypeAnnotation || skipForClass || skipForDecorator,
@@ -2122,13 +2101,12 @@ class CompletionProvider {
2122
2101
  });
2123
2102
  }
2124
2103
  _shouldShowAutoParensForClass(symbol, node) {
2125
- var _a, _b;
2126
2104
  if (symbol.getDeclarations().every((d) => d.type !== 6 /* DeclarationType.Class */)) {
2127
2105
  // Not actually a class, so yes show parens.
2128
2106
  return true;
2129
2107
  }
2130
2108
  // If an argument then show parens for classes if not a class argument.
2131
- if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 1 /* ParseNodeType.Argument */ && ((_b = node.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) !== 10 /* ParseNodeType.Class */) {
2109
+ if (node.parent?.nodeType === 1 /* ParseNodeType.Argument */ && node.parent.parent?.nodeType !== 10 /* ParseNodeType.Class */) {
2132
2110
  return true;
2133
2111
  }
2134
2112
  // Otherwise only show when the class is being assigned to a variable.
@@ -2320,9 +2298,8 @@ class CompletionMap {
2320
2298
  return this._completions.delete(key);
2321
2299
  }
2322
2300
  toArray() {
2323
- var _a;
2324
2301
  const items = [];
2325
- (_a = this._completions) === null || _a === void 0 ? void 0 : _a.forEach((value) => {
2302
+ this._completions?.forEach((value) => {
2326
2303
  if (Array.isArray(value)) {
2327
2304
  value.forEach((item) => {
2328
2305
  items.push(item);
@@ -2335,24 +2312,22 @@ class CompletionMap {
2335
2312
  return items;
2336
2313
  }
2337
2314
  static matchKindAndImportText(completionItemOrItems, getCompletionData, kind, autoImportText) {
2338
- var _a;
2339
2315
  if (!Array.isArray(completionItemOrItems)) {
2340
2316
  return (completionItemOrItems.kind === kind &&
2341
- ((_a = getCompletionData(completionItemOrItems)) === null || _a === void 0 ? void 0 : _a.autoImportText) === autoImportText);
2317
+ getCompletionData(completionItemOrItems)?.autoImportText === autoImportText);
2342
2318
  }
2343
2319
  else {
2344
- return !!completionItemOrItems.find((c) => { var _a; return c.kind === kind && ((_a = getCompletionData(c)) === null || _a === void 0 ? void 0 : _a.autoImportText) === autoImportText; });
2320
+ return !!completionItemOrItems.find((c) => c.kind === kind && getCompletionData(c)?.autoImportText === autoImportText);
2345
2321
  }
2346
2322
  }
2347
2323
  static labelOnlyIgnoringAutoImports(completionItemOrItems, getCompletionData) {
2348
- var _a;
2349
2324
  if (!Array.isArray(completionItemOrItems)) {
2350
- if (!((_a = getCompletionData(completionItemOrItems)) === null || _a === void 0 ? void 0 : _a.autoImportText)) {
2325
+ if (!getCompletionData(completionItemOrItems)?.autoImportText) {
2351
2326
  return true;
2352
2327
  }
2353
2328
  }
2354
2329
  else {
2355
- if (completionItemOrItems.find((c) => { var _a; return !((_a = getCompletionData(c)) === null || _a === void 0 ? void 0 : _a.autoImportText); })) {
2330
+ if (completionItemOrItems.find((c) => !getCompletionData(c)?.autoImportText)) {
2356
2331
  return true;
2357
2332
  }
2358
2333
  }