@zzzen/pyright-internal 1.2.0-dev.20240630 → 1.2.0-dev.20240714
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.
- package/dist/analyzer/analyzerNodeInfo.js +74 -46
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/binder.js +507 -513
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +652 -633
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +5 -3
- package/dist/analyzer/codeFlowEngine.js +143 -122
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.js +30 -28
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/constraintSolver.d.ts +1 -1
- package/dist/analyzer/constraintSolver.js +71 -67
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +22 -22
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.js +85 -77
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +113 -176
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +1 -1
- package/dist/analyzer/declarationUtils.js +14 -15
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +85 -85
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.js +71 -57
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/functionTransform.js +8 -18
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +2 -1
- package/dist/analyzer/importResolver.js +40 -29
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +27 -27
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +33 -59
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +4 -4
- package/dist/analyzer/operations.js +70 -70
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +66 -62
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parameterUtils.d.ts +4 -4
- package/dist/analyzer/parameterUtils.js +28 -46
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +268 -269
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.js +76 -76
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.js +195 -147
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +1 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +78 -147
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +22 -22
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +3 -2
- package/dist/analyzer/sourceFile.js +8 -8
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.js +20 -19
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +83 -84
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/testWalker.js +2 -2
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +20 -20
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +25 -25
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +2330 -2367
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +33 -31
- package/dist/analyzer/typeEvaluatorTypes.js +48 -41
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +221 -217
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +118 -115
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +104 -103
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +26 -9
- package/dist/analyzer/typeUtils.js +460 -404
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.js +8 -8
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typeWalker.js +13 -10
- package/dist/analyzer/typeWalker.js.map +1 -1
- package/dist/analyzer/typedDicts.js +96 -198
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +147 -103
- package/dist/analyzer/types.js +668 -493
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +33 -33
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/diagnostic.d.ts +14 -0
- package/dist/common/diagnostic.js +41 -1
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/diagnosticSink.d.ts +4 -0
- package/dist/common/diagnosticSink.js +21 -1
- package/dist/common/diagnosticSink.js.map +1 -1
- package/dist/common/fileSystem.d.ts +1 -0
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fullAccessHost.js +6 -4
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/realFileSystem.d.ts +1 -0
- package/dist/common/realFileSystem.js +4 -0
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/textEditTracker.js +14 -14
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/languageService/autoImporter.js +10 -10
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +23 -23
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +1 -1
- package/dist/languageService/completionProvider.js +156 -154
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.d.ts +1 -1
- package/dist/languageService/definitionProvider.js +3 -1
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +19 -19
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/hoverProvider.js +25 -24
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.js +8 -8
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/referencesProvider.js +8 -8
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.d.ts +1 -1
- package/dist/languageService/signatureHelpProvider.js +6 -6
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.js +3 -3
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +13 -13
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +3 -0
- package/dist/localization/localize.js +1 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +2 -1
- package/dist/parser/parseNodes.d.ts +468 -401
- package/dist/parser/parseNodes.js +626 -355
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -0
- package/dist/parser/parser.js +322 -297
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +265 -5
- package/dist/pyright.js.map +1 -1
- package/dist/tests/classDeclaration.test.js +14 -14
- package/dist/tests/classDeclaration.test.js.map +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +3 -2
- package/dist/tests/harness/vfs/filesystem.js +6 -2
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +4 -3
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +5 -5
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +8 -8
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +7 -7
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +2 -2
- package/dist/tests/typeEvaluator3.test.js +10 -5
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +1 -1
- package/dist/tests/typeEvaluator7.test.js +2 -2
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typePrinter.test.js +14 -39
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/package.json +1 -1
@@ -37,6 +37,7 @@ const vscode_languageserver_1 = require("vscode-languageserver");
|
|
37
37
|
const AnalyzerNodeInfo = __importStar(require("../analyzer/analyzerNodeInfo"));
|
38
38
|
const declaration_1 = require("../analyzer/declaration");
|
39
39
|
const declarationUtils_1 = require("../analyzer/declarationUtils");
|
40
|
+
const enums_1 = require("../analyzer/enums");
|
40
41
|
const importResolver_1 = require("../analyzer/importResolver");
|
41
42
|
const parameterUtils_1 = require("../analyzer/parameterUtils");
|
42
43
|
const ParseTreeUtils = __importStar(require("../analyzer/parseTreeUtils"));
|
@@ -57,6 +58,7 @@ const debug_1 = require("../common/debug");
|
|
57
58
|
const lspUtils_1 = require("../common/lspUtils");
|
58
59
|
const positionUtils_1 = require("../common/positionUtils");
|
59
60
|
const pythonVersion_1 = require("../common/pythonVersion");
|
61
|
+
require("../common/serviceProviderExtensions");
|
60
62
|
const StringUtils = __importStar(require("../common/stringUtils"));
|
61
63
|
const textRange_1 = require("../common/textRange");
|
62
64
|
const uri_1 = require("../common/uri/uri");
|
@@ -67,8 +69,6 @@ const autoImporter_1 = require("./autoImporter");
|
|
67
69
|
const completionProviderUtils_1 = require("./completionProviderUtils");
|
68
70
|
const documentSymbolCollector_1 = require("./documentSymbolCollector");
|
69
71
|
const tooltipUtils_1 = require("./tooltipUtils");
|
70
|
-
require("../common/serviceProviderExtensions");
|
71
|
-
const enums_1 = require("../analyzer/enums");
|
72
72
|
var Keywords;
|
73
73
|
(function (Keywords) {
|
74
74
|
const base = [
|
@@ -271,8 +271,8 @@ class CompletionProvider {
|
|
271
271
|
return undefined;
|
272
272
|
}
|
273
273
|
const symbolTable = new Map();
|
274
|
-
for (let i = 1; i < classResults.classType.
|
275
|
-
const mroClass = classResults.classType.
|
274
|
+
for (let i = 1; i < classResults.classType.shared.mro.length; i++) {
|
275
|
+
const mroClass = classResults.classType.shared.mro[i];
|
276
276
|
if ((0, types_1.isInstantiableClass)(mroClass)) {
|
277
277
|
(0, typeUtils_1.getMembersForClass)(mroClass, symbolTable, /* includeInstanceVars */ false);
|
278
278
|
}
|
@@ -284,7 +284,7 @@ class CompletionProvider {
|
|
284
284
|
var _a;
|
285
285
|
let decl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(symbol);
|
286
286
|
if (decl && decl.type === 5 /* DeclarationType.Function */) {
|
287
|
-
if (StringUtils.isPatternInSymbol(partialName.value, name)) {
|
287
|
+
if (StringUtils.isPatternInSymbol(partialName.d.value, name)) {
|
288
288
|
const declaredType = (_a = this.evaluator.getTypeForDeclaration(decl)) === null || _a === void 0 ? void 0 : _a.type;
|
289
289
|
if (!declaredType) {
|
290
290
|
return;
|
@@ -320,11 +320,11 @@ class CompletionProvider {
|
|
320
320
|
text = `${methodSignature}: ...`;
|
321
321
|
}
|
322
322
|
else {
|
323
|
-
const methodBody = this.printOverriddenMethodBody(classResults.classType, isDeclaredStaticMethod, isProperty, decl, decl.node.isAsync);
|
323
|
+
const methodBody = this.printOverriddenMethodBody(classResults.classType, isDeclaredStaticMethod, isProperty, decl, decl.node.d.isAsync);
|
324
324
|
text = `${methodSignature}:\n${methodBody}`;
|
325
325
|
}
|
326
326
|
const textEdit = this.createReplaceEdits(priorWord, partialName, text);
|
327
|
-
this.addSymbol(name, symbol, partialName.value, completionMap, {
|
327
|
+
this.addSymbol(name, symbol, partialName.d.value, completionMap, {
|
328
328
|
// method signature already contains ()
|
329
329
|
funcParensDisabled: true,
|
330
330
|
edits: {
|
@@ -339,40 +339,42 @@ class CompletionProvider {
|
|
339
339
|
}
|
340
340
|
printOverriddenMethodBody(classType, isStaticMethod, isProperty, decl, insertAwait) {
|
341
341
|
let sb = this.parseResults.tokenizerOutput.predominantTabSequence;
|
342
|
-
if (classType.
|
343
|
-
(0, types_1.isClass)(classType.
|
344
|
-
classType.
|
342
|
+
if (classType.shared.baseClasses.length === 1 &&
|
343
|
+
(0, types_1.isClass)(classType.shared.baseClasses[0]) &&
|
344
|
+
classType.shared.baseClasses[0].shared.fullName === 'builtins.object') {
|
345
345
|
sb += this.options.snippet ? '${0:pass}' : 'pass';
|
346
346
|
return sb;
|
347
347
|
}
|
348
|
-
if (decl.node.
|
348
|
+
if (decl.node.d.params.length === 0) {
|
349
349
|
sb += this.options.snippet ? '${0:pass}' : 'pass';
|
350
350
|
return sb;
|
351
351
|
}
|
352
|
-
const parameters = getParameters(isStaticMethod ? decl.node.
|
353
|
-
if (decl.node.name.value !== '__init__') {
|
352
|
+
const parameters = getParameters(isStaticMethod ? decl.node.d.params : decl.node.d.params.slice(1));
|
353
|
+
if (decl.node.d.name.d.value !== '__init__') {
|
354
354
|
sb += 'return ';
|
355
355
|
}
|
356
356
|
if (insertAwait) {
|
357
357
|
sb += 'await ';
|
358
358
|
}
|
359
359
|
if (isProperty) {
|
360
|
-
return sb + `super().${decl.node.name.value}`;
|
360
|
+
return sb + `super().${decl.node.d.name.d.value}`;
|
361
361
|
}
|
362
|
-
return sb + `super().${decl.node.name.value}(${parameters.map(convertToString).join(', ')})`;
|
362
|
+
return sb + `super().${decl.node.d.name.d.value}(${parameters.map(convertToString).join(', ')})`;
|
363
363
|
function getParameters(parameters) {
|
364
364
|
const results = [];
|
365
365
|
let sawKeywordOnlySeparator = false;
|
366
366
|
for (const parameter of parameters) {
|
367
|
-
if (parameter.name) {
|
367
|
+
if (parameter.d.name) {
|
368
368
|
results.push([
|
369
369
|
parameter,
|
370
|
-
parameter.category === 0 /* ParameterCategory.Simple */ &&
|
370
|
+
parameter.d.category === 0 /* ParameterCategory.Simple */ &&
|
371
|
+
!!parameter.d.name &&
|
372
|
+
sawKeywordOnlySeparator,
|
371
373
|
]);
|
372
374
|
}
|
373
375
|
// All simple parameters after a `*` or `*args` parameter
|
374
376
|
// are considered keyword only.
|
375
|
-
if (parameter.category === 1 /* ParameterCategory.ArgsList */) {
|
377
|
+
if (parameter.d.category === 1 /* ParameterCategory.ArgsList */) {
|
376
378
|
sawKeywordOnlySeparator = true;
|
377
379
|
}
|
378
380
|
}
|
@@ -380,11 +382,11 @@ class CompletionProvider {
|
|
380
382
|
}
|
381
383
|
function convertToString(parameter) {
|
382
384
|
var _a;
|
383
|
-
const name = (_a = parameter[0].name) === null || _a === void 0 ? void 0 : _a.value;
|
384
|
-
if (parameter[0].category === 1 /* ParameterCategory.ArgsList */) {
|
385
|
+
const name = (_a = parameter[0].d.name) === null || _a === void 0 ? void 0 : _a.d.value;
|
386
|
+
if (parameter[0].d.category === 1 /* ParameterCategory.ArgsList */) {
|
385
387
|
return `*${name}`;
|
386
388
|
}
|
387
|
-
if (parameter[0].category === 2 /* ParameterCategory.KwargsDict */) {
|
389
|
+
if (parameter[0].d.category === 2 /* ParameterCategory.KwargsDict */) {
|
388
390
|
return `**${name}`;
|
389
391
|
}
|
390
392
|
return parameter[1] ? `${name}=${name}` : name;
|
@@ -392,7 +394,7 @@ class CompletionProvider {
|
|
392
394
|
}
|
393
395
|
createReplaceEdits(priorWord, node, text) {
|
394
396
|
const replaceOrInsertEndChar = (node === null || node === void 0 ? void 0 : node.nodeType) === 38 /* ParseNodeType.Name */
|
395
|
-
? this.position.character - priorWord.length + node.value.length
|
397
|
+
? this.position.character - priorWord.length + node.d.value.length
|
396
398
|
: this.position.character;
|
397
399
|
const range = {
|
398
400
|
start: { line: this.position.line, character: this.position.character - priorWord.length },
|
@@ -499,8 +501,8 @@ class CompletionProvider {
|
|
499
501
|
leftType = this.evaluator.makeTopLevelTypeVarsConcrete(leftType);
|
500
502
|
// If this is an unknown type with a "possible type" associated with
|
501
503
|
// it, use the possible type.
|
502
|
-
if ((0, types_1.isUnknown)(leftType) && leftType.possibleType) {
|
503
|
-
leftType = this.evaluator.makeTopLevelTypeVarsConcrete(leftType.possibleType);
|
504
|
+
if ((0, types_1.isUnknown)(leftType) && leftType.priv.possibleType) {
|
505
|
+
leftType = this.evaluator.makeTopLevelTypeVarsConcrete(leftType.priv.possibleType);
|
504
506
|
}
|
505
507
|
(0, typeUtils_1.doForEachSubtype)(leftType, (subtype) => {
|
506
508
|
subtype = this.evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
@@ -752,7 +754,7 @@ class CompletionProvider {
|
|
752
754
|
else if (node) {
|
753
755
|
const fStringContainer = ParseTreeUtils.getParentNodeOfType(node, 30 /* ParseNodeType.FormatString */);
|
754
756
|
if (fStringContainer) {
|
755
|
-
this._stringLiteralContainer = fStringContainer.token;
|
757
|
+
this._stringLiteralContainer = fStringContainer.d.token;
|
756
758
|
}
|
757
759
|
}
|
758
760
|
// See if we can get to a "better" node by backing up a few columns.
|
@@ -828,7 +830,7 @@ class CompletionProvider {
|
|
828
830
|
return this._getExpressionErrorCompletions(curNode, offset, priorWord, priorText, postText);
|
829
831
|
}
|
830
832
|
if (curNode.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
831
|
-
return this.getMemberAccessCompletions(curNode.
|
833
|
+
return this.getMemberAccessCompletions(curNode.d.leftExpr, priorWord);
|
832
834
|
}
|
833
835
|
if (curNode.nodeType === 18 /* ParseNodeType.Dictionary */) {
|
834
836
|
const completionMap = new CompletionMap();
|
@@ -841,7 +843,7 @@ class CompletionProvider {
|
|
841
843
|
if (dictionaryEntry) {
|
842
844
|
if (((_b = dictionaryEntry.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 18 /* ParseNodeType.Dictionary */) {
|
843
845
|
const dictionaryNode = dictionaryEntry.parent;
|
844
|
-
if (dictionaryNode.trailingCommaToken && dictionaryNode.trailingCommaToken.start < offset) {
|
846
|
+
if (dictionaryNode.d.trailingCommaToken && dictionaryNode.d.trailingCommaToken.start < offset) {
|
845
847
|
const completionMap = new CompletionMap();
|
846
848
|
if (this._tryAddTypedDictKeysFromDictionary(dictionaryNode,
|
847
849
|
/* stringNode */ undefined, priorWord, priorText, postText, completionMap)) {
|
@@ -872,18 +874,18 @@ class CompletionProvider {
|
|
872
874
|
if (curNode.nodeType === 50 /* ParseNodeType.Suite */) {
|
873
875
|
if (curNode.parent &&
|
874
876
|
curNode.parent.nodeType === 28 /* ParseNodeType.Except */ &&
|
875
|
-
!curNode.parent.name &&
|
876
|
-
curNode.parent.
|
877
|
-
textRange_1.TextRange.getEnd(curNode.parent.
|
878
|
-
offset <= curNode.parent.exceptSuite.start) {
|
877
|
+
!curNode.parent.d.name &&
|
878
|
+
curNode.parent.d.typeExpr &&
|
879
|
+
textRange_1.TextRange.getEnd(curNode.parent.d.typeExpr) < offset &&
|
880
|
+
offset <= curNode.parent.d.exceptSuite.start) {
|
879
881
|
// except Exception as [<empty>]
|
880
882
|
return undefined;
|
881
883
|
}
|
882
884
|
if (curNode.parent &&
|
883
885
|
curNode.parent.nodeType === 10 /* ParseNodeType.Class */ &&
|
884
|
-
(!curNode.parent.name || !curNode.parent.name.value) &&
|
885
|
-
curNode.parent.arguments.length === 0 &&
|
886
|
-
offset <= curNode.parent.suite.start) {
|
886
|
+
(!curNode.parent.d.name || !curNode.parent.d.name.d.value) &&
|
887
|
+
curNode.parent.d.arguments.length === 0 &&
|
888
|
+
offset <= curNode.parent.d.suite.start) {
|
887
889
|
// class [<empty>]
|
888
890
|
return undefined;
|
889
891
|
}
|
@@ -914,7 +916,7 @@ class CompletionProvider {
|
|
914
916
|
if (!curNode.parent) {
|
915
917
|
return false;
|
916
918
|
}
|
917
|
-
if (curNode.parent.nodeType === 24 /* ParseNodeType.ImportAs */ && curNode.parent.alias === curNode) {
|
919
|
+
if (curNode.parent.nodeType === 24 /* ParseNodeType.ImportAs */ && curNode.parent.d.alias === curNode) {
|
918
920
|
// Are we within a "import Y as [Z]"?
|
919
921
|
return undefined;
|
920
922
|
}
|
@@ -922,7 +924,7 @@ class CompletionProvider {
|
|
922
924
|
// Are we within a "import Y as [<empty>]"?
|
923
925
|
if (curNode.parent.parent &&
|
924
926
|
curNode.parent.parent.nodeType === 24 /* ParseNodeType.ImportAs */ &&
|
925
|
-
!curNode.parent.parent.alias &&
|
927
|
+
!curNode.parent.parent.d.alias &&
|
926
928
|
textRange_1.TextRange.getEnd(curNode.parent.parent) < offset) {
|
927
929
|
return undefined;
|
928
930
|
}
|
@@ -931,55 +933,55 @@ class CompletionProvider {
|
|
931
933
|
return this._getImportModuleCompletions(curNode.parent);
|
932
934
|
}
|
933
935
|
if (curNode.parent.nodeType === 26 /* ParseNodeType.ImportFromAs */) {
|
934
|
-
if (curNode.parent.alias === curNode) {
|
936
|
+
if (curNode.parent.d.alias === curNode) {
|
935
937
|
// Are we within a "from X import Y as [Z]"?
|
936
938
|
return undefined;
|
937
939
|
}
|
938
940
|
const parentNode = curNode.parent.parent;
|
939
941
|
if (parentNode && parentNode.nodeType === 25 /* ParseNodeType.ImportFrom */) {
|
940
942
|
// Are we within a "from X import Y as [<empty>]"?
|
941
|
-
if (!curNode.parent.alias && textRange_1.TextRange.getEnd(curNode.parent) < offset) {
|
943
|
+
if (!curNode.parent.d.alias && textRange_1.TextRange.getEnd(curNode.parent) < offset) {
|
942
944
|
return undefined;
|
943
945
|
}
|
944
|
-
if (curNode.parent.name === curNode) {
|
946
|
+
if (curNode.parent.d.name === curNode) {
|
945
947
|
return this._getImportFromCompletions(parentNode, offset, priorWord);
|
946
948
|
}
|
947
949
|
return this._getImportFromCompletions(parentNode, offset, '');
|
948
950
|
}
|
949
951
|
return false;
|
950
952
|
}
|
951
|
-
if (curNode.parent.nodeType === 35 /* ParseNodeType.MemberAccess */ && curNode === curNode.parent.
|
952
|
-
return this.getMemberAccessCompletions(curNode.parent.
|
953
|
+
if (curNode.parent.nodeType === 35 /* ParseNodeType.MemberAccess */ && curNode === curNode.parent.d.member) {
|
954
|
+
return this.getMemberAccessCompletions(curNode.parent.d.leftExpr, priorWord);
|
953
955
|
}
|
954
|
-
if (curNode.parent.nodeType === 28 /* ParseNodeType.Except */ && curNode === curNode.parent.name) {
|
956
|
+
if (curNode.parent.nodeType === 28 /* ParseNodeType.Except */ && curNode === curNode.parent.d.name) {
|
955
957
|
return undefined;
|
956
958
|
}
|
957
|
-
if (curNode.parent.nodeType === 31 /* ParseNodeType.Function */ && curNode === curNode.parent.name) {
|
958
|
-
if ((_a = curNode.parent.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
|
959
|
+
if (curNode.parent.nodeType === 31 /* ParseNodeType.Function */ && curNode === curNode.parent.d.name) {
|
960
|
+
if ((_a = curNode.parent.d.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
|
959
961
|
return this._getMethodOverloadsCompletions(priorWord, curNode);
|
960
962
|
}
|
961
963
|
return undefined;
|
962
964
|
}
|
963
|
-
if (curNode.parent.nodeType === 41 /* ParseNodeType.Parameter */ && curNode === curNode.parent.name) {
|
965
|
+
if (curNode.parent.nodeType === 41 /* ParseNodeType.Parameter */ && curNode === curNode.parent.d.name) {
|
964
966
|
return undefined;
|
965
967
|
}
|
966
|
-
if (curNode.parent.nodeType === 10 /* ParseNodeType.Class */ && curNode === curNode.parent.name) {
|
968
|
+
if (curNode.parent.nodeType === 10 /* ParseNodeType.Class */ && curNode === curNode.parent.d.name) {
|
967
969
|
return undefined;
|
968
970
|
}
|
969
971
|
if (curNode.parent.nodeType === 29 /* ParseNodeType.For */ &&
|
970
|
-
textRange_1.TextRange.contains(curNode.parent.
|
972
|
+
textRange_1.TextRange.contains(curNode.parent.d.targetExpr, curNode.start)) {
|
971
973
|
return undefined;
|
972
974
|
}
|
973
975
|
if (curNode.parent.nodeType === 12 /* ParseNodeType.ComprehensionFor */ &&
|
974
|
-
textRange_1.TextRange.contains(curNode.parent.
|
976
|
+
textRange_1.TextRange.contains(curNode.parent.d.targetExpr, curNode.start)) {
|
975
977
|
return undefined;
|
976
978
|
}
|
977
979
|
// For assignments that implicitly declare variables, remove itself (var decl) from completion.
|
978
980
|
if (curNode.parent.nodeType === 3 /* ParseNodeType.Assignment */ ||
|
979
981
|
curNode.parent.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
|
980
982
|
const leftNode = curNode.parent.nodeType === 4 /* ParseNodeType.AssignmentExpression */
|
981
|
-
? curNode.parent.name
|
982
|
-
: curNode.parent.
|
983
|
+
? curNode.parent.d.name
|
984
|
+
: curNode.parent.d.leftExpr;
|
983
985
|
if (leftNode !== curNode || priorWord.length === 0) {
|
984
986
|
return false;
|
985
987
|
}
|
@@ -989,7 +991,7 @@ class CompletionProvider {
|
|
989
991
|
}
|
990
992
|
const completionMap = this._getExpressionCompletions(curNode, priorWord, priorText, postText);
|
991
993
|
if (completionMap) {
|
992
|
-
completionMap.delete(curNode.value);
|
994
|
+
completionMap.delete(curNode.d.value);
|
993
995
|
}
|
994
996
|
return completionMap;
|
995
997
|
}
|
@@ -1048,7 +1050,7 @@ class CompletionProvider {
|
|
1048
1050
|
// Is the error due to a missing member access name? If so,
|
1049
1051
|
// we can evaluate the left side of the member access expression
|
1050
1052
|
// to determine its type and offer suggestions based on it.
|
1051
|
-
switch (node.category) {
|
1053
|
+
switch (node.d.category) {
|
1052
1054
|
case 0 /* ErrorExpressionCategory.MissingIn */: {
|
1053
1055
|
return this._createSingleKeywordCompletion('in');
|
1054
1056
|
}
|
@@ -1063,7 +1065,7 @@ class CompletionProvider {
|
|
1063
1065
|
const index = ParseTreeUtils.getTokenIndexAtLeft(tokenizerOutput.tokens, offset);
|
1064
1066
|
const token = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index);
|
1065
1067
|
const prevToken = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index - 1);
|
1066
|
-
if (node.category === 2 /* ErrorExpressionCategory.MissingExpression */) {
|
1068
|
+
if (node.d.category === 2 /* ErrorExpressionCategory.MissingExpression */) {
|
1067
1069
|
// Skip dots on expressions.
|
1068
1070
|
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 */) {
|
1069
1071
|
break;
|
@@ -1086,7 +1088,7 @@ class CompletionProvider {
|
|
1086
1088
|
const previousOffset = textRange_1.TextRange.getEnd(prevToken);
|
1087
1089
|
const previousNode = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, previousOffset);
|
1088
1090
|
if ((previousNode === null || previousNode === void 0 ? void 0 : previousNode.nodeType) !== 0 /* ParseNodeType.Error */ ||
|
1089
|
-
previousNode.category !== 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
|
1091
|
+
previousNode.d.category !== 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
|
1090
1092
|
return this._getExpressionCompletions(node, priorWord, priorText, postText);
|
1091
1093
|
}
|
1092
1094
|
else {
|
@@ -1094,7 +1096,7 @@ class CompletionProvider {
|
|
1094
1096
|
node = previousNode;
|
1095
1097
|
}
|
1096
1098
|
}
|
1097
|
-
else if (node.category === 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
|
1099
|
+
else if (node.d.category === 7 /* ErrorExpressionCategory.MissingMemberAccessName */) {
|
1098
1100
|
// Skip double dots on member access.
|
1099
1101
|
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 */) &&
|
1100
1102
|
((prevToken === null || prevToken === void 0 ? void 0 : prevToken.type) === 20 /* TokenType.Dot */ || (prevToken === null || prevToken === void 0 ? void 0 : prevToken.type) === 19 /* TokenType.Ellipsis */)) {
|
@@ -1115,13 +1117,13 @@ class CompletionProvider {
|
|
1115
1117
|
return completionResults;
|
1116
1118
|
}
|
1117
1119
|
case 10 /* ErrorExpressionCategory.MissingFunctionParameterList */: {
|
1118
|
-
if (node.child && node.child.nodeType === 38 /* ParseNodeType.Name */) {
|
1119
|
-
if ((_a = node.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
|
1120
|
-
return this._getMethodOverloadsCompletions(priorWord, node.child);
|
1120
|
+
if (node.d.child && node.d.child.nodeType === 38 /* ParseNodeType.Name */) {
|
1121
|
+
if ((_a = node.d.decorators) === null || _a === void 0 ? void 0 : _a.some((d) => this._isOverload(d))) {
|
1122
|
+
return this._getMethodOverloadsCompletions(priorWord, node.d.child);
|
1121
1123
|
}
|
1122
1124
|
// Determine if the partial name is a method that's overriding
|
1123
1125
|
// a method in a base class.
|
1124
|
-
return this.getMethodOverrideCompletions(priorWord, node.child, node.decorators);
|
1126
|
+
return this.getMethodOverrideCompletions(priorWord, node.d.child, node.d.decorators);
|
1125
1127
|
}
|
1126
1128
|
break;
|
1127
1129
|
}
|
@@ -1129,10 +1131,10 @@ class CompletionProvider {
|
|
1129
1131
|
return undefined;
|
1130
1132
|
}
|
1131
1133
|
_getMissingMemberAccessNameCompletions(node, priorWord) {
|
1132
|
-
if (!node.child || !(0, parseNodes_1.isExpressionNode)(node.child)) {
|
1134
|
+
if (!node.d.child || !(0, parseNodes_1.isExpressionNode)(node.d.child)) {
|
1133
1135
|
return undefined;
|
1134
1136
|
}
|
1135
|
-
return this.getMemberAccessCompletions(node.child, priorWord);
|
1137
|
+
return this.getMemberAccessCompletions(node.d.child, priorWord);
|
1136
1138
|
}
|
1137
1139
|
_isOverload(node) {
|
1138
1140
|
return ParseTreeUtils.checkDecorator(node, 'overload');
|
@@ -1150,8 +1152,8 @@ class CompletionProvider {
|
|
1150
1152
|
// class T:
|
1151
1153
|
// f: |<= here
|
1152
1154
|
const isTypeAnnotationOfClassVariable = ((_a = parseNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 54 /* ParseNodeType.TypeAnnotation */ &&
|
1153
|
-
parseNode.parent.
|
1154
|
-
parseNode.parent.
|
1155
|
+
parseNode.parent.d.valueExpr.nodeType === 38 /* ParseNodeType.Name */ &&
|
1156
|
+
parseNode.parent.d.annotation === parseNode &&
|
1155
1157
|
((_b = parseNode.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 47 /* ParseNodeType.StatementList */ &&
|
1156
1158
|
((_c = parseNode.parent.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 50 /* ParseNodeType.Suite */ &&
|
1157
1159
|
((_d = parseNode.parent.parent.parent.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 10 /* ParseNodeType.Class */;
|
@@ -1166,7 +1168,7 @@ class CompletionProvider {
|
|
1166
1168
|
if (!classResults) {
|
1167
1169
|
return undefined;
|
1168
1170
|
}
|
1169
|
-
const classVariableName = parseNode.parent.
|
1171
|
+
const classVariableName = parseNode.parent.d.valueExpr.d.value;
|
1170
1172
|
const classMember = (0, typeUtils_1.lookUpClassMember)(classResults.classType, classVariableName, 16 /* MemberAccessFlags.SkipInstanceMembers */ | 1 /* MemberAccessFlags.SkipOriginalClass */);
|
1171
1173
|
// First, see whether we can use semantic info to get variable type.
|
1172
1174
|
if (classMember) {
|
@@ -1182,7 +1184,7 @@ class CompletionProvider {
|
|
1182
1184
|
}
|
1183
1185
|
// If we can't do that using semantic info, then try syntactic info.
|
1184
1186
|
const symbolTable = new Map();
|
1185
|
-
for (const mroClass of classResults.classType.
|
1187
|
+
for (const mroClass of classResults.classType.shared.mro) {
|
1186
1188
|
if (mroClass === classResults.classType) {
|
1187
1189
|
// Ignore current type.
|
1188
1190
|
continue;
|
@@ -1226,7 +1228,7 @@ class CompletionProvider {
|
|
1226
1228
|
return undefined;
|
1227
1229
|
}
|
1228
1230
|
const symbolTable = new Map();
|
1229
|
-
for (const mroClass of classResults.classType.
|
1231
|
+
for (const mroClass of classResults.classType.shared.mro) {
|
1230
1232
|
if ((0, types_1.isInstantiableClass)(mroClass)) {
|
1231
1233
|
(0, typeUtils_1.getMembersForClass)(mroClass, symbolTable, /* includeInstanceVars */ false);
|
1232
1234
|
}
|
@@ -1236,7 +1238,7 @@ class CompletionProvider {
|
|
1236
1238
|
if (SymbolNameUtils.isPrivateName(name) ||
|
1237
1239
|
symbol.isPrivateMember() ||
|
1238
1240
|
symbol.isExternallyHidden() ||
|
1239
|
-
!StringUtils.isPatternInSymbol(partialName.value, name)) {
|
1241
|
+
!StringUtils.isPatternInSymbol(partialName.d.value, name)) {
|
1240
1242
|
return;
|
1241
1243
|
}
|
1242
1244
|
const decls = symbol
|
@@ -1247,7 +1249,7 @@ class CompletionProvider {
|
|
1247
1249
|
decls.some((d) => d.node && ParseTreeUtils.getEnclosingClass(d.node, false) === enclosingClass)) {
|
1248
1250
|
return;
|
1249
1251
|
}
|
1250
|
-
this.addSymbol(name, symbol, partialName.value, completionMap, {});
|
1252
|
+
this.addSymbol(name, symbol, partialName.d.value, completionMap, {});
|
1251
1253
|
});
|
1252
1254
|
return completionMap.size > 0 ? completionMap : undefined;
|
1253
1255
|
}
|
@@ -1265,7 +1267,7 @@ class CompletionProvider {
|
|
1265
1267
|
if (!decl || decl.type !== 5 /* DeclarationType.Function */) {
|
1266
1268
|
return;
|
1267
1269
|
}
|
1268
|
-
if (!decl.node.decorators.some((d) => this._isOverload(d))) {
|
1270
|
+
if (!decl.node.d.decorators.some((d) => this._isOverload(d))) {
|
1269
1271
|
// Only consider ones that have overload decorator.
|
1270
1272
|
return;
|
1271
1273
|
}
|
@@ -1274,9 +1276,9 @@ class CompletionProvider {
|
|
1274
1276
|
// Don't show itself.
|
1275
1277
|
return;
|
1276
1278
|
}
|
1277
|
-
if (StringUtils.isPatternInSymbol(partialName.value, name)) {
|
1278
|
-
const textEdit = this.createReplaceEdits(priorWord, partialName, decl.node.name.value);
|
1279
|
-
this.addSymbol(name, symbol, partialName.value, completionMap, {
|
1279
|
+
if (StringUtils.isPatternInSymbol(partialName.d.value, name)) {
|
1280
|
+
const textEdit = this.createReplaceEdits(priorWord, partialName, decl.node.d.name.d.value);
|
1281
|
+
this.addSymbol(name, symbol, partialName.d.value, completionMap, {
|
1280
1282
|
funcParensDisabled,
|
1281
1283
|
edits: { textEdit },
|
1282
1284
|
});
|
@@ -1291,7 +1293,7 @@ class CompletionProvider {
|
|
1291
1293
|
return undefined;
|
1292
1294
|
}
|
1293
1295
|
const symbolTable = new Map();
|
1294
|
-
for (const mroClass of classResults.classType.
|
1296
|
+
for (const mroClass of classResults.classType.shared.mro) {
|
1295
1297
|
if ((0, types_1.isInstantiableClass)(mroClass)) {
|
1296
1298
|
(0, typeUtils_1.getMembersForClass)(mroClass, symbolTable, /* includeInstanceVars */ false);
|
1297
1299
|
}
|
@@ -1314,7 +1316,7 @@ class CompletionProvider {
|
|
1314
1316
|
// In stubs, always use "...".
|
1315
1317
|
ellipsisForDefault = true;
|
1316
1318
|
}
|
1317
|
-
else if (classType.
|
1319
|
+
else if (classType.shared.moduleName === decl.moduleName) {
|
1318
1320
|
// In the same file, always print the full default.
|
1319
1321
|
ellipsisForDefault = false;
|
1320
1322
|
}
|
@@ -1322,17 +1324,17 @@ class CompletionProvider {
|
|
1322
1324
|
? 1 /* ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations */ |
|
1323
1325
|
2 /* ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength */
|
1324
1326
|
: 2 /* ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength */;
|
1325
|
-
const paramList = node.
|
1327
|
+
const paramList = node.d.params
|
1326
1328
|
.map((param, index) => {
|
1327
1329
|
let paramString = '';
|
1328
|
-
if (param.category === 1 /* ParameterCategory.ArgsList */) {
|
1330
|
+
if (param.d.category === 1 /* ParameterCategory.ArgsList */) {
|
1329
1331
|
paramString += '*';
|
1330
1332
|
}
|
1331
|
-
else if (param.category === 2 /* ParameterCategory.KwargsDict */) {
|
1333
|
+
else if (param.d.category === 2 /* ParameterCategory.KwargsDict */) {
|
1332
1334
|
paramString += '**';
|
1333
1335
|
}
|
1334
|
-
if (param.name) {
|
1335
|
-
paramString += param.name.value;
|
1336
|
+
if (param.d.name) {
|
1337
|
+
paramString += param.d.name.d.value;
|
1336
1338
|
}
|
1337
1339
|
// Currently, we don't automatically add import if the type used in the annotation is not imported
|
1338
1340
|
// in current file.
|
@@ -1340,25 +1342,26 @@ class CompletionProvider {
|
|
1340
1342
|
if (paramTypeAnnotation) {
|
1341
1343
|
paramString += ': ' + ParseTreeUtils.printExpression(paramTypeAnnotation, printFlags);
|
1342
1344
|
}
|
1343
|
-
if (param.defaultValue) {
|
1345
|
+
if (param.d.defaultValue) {
|
1344
1346
|
paramString += paramTypeAnnotation ? ' = ' : '=';
|
1345
|
-
const useEllipsis = ellipsisForDefault !== null && ellipsisForDefault !== void 0 ? ellipsisForDefault : !ParseTreeUtils.isSimpleDefault(param.defaultValue);
|
1346
|
-
paramString += useEllipsis
|
1347
|
+
const useEllipsis = ellipsisForDefault !== null && ellipsisForDefault !== void 0 ? ellipsisForDefault : !ParseTreeUtils.isSimpleDefault(param.d.defaultValue);
|
1348
|
+
paramString += useEllipsis
|
1349
|
+
? '...'
|
1350
|
+
: ParseTreeUtils.printExpression(param.d.defaultValue, printFlags);
|
1347
1351
|
}
|
1348
|
-
if (!paramString && !param.name && param.category === 0 /* ParameterCategory.Simple */) {
|
1352
|
+
if (!paramString && !param.d.name && param.d.category === 0 /* ParameterCategory.Simple */) {
|
1349
1353
|
return '/';
|
1350
1354
|
}
|
1351
1355
|
return paramString;
|
1352
1356
|
})
|
1353
1357
|
.join(', ');
|
1354
|
-
let methodSignature = node.name.value + '(' + paramList + ')';
|
1355
|
-
if (node.
|
1356
|
-
methodSignature += ' -> ' + ParseTreeUtils.printExpression(node.
|
1358
|
+
let methodSignature = node.d.name.d.value + '(' + paramList + ')';
|
1359
|
+
if (node.d.returnAnnotation) {
|
1360
|
+
methodSignature += ' -> ' + ParseTreeUtils.printExpression(node.d.returnAnnotation, printFlags);
|
1357
1361
|
}
|
1358
|
-
else if (node.
|
1362
|
+
else if (node.d.funcAnnotationComment) {
|
1359
1363
|
methodSignature +=
|
1360
|
-
' -> ' +
|
1361
|
-
ParseTreeUtils.printExpression(node.functionAnnotationComment.returnTypeAnnotation, printFlags);
|
1364
|
+
' -> ' + ParseTreeUtils.printExpression(node.d.funcAnnotationComment.d.returnAnnotation, printFlags);
|
1362
1365
|
}
|
1363
1366
|
return methodSignature;
|
1364
1367
|
}
|
@@ -1377,7 +1380,7 @@ class CompletionProvider {
|
|
1377
1380
|
// Are we within a "with Y as []"?
|
1378
1381
|
// Don't add any completion options.
|
1379
1382
|
if (((_a = parseNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 59 /* ParseNodeType.WithItem */ &&
|
1380
|
-
parseNode.parent === ((_b = parseNode.parent.target) === null || _b === void 0 ? void 0 : _b.parent)) {
|
1383
|
+
parseNode.parent === ((_b = parseNode.parent.d.target) === null || _b === void 0 ? void 0 : _b.parent)) {
|
1381
1384
|
return undefined;
|
1382
1385
|
}
|
1383
1386
|
const completionMap = new CompletionMap();
|
@@ -1417,11 +1420,11 @@ class CompletionProvider {
|
|
1417
1420
|
const currentNode = node.parent;
|
1418
1421
|
return (currentNode &&
|
1419
1422
|
currentNode.nodeType === 1 /* ParseNodeType.Argument */ &&
|
1420
|
-
currentNode.
|
1423
|
+
currentNode.d.argCategory === 0 /* ArgumentCategory.Simple */ &&
|
1421
1424
|
currentNode.parent &&
|
1422
1425
|
currentNode.parent.nodeType === 27 /* ParseNodeType.Index */ &&
|
1423
|
-
currentNode.parent.
|
1424
|
-
currentNode.parent.
|
1426
|
+
currentNode.parent.d.leftExpr &&
|
1427
|
+
currentNode.parent.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */);
|
1425
1428
|
}
|
1426
1429
|
_addCallArgumentCompletions(parseNode, priorWord, priorText, postText, atArgument, completionMap) {
|
1427
1430
|
// If we're within the argument list of a call, add parameter names.
|
@@ -1433,7 +1436,7 @@ class CompletionProvider {
|
|
1433
1436
|
const signatureInfo = this.evaluator.getCallSignatureInfo(callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake);
|
1434
1437
|
if (signatureInfo) {
|
1435
1438
|
// Are we past the call expression and within the argument list?
|
1436
|
-
const callNameEnd = (0, positionUtils_1.convertOffsetToPosition)(signatureInfo.callNode.
|
1439
|
+
const callNameEnd = (0, positionUtils_1.convertOffsetToPosition)(signatureInfo.callNode.d.leftExpr.start + signatureInfo.callNode.d.leftExpr.length, this.parseResults.tokenizerOutput.lines);
|
1437
1440
|
if ((0, textRange_1.comparePositions)(this.position, callNameEnd) > 0) {
|
1438
1441
|
if (!atArgument) {
|
1439
1442
|
this._addNamedParameters(signatureInfo, priorWord, completionMap);
|
@@ -1449,11 +1452,11 @@ class CompletionProvider {
|
|
1449
1452
|
return undefined;
|
1450
1453
|
}
|
1451
1454
|
const type = signature.type;
|
1452
|
-
const paramIndex = type.
|
1455
|
+
const paramIndex = type.shared.parameters.indexOf(signature.activeParam);
|
1453
1456
|
if (paramIndex < 0) {
|
1454
1457
|
return undefined;
|
1455
1458
|
}
|
1456
|
-
const paramType = type.
|
1459
|
+
const paramType = type.shared.parameters[paramIndex].type;
|
1457
1460
|
this._addLiteralValuesForTargetType(paramType, priorWord, priorText, postText, completionMap);
|
1458
1461
|
return undefined;
|
1459
1462
|
});
|
@@ -1465,7 +1468,7 @@ class CompletionProvider {
|
|
1465
1468
|
const value = (0, typePrinter_1.printLiteralValue)(v, quoteValue.quoteCharacter);
|
1466
1469
|
if (quoteValue.stringValue === undefined) {
|
1467
1470
|
this.addNameToCompletions(value, vscode_languageserver_1.CompletionItemKind.Constant, priorWord, completionMap, {
|
1468
|
-
sortText: this._makeSortText(SortCategory.LiteralValue, v.literalValue),
|
1471
|
+
sortText: this._makeSortText(SortCategory.LiteralValue, v.priv.literalValue),
|
1469
1472
|
});
|
1470
1473
|
}
|
1471
1474
|
else {
|
@@ -1479,12 +1482,12 @@ class CompletionProvider {
|
|
1479
1482
|
if (!node) {
|
1480
1483
|
return [];
|
1481
1484
|
}
|
1482
|
-
return node.
|
1483
|
-
if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */ || (excludeIds === null || excludeIds === void 0 ? void 0 : excludeIds.has(entry.
|
1485
|
+
return node.d.items.flatMap((entry) => {
|
1486
|
+
if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */ || (excludeIds === null || excludeIds === void 0 ? void 0 : excludeIds.has(entry.d.keyExpr.id))) {
|
1484
1487
|
return [];
|
1485
1488
|
}
|
1486
|
-
if (entry.
|
1487
|
-
return [entry.
|
1489
|
+
if (entry.d.keyExpr.nodeType === 48 /* ParseNodeType.StringList */) {
|
1490
|
+
return [entry.d.keyExpr.d.strings.map((s) => s.d.value).join('')];
|
1488
1491
|
}
|
1489
1492
|
return [];
|
1490
1493
|
});
|
@@ -1519,8 +1522,8 @@ class CompletionProvider {
|
|
1519
1522
|
const typesToCombine = [];
|
1520
1523
|
// Handle both overloaded and non-overloaded functions.
|
1521
1524
|
(0, typeUtils_1.doForEachSignature)(getItemType, (signature) => {
|
1522
|
-
if (signature.
|
1523
|
-
signature.
|
1525
|
+
if (signature.shared.parameters.length >= 1 &&
|
1526
|
+
signature.shared.parameters[0].category === 0 /* ParameterCategory.Simple */) {
|
1524
1527
|
typesToCombine.push(types_1.FunctionType.getEffectiveParameterType(signature, 0));
|
1525
1528
|
}
|
1526
1529
|
});
|
@@ -1532,7 +1535,7 @@ class CompletionProvider {
|
|
1532
1535
|
}
|
1533
1536
|
_getIndexKeys(indexNode, invocationNode) {
|
1534
1537
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
1535
|
-
const baseType = this.evaluator.getType(indexNode.
|
1538
|
+
const baseType = this.evaluator.getType(indexNode.d.leftExpr);
|
1536
1539
|
if (!baseType || !(0, types_1.isClassInstance)(baseType)) {
|
1537
1540
|
return [];
|
1538
1541
|
}
|
@@ -1554,12 +1557,12 @@ class CompletionProvider {
|
|
1554
1557
|
return keys;
|
1555
1558
|
}
|
1556
1559
|
}
|
1557
|
-
if (indexNode.
|
1560
|
+
if (indexNode.d.leftExpr.nodeType !== 38 /* ParseNodeType.Name */) {
|
1558
1561
|
// This completion only supports simple name case
|
1559
1562
|
return [];
|
1560
1563
|
}
|
1561
1564
|
// Must be local variable/parameter
|
1562
|
-
const declarations = (_a = this.evaluator.getDeclarationsForNameNode(indexNode.
|
1565
|
+
const declarations = (_a = this.evaluator.getDeclarationsForNameNode(indexNode.d.leftExpr)) !== null && _a !== void 0 ? _a : [];
|
1563
1566
|
const declaration = declarations.length > 0 ? declarations[0] : undefined;
|
1564
1567
|
if (!declaration ||
|
1565
1568
|
(declaration.type !== 1 /* DeclarationType.Variable */ && declaration.type !== 2 /* DeclarationType.Parameter */)) {
|
@@ -1568,7 +1571,7 @@ class CompletionProvider {
|
|
1568
1571
|
if (!declaration.uri.equals(this.fileUri)) {
|
1569
1572
|
return [];
|
1570
1573
|
}
|
1571
|
-
let startingNode = indexNode.
|
1574
|
+
let startingNode = indexNode.d.leftExpr;
|
1572
1575
|
if (declaration.node) {
|
1573
1576
|
const scopeRoot = ParseTreeUtils.getEvaluationScopeNode(declaration.node).node;
|
1574
1577
|
// Find the lowest tree to search the symbol.
|
@@ -1576,30 +1579,28 @@ class CompletionProvider {
|
|
1576
1579
|
startingNode = scopeRoot;
|
1577
1580
|
}
|
1578
1581
|
}
|
1579
|
-
const results = documentSymbolCollector_1.DocumentSymbolCollector.collectFromNode(this.program, indexNode.
|
1582
|
+
const results = documentSymbolCollector_1.DocumentSymbolCollector.collectFromNode(this.program, indexNode.d.leftExpr, this.cancellationToken, startingNode);
|
1580
1583
|
const keys = new Set();
|
1581
1584
|
for (const result of results) {
|
1582
1585
|
const node = ((_d = result.node.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 54 /* ParseNodeType.TypeAnnotation */ ? result.node.parent : result.node;
|
1583
1586
|
if (((_e = node.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 3 /* ParseNodeType.Assignment */ ||
|
1584
1587
|
((_f = node.parent) === null || _f === void 0 ? void 0 : _f.nodeType) === 4 /* ParseNodeType.AssignmentExpression */) {
|
1585
|
-
if (node.parent.
|
1586
|
-
const dictionary = node.parent.
|
1587
|
-
for (const entry of dictionary.
|
1588
|
-
const key = this.parseResults.text
|
1589
|
-
.substr(entry.keyExpression.start, entry.keyExpression.length)
|
1590
|
-
.trim();
|
1588
|
+
if (node.parent.d.rightExpr.nodeType === 18 /* ParseNodeType.Dictionary */) {
|
1589
|
+
const dictionary = node.parent.d.rightExpr;
|
1590
|
+
for (const entry of dictionary.d.items.filter((e) => e.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */)) {
|
1591
|
+
const key = this.parseResults.text.substr(entry.d.keyExpr.start, entry.d.keyExpr.length).trim();
|
1591
1592
|
if (key.length > 0)
|
1592
1593
|
keys.add(key);
|
1593
1594
|
}
|
1594
1595
|
}
|
1595
|
-
if (node.parent.
|
1596
|
-
const call = node.parent.
|
1597
|
-
const type = this.evaluator.getType(call.
|
1596
|
+
if (node.parent.d.rightExpr.nodeType === 9 /* ParseNodeType.Call */) {
|
1597
|
+
const call = node.parent.d.rightExpr;
|
1598
|
+
const type = this.evaluator.getType(call.d.leftExpr);
|
1598
1599
|
if (!type || !(0, types_1.isInstantiableClass)(type) || !types_1.ClassType.isBuiltIn(type, 'dict')) {
|
1599
1600
|
continue;
|
1600
1601
|
}
|
1601
|
-
for (const arg of call.
|
1602
|
-
const key = (_h = (_g = arg.name) === null || _g === void 0 ? void 0 : _g.value.trim()) !== null && _h !== void 0 ? _h : '';
|
1602
|
+
for (const arg of call.d.args) {
|
1603
|
+
const key = (_h = (_g = arg.d.name) === null || _g === void 0 ? void 0 : _g.d.value.trim()) !== null && _h !== void 0 ? _h : '';
|
1603
1604
|
const quote = this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter;
|
1604
1605
|
if (key.length > 0) {
|
1605
1606
|
keys.add(`${quote}${key}${quote}`);
|
@@ -1608,12 +1609,12 @@ class CompletionProvider {
|
|
1608
1609
|
}
|
1609
1610
|
}
|
1610
1611
|
if (((_j = node.parent) === null || _j === void 0 ? void 0 : _j.nodeType) === 27 /* ParseNodeType.Index */ &&
|
1611
|
-
node.parent.items.length === 1 &&
|
1612
|
-
node.parent.items[0].
|
1612
|
+
node.parent.d.items.length === 1 &&
|
1613
|
+
node.parent.d.items[0].d.valueExpr.nodeType !== 0 /* ParseNodeType.Error */ &&
|
1613
1614
|
!textRange_1.TextRange.containsRange(node.parent, invocationNode)) {
|
1614
|
-
const indexArgument = node.parent.items[0];
|
1615
|
+
const indexArgument = node.parent.d.items[0];
|
1615
1616
|
const key = this.parseResults.text
|
1616
|
-
.substr(indexArgument.
|
1617
|
+
.substr(indexArgument.d.valueExpr.start, indexArgument.d.valueExpr.length)
|
1617
1618
|
.trim();
|
1618
1619
|
if (key.length > 0)
|
1619
1620
|
keys.add(key);
|
@@ -1644,7 +1645,7 @@ class CompletionProvider {
|
|
1644
1645
|
// See if the type evaluator can determine the expected type for this node.
|
1645
1646
|
// ex) a: Literal["str"] = /* here */
|
1646
1647
|
const nodeForExpectedType = parentAndChild.parent.nodeType === 3 /* ParseNodeType.Assignment */
|
1647
|
-
? parentAndChild.parent.
|
1648
|
+
? parentAndChild.parent.d.rightExpr === parentAndChild.child
|
1648
1649
|
? parentAndChild.child
|
1649
1650
|
: undefined
|
1650
1651
|
: (0, parseNodes_1.isExpressionNode)(parentAndChild.child)
|
@@ -1664,7 +1665,7 @@ class CompletionProvider {
|
|
1664
1665
|
// a set initially.
|
1665
1666
|
let dictOrSet;
|
1666
1667
|
if (nodeForKey.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */ &&
|
1667
|
-
nodeForKey.
|
1668
|
+
nodeForKey.d.keyExpr === parentAndChild.child &&
|
1668
1669
|
((_a = nodeForKey.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 18 /* ParseNodeType.Dictionary */) {
|
1669
1670
|
dictOrSet = nodeForKey.parent;
|
1670
1671
|
}
|
@@ -1719,8 +1720,9 @@ class CompletionProvider {
|
|
1719
1720
|
// if c == "/* here */"
|
1720
1721
|
const comparison = parentAndChild.parent;
|
1721
1722
|
const supportedOperators = [2 /* OperatorType.Assign */, 12 /* OperatorType.Equals */, 28 /* OperatorType.NotEquals */];
|
1722
|
-
if (comparison.nodeType === 7 /* ParseNodeType.BinaryOperation */ &&
|
1723
|
-
|
1723
|
+
if (comparison.nodeType === 7 /* ParseNodeType.BinaryOperation */ &&
|
1724
|
+
supportedOperators.includes(comparison.d.operator)) {
|
1725
|
+
const type = this.evaluator.getType(comparison.d.leftExpr);
|
1724
1726
|
if (type && (0, typeUtils_1.containsLiteralType)(type)) {
|
1725
1727
|
this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
|
1726
1728
|
return true;
|
@@ -1729,8 +1731,8 @@ class CompletionProvider {
|
|
1729
1731
|
// if c := "/* here */"
|
1730
1732
|
const assignmentExpression = parentAndChild.parent;
|
1731
1733
|
if (assignmentExpression.nodeType === 4 /* ParseNodeType.AssignmentExpression */ &&
|
1732
|
-
assignmentExpression.
|
1733
|
-
const type = this.evaluator.getType(assignmentExpression.name);
|
1734
|
+
assignmentExpression.d.rightExpr === parentAndChild.child) {
|
1735
|
+
const type = this.evaluator.getType(assignmentExpression.d.name);
|
1734
1736
|
if (type && (0, typeUtils_1.containsLiteralType)(type)) {
|
1735
1737
|
this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
|
1736
1738
|
return true;
|
@@ -1741,11 +1743,11 @@ class CompletionProvider {
|
|
1741
1743
|
// case /* here */
|
1742
1744
|
const caseNode = parentAndChild.parent;
|
1743
1745
|
if (caseNode.nodeType === 64 /* ParseNodeType.Case */ &&
|
1744
|
-
caseNode.pattern.nodeType === 0 /* ParseNodeType.Error */ &&
|
1745
|
-
caseNode.pattern.category === 11 /* ErrorExpressionCategory.MissingPattern */ &&
|
1746
|
-
caseNode.suite === parentAndChild.child &&
|
1746
|
+
caseNode.d.pattern.nodeType === 0 /* ParseNodeType.Error */ &&
|
1747
|
+
caseNode.d.pattern.d.category === 11 /* ErrorExpressionCategory.MissingPattern */ &&
|
1748
|
+
caseNode.d.suite === parentAndChild.child &&
|
1747
1749
|
((_c = caseNode.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 63 /* ParseNodeType.Match */) {
|
1748
|
-
const type = this.evaluator.getType(caseNode.parent.
|
1750
|
+
const type = this.evaluator.getType(caseNode.parent.d.expr);
|
1749
1751
|
if (type && (0, typeUtils_1.containsLiteralType)(type)) {
|
1750
1752
|
this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
|
1751
1753
|
return true;
|
@@ -1760,7 +1762,7 @@ class CompletionProvider {
|
|
1760
1762
|
((_d = patternLiteral.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 66 /* ParseNodeType.PatternAs */ &&
|
1761
1763
|
((_e = patternLiteral.parent.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 64 /* ParseNodeType.Case */ &&
|
1762
1764
|
((_f = patternLiteral.parent.parent.parent) === null || _f === void 0 ? void 0 : _f.nodeType) === 63 /* ParseNodeType.Match */) {
|
1763
|
-
const type = this.evaluator.getType(patternLiteral.parent.parent.parent.
|
1765
|
+
const type = this.evaluator.getType(patternLiteral.parent.parent.parent.d.expr);
|
1764
1766
|
if (type && (0, typeUtils_1.containsLiteralType)(type)) {
|
1765
1767
|
this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap);
|
1766
1768
|
return true;
|
@@ -1784,7 +1786,7 @@ class CompletionProvider {
|
|
1784
1786
|
if (!node.parent.parent) {
|
1785
1787
|
return undefined;
|
1786
1788
|
}
|
1787
|
-
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 48 /* ParseNodeType.StringList */ || node.parent.strings.length > 1) {
|
1789
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 48 /* ParseNodeType.StringList */ || node.parent.d.strings.length > 1) {
|
1788
1790
|
return undefined;
|
1789
1791
|
}
|
1790
1792
|
return { parent: node.parent.parent, child: node.parent };
|
@@ -1893,7 +1895,7 @@ class CompletionProvider {
|
|
1893
1895
|
if (!indexNode) {
|
1894
1896
|
return false;
|
1895
1897
|
}
|
1896
|
-
const baseType = this.evaluator.getType(indexNode.
|
1898
|
+
const baseType = this.evaluator.getType(indexNode.d.leftExpr);
|
1897
1899
|
if (!baseType) {
|
1898
1900
|
return false;
|
1899
1901
|
}
|
@@ -1936,12 +1938,12 @@ class CompletionProvider {
|
|
1936
1938
|
_getImportFromCompletions(importFromNode, offset, priorWord) {
|
1937
1939
|
var _a;
|
1938
1940
|
// Don't attempt to provide completions for "from X import *".
|
1939
|
-
if (importFromNode.isWildcardImport) {
|
1941
|
+
if (importFromNode.d.isWildcardImport) {
|
1940
1942
|
return undefined;
|
1941
1943
|
}
|
1942
1944
|
// Access the imported module information, which is hanging
|
1943
1945
|
// off the ImportFromNode.
|
1944
|
-
const importInfo = AnalyzerNodeInfo.getImportInfo(importFromNode.module);
|
1946
|
+
const importInfo = AnalyzerNodeInfo.getImportInfo(importFromNode.d.module);
|
1945
1947
|
if (!importInfo) {
|
1946
1948
|
return undefined;
|
1947
1949
|
}
|
@@ -1965,7 +1967,7 @@ class CompletionProvider {
|
|
1965
1967
|
symbol.getDeclarations().some((d) => !(0, declaration_1.isIntrinsicDeclaration)(d)) &&
|
1966
1968
|
// Don't suggest symbols that have already been imported elsewhere
|
1967
1969
|
// in this import statement.
|
1968
|
-
!importFromNode.imports.find((imp) => imp.name.value === name &&
|
1970
|
+
!importFromNode.d.imports.find((imp) => imp.d.name.d.value === name &&
|
1969
1971
|
!(textRange_1.TextRange.contains(imp, offset) || textRange_1.TextRange.getEnd(imp) === offset)));
|
1970
1972
|
}, priorWord, importFromNode,
|
1971
1973
|
/* isInImport */ true,
|
@@ -1976,7 +1978,7 @@ class CompletionProvider {
|
|
1976
1978
|
}
|
1977
1979
|
_addImplicitImportsToCompletion(importInfo, importFromNode, priorWord, completionMap) {
|
1978
1980
|
importInfo.implicitImports.forEach((implImport) => {
|
1979
|
-
if (!importFromNode.imports.find((imp) => imp.name.value === implImport.name)) {
|
1981
|
+
if (!importFromNode.d.imports.find((imp) => imp.d.name.d.value === implImport.name)) {
|
1980
1982
|
this.addNameToCompletions(implImport.name, vscode_languageserver_1.CompletionItemKind.Module, priorWord, completionMap, {
|
1981
1983
|
moduleUri: implImport.uri,
|
1982
1984
|
});
|
@@ -2001,15 +2003,15 @@ class CompletionProvider {
|
|
2001
2003
|
// Add keys from typed dict outside signatures.
|
2002
2004
|
signatureInfo.signatures.forEach((signature) => {
|
2003
2005
|
var _a;
|
2004
|
-
if (signature.type.boundToType) {
|
2005
|
-
const keys = Array.from(((_a = signature.type.boundToType.
|
2006
|
+
if (signature.type.priv.boundToType) {
|
2007
|
+
const keys = Array.from(((_a = signature.type.priv.boundToType.shared.typedDictEntries) === null || _a === void 0 ? void 0 : _a.knownItems.keys()) || []);
|
2006
2008
|
keys.forEach((key) => argNameSet.add(key));
|
2007
2009
|
}
|
2008
2010
|
});
|
2009
2011
|
// Remove any named parameters that are already provided.
|
2010
|
-
signatureInfo.callNode.
|
2011
|
-
if (arg.name) {
|
2012
|
-
argNameSet.delete(arg.name.value);
|
2012
|
+
signatureInfo.callNode.d.args.forEach((arg) => {
|
2013
|
+
if (arg.d.name) {
|
2014
|
+
argNameSet.delete(arg.d.name.d.value);
|
2013
2015
|
}
|
2014
2016
|
});
|
2015
2017
|
// Add the remaining unique parameter names to the completion list.
|
@@ -2058,7 +2060,7 @@ class CompletionProvider {
|
|
2058
2060
|
if (curNode.nodeType === 10 /* ParseNodeType.Class */) {
|
2059
2061
|
const classType = this.evaluator.getTypeOfClass(curNode);
|
2060
2062
|
if (classType && (0, types_1.isInstantiableClass)(classType.classType)) {
|
2061
|
-
classType.classType.
|
2063
|
+
classType.classType.shared.mro.forEach((baseClass, index) => {
|
2062
2064
|
if ((0, types_1.isInstantiableClass)(baseClass)) {
|
2063
2065
|
this._addSymbolsForSymbolTable(types_1.ClassType.getSymbolTable(baseClass), (symbol) => {
|
2064
2066
|
if (!symbol.isClassMember()) {
|
@@ -2168,7 +2170,7 @@ class CompletionProvider {
|
|
2168
2170
|
}
|
2169
2171
|
switch (resolvedDeclaration.type) {
|
2170
2172
|
case 0 /* DeclarationType.Intrinsic */:
|
2171
|
-
return resolvedDeclaration.intrinsicType === '
|
2173
|
+
return resolvedDeclaration.intrinsicType === 'type[self]'
|
2172
2174
|
? vscode_languageserver_1.CompletionItemKind.Class
|
2173
2175
|
: vscode_languageserver_1.CompletionItemKind.Variable;
|
2174
2176
|
case 2 /* DeclarationType.Parameter */:
|
@@ -2218,19 +2220,19 @@ class CompletionProvider {
|
|
2218
2220
|
}
|
2219
2221
|
_getImportModuleCompletions(node) {
|
2220
2222
|
const moduleDescriptor = {
|
2221
|
-
leadingDots: node.leadingDots,
|
2222
|
-
hasTrailingDot: node.hasTrailingDot || false,
|
2223
|
-
nameParts: node.nameParts.map((part) => part.value),
|
2223
|
+
leadingDots: node.d.leadingDots,
|
2224
|
+
hasTrailingDot: node.d.hasTrailingDot || false,
|
2225
|
+
nameParts: node.d.nameParts.map((part) => part.d.value),
|
2224
2226
|
importedSymbols: new Set(),
|
2225
2227
|
};
|
2226
2228
|
const completions = this.importResolver.getCompletionSuggestions(this.fileUri, this.execEnv, moduleDescriptor);
|
2227
2229
|
const completionMap = new CompletionMap();
|
2228
2230
|
// If we're in the middle of a "from X import Y" statement, offer
|
2229
2231
|
// the "import" keyword as a completion.
|
2230
|
-
if (!node.hasTrailingDot &&
|
2232
|
+
if (!node.d.hasTrailingDot &&
|
2231
2233
|
node.parent &&
|
2232
2234
|
node.parent.nodeType === 25 /* ParseNodeType.ImportFrom */ &&
|
2233
|
-
node.parent.
|
2235
|
+
node.parent.d.missingImport) {
|
2234
2236
|
const keyword = 'import';
|
2235
2237
|
const completionItem = vscode_languageserver_1.CompletionItem.create(keyword);
|
2236
2238
|
completionItem.kind = vscode_languageserver_1.CompletionItemKind.Keyword;
|
@@ -2248,7 +2250,7 @@ class CompletionProvider {
|
|
2248
2250
|
_isPossiblePropertyDeclaration(decl) {
|
2249
2251
|
// Do cheap check using only nodes that will cover 99.9% cases
|
2250
2252
|
// before doing more expensive type evaluation.
|
2251
|
-
return decl.isMethod && decl.node.decorators.length > 0;
|
2253
|
+
return decl.isMethod && decl.node.d.decorators.length > 0;
|
2252
2254
|
}
|
2253
2255
|
_isEnumMember(containingType, name) {
|
2254
2256
|
if (!containingType || !types_1.ClassType.isEnumClass(containingType)) {
|
@@ -2258,7 +2260,7 @@ class CompletionProvider {
|
|
2258
2260
|
return (symbolType &&
|
2259
2261
|
(0, types_1.isClassInstance)(symbolType) &&
|
2260
2262
|
types_1.ClassType.isSameGenericClass(symbolType, containingType) &&
|
2261
|
-
symbolType.literalValue instanceof types_1.EnumLiteral);
|
2263
|
+
symbolType.priv.literalValue instanceof types_1.EnumLiteral);
|
2262
2264
|
}
|
2263
2265
|
}
|
2264
2266
|
exports.CompletionProvider = CompletionProvider;
|