@zzzen/pyright-internal 1.2.0-dev.20240707 → 1.2.0-dev.20240721
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 +506 -512
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +672 -655
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +5 -3
- package/dist/analyzer/codeFlowEngine.js +112 -103
- 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.js +70 -66
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.d.ts +1 -2
- package/dist/analyzer/constructorTransform.js +26 -27
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +2 -2
- package/dist/analyzer/constructors.js +95 -190
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +110 -179
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +14 -15
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +78 -79
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.js +70 -56
- 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.js +194 -145
- 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 +30 -47
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +294 -272
- 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 +178 -145
- 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 +82 -147
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +29 -25
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/sourceFile.js +3 -3
- 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 +15 -3
- 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 +2443 -2350
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +13 -9
- package/dist/analyzer/typeEvaluatorTypes.js +7 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +212 -215
- 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 +30 -15
- package/dist/analyzer/typeUtils.js +534 -436
- 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 +97 -199
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +152 -106
- package/dist/analyzer/types.js +695 -496
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +34 -34
- package/dist/commands/dumpFileDebugInfoCommand.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.js +153 -151
- 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 +36 -27
- 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.d.ts +10 -4
- package/dist/languageService/referencesProvider.js +30 -18
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.js +21 -4
- package/dist/languageService/renameProvider.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 +4 -3
- package/dist/localization/localize.js +2 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +0 -1
- package/dist/localization/package.nls.de.json +0 -1
- package/dist/localization/package.nls.en-us.json +2 -1
- package/dist/localization/package.nls.es.json +0 -1
- package/dist/localization/package.nls.fr.json +0 -1
- package/dist/localization/package.nls.it.json +0 -1
- package/dist/localization/package.nls.ja.json +0 -1
- package/dist/localization/package.nls.ko.json +0 -1
- package/dist/localization/package.nls.pl.json +0 -1
- package/dist/localization/package.nls.pt-br.json +0 -1
- package/dist/localization/package.nls.qps-ploc.json +0 -1
- package/dist/localization/package.nls.ru.json +0 -1
- package/dist/localization/package.nls.tr.json +0 -1
- package/dist/localization/package.nls.zh-cn.json +0 -1
- package/dist/localization/package.nls.zh-tw.json +0 -1
- package/dist/parser/parseNodes.d.ts +471 -402
- package/dist/parser/parseNodes.js +629 -356
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -0
- package/dist/parser/parser.js +345 -300
- package/dist/parser/parser.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/rename.args.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/rename.args.fourslash.js +71 -0
- package/dist/tests/fourslash/rename.args.fourslash.js.map +1 -0
- 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/typeEvaluator1.test.js +17 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -3
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +10 -6
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +6 -2
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +7 -3
- 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
@@ -31,8 +31,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
31
31
|
return result;
|
32
32
|
};
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
34
|
-
exports.
|
35
|
-
exports.isSimpleDefault = exports.checkDecorator = exports.getTypeVarScopesForNode = exports.getScopeIdForNode = exports.getVariableDocStringNode = exports.operatorSupportsChaining = exports.isValidLocationForFutureImport = exports.isUnannotatedFunction = exports.isBlankLine = exports.getFullStatementRange = exports.getStringValueRange = exports.getStringNodeValueRange = exports.isLastNameOfDottedName = exports.isFirstNameOfDottedName = exports.getFirstNameOfDottedName = exports.getDottedName = exports.getDecoratorName = exports.getDottedNameWithGivenNodeAsLastName = exports.getFirstAncestorOrSelf = exports.getFirstAncestorOrSelfOfKind = exports.getAncestorsIncludingSelf = exports.isLastNameOfModuleName = exports.isFromImportAlias = exports.isFromImportName = exports.isFromImportModuleName = exports.isImportAlias = exports.isImportModuleName = exports.getTypeAnnotationForParameter = exports.isFunctionSuiteEmpty = exports.getFileInfoFromNode = exports.getModuleNode = exports.isWriteAccess = exports.printParseNodeType = exports.getCommentsAtTokenIndex = exports.findTokenAfter = exports.getIndexOfTokenOverlapping = exports.getTokenOverlapping = exports.getTokenAt = exports.getTokenAtIndex = exports.isWhitespace = exports.getTokenAtLeft = exports.getTokenIndexAtLeft = void 0;
|
34
|
+
exports.getEnclosingParameter = exports.CallNodeWalker = exports.NameNodeWalker = exports.isAssignmentToDefaultsFollowingNamedTuple = exports.isDocString = exports.getDocString = exports.isWithinAssertExpression = exports.isWithinLoop = exports.isWithinAnnotationComment = exports.isWithinTypeAnnotation = exports.isWithinDefaultParamInitializer = exports.isPartialMatchingExpression = exports.isMatchingExpression = exports.containsAwaitNode = exports.isSuiteEmpty = exports.isNodeContainedWithinNodeType = exports.getParentAnnotationNode = exports.getParentNodeOfType = exports.isNodeContainedWithin = exports.isRequiredAllowedForAssignmentTarget = exports.isClassVarAllowedForAssignmentTarget = exports.isFinalAllowedForAssignmentTarget = exports.getArgumentsByRuntimeOrder = exports.getTypeAnnotationNode = exports.getExecutionScopeNode = exports.getTypeVarScopeNode = exports.getEvaluationScopeNode = exports.getEvaluationNodeForAssignmentExpression = exports.getEnclosingSuiteOrModule = exports.getEnclosingClassOrFunctionSuite = exports.getEnclosingClassOrFunction = exports.getEnclosingLambda = exports.getEnclosingFunctionEvaluationScope = exports.getEnclosingFunction = exports.getEnclosingClassOrModule = exports.getEnclosingModule = exports.getEnclosingClass = exports.getEnclosingSuite = exports.getDecoratorForName = exports.getCallForName = exports.printOperator = exports.printExpression = exports.printArgument = exports.getTypeSourceId = exports.getClassFullName = exports.isCompliantWithNodeRangeRules = exports.findNodeByOffset = exports.findNodeByPosition = exports.getNodeDepth = exports.PrintExpressionFlags = void 0;
|
35
|
+
exports.isSimpleDefault = exports.checkDecorator = exports.getTypeVarScopesForNode = exports.getScopeIdForNode = exports.getVariableDocStringNode = exports.operatorSupportsChaining = exports.isValidLocationForFutureImport = exports.isUnannotatedFunction = exports.isBlankLine = exports.getFullStatementRange = exports.getStringValueRange = exports.getStringNodeValueRange = exports.isLastNameOfDottedName = exports.isFirstNameOfDottedName = exports.getFirstNameOfDottedName = exports.getDottedName = exports.getDecoratorName = exports.getDottedNameWithGivenNodeAsLastName = exports.getFirstAncestorOrSelf = exports.getFirstAncestorOrSelfOfKind = exports.getAncestorsIncludingSelf = exports.isLastNameOfModuleName = exports.isFromImportAlias = exports.isFromImportName = exports.isFromImportModuleName = exports.isImportAlias = exports.isImportModuleName = exports.getTypeAnnotationForParameter = exports.isFunctionSuiteEmpty = exports.getFileInfoFromNode = exports.getModuleNode = exports.isWriteAccess = exports.printParseNodeType = exports.getCommentsAtTokenIndex = exports.findTokenAfter = exports.getIndexOfTokenOverlapping = exports.getTokenOverlapping = exports.getTokenAt = exports.getTokenAtIndex = exports.isWhitespace = exports.getTokenAtLeft = exports.getTokenIndexAtLeft = exports.getCallNodeAndActiveParameterIndex = void 0;
|
36
36
|
const AnalyzerNodeInfo = __importStar(require("../analyzer/analyzerNodeInfo"));
|
37
37
|
const core_1 = require("../common/core");
|
38
38
|
const debug_1 = require("../common/debug");
|
@@ -114,8 +114,8 @@ function findNodeByOffset(node, offset) {
|
|
114
114
|
if (containingChild) {
|
115
115
|
// For augmented assignments, prefer the dest expression, which is a clone
|
116
116
|
// of the left expression but is used to hold the type of the operation result.
|
117
|
-
if (node.nodeType === 5 /* ParseNodeType.AugmentedAssignment */ && containingChild === node.
|
118
|
-
return node.
|
117
|
+
if (node.nodeType === 5 /* ParseNodeType.AugmentedAssignment */ && containingChild === node.d.leftExpr) {
|
118
|
+
return node.d.destExpr;
|
119
119
|
}
|
120
120
|
return containingChild;
|
121
121
|
}
|
@@ -128,7 +128,13 @@ function isCompliantWithNodeRangeRules(node) {
|
|
128
128
|
// 1. Children are all contained within the parent.
|
129
129
|
// 2. Children have non-overlapping ranges.
|
130
130
|
// 3. Children are listed in increasing order.
|
131
|
-
|
131
|
+
if (node.nodeType === 3 /* ParseNodeType.Assignment */ || node.nodeType === 48 /* ParseNodeType.StringList */) {
|
132
|
+
return false;
|
133
|
+
}
|
134
|
+
if (node.nodeType === 1 /* ParseNodeType.Argument */ && node.d.isNameSameAsValue) {
|
135
|
+
return false;
|
136
|
+
}
|
137
|
+
return true;
|
132
138
|
}
|
133
139
|
exports.isCompliantWithNodeRangeRules = isCompliantWithNodeRangeRules;
|
134
140
|
function getClassFullName(classNode, moduleName, className) {
|
@@ -138,7 +144,7 @@ function getClassFullName(classNode, moduleName, className) {
|
|
138
144
|
while (curNode) {
|
139
145
|
curNode = getEnclosingClass(curNode);
|
140
146
|
if (curNode) {
|
141
|
-
nameParts.push(curNode.name.value);
|
147
|
+
nameParts.push(curNode.d.name.d.value);
|
142
148
|
}
|
143
149
|
}
|
144
150
|
nameParts.push(moduleName);
|
@@ -155,74 +161,76 @@ function getTypeSourceId(node) {
|
|
155
161
|
exports.getTypeSourceId = getTypeSourceId;
|
156
162
|
function printArgument(node, flags) {
|
157
163
|
let argStr = '';
|
158
|
-
if (node.
|
164
|
+
if (node.d.argCategory === 1 /* ArgumentCategory.UnpackedList */) {
|
159
165
|
argStr = '*';
|
160
166
|
}
|
161
|
-
else if (node.
|
167
|
+
else if (node.d.argCategory === 2 /* ArgumentCategory.UnpackedDictionary */) {
|
162
168
|
argStr = '**';
|
163
169
|
}
|
164
|
-
if (node.name) {
|
165
|
-
argStr += node.name.value + '=';
|
170
|
+
if (node.d.name) {
|
171
|
+
argStr += node.d.name.d.value + '=';
|
172
|
+
}
|
173
|
+
if (!node.d.isNameSameAsValue) {
|
174
|
+
argStr += printExpression(node.d.valueExpr, flags);
|
166
175
|
}
|
167
|
-
argStr += printExpression(node.valueExpression, flags);
|
168
176
|
return argStr;
|
169
177
|
}
|
170
178
|
exports.printArgument = printArgument;
|
171
179
|
function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
172
180
|
switch (node.nodeType) {
|
173
181
|
case 38 /* ParseNodeType.Name */: {
|
174
|
-
return node.value;
|
182
|
+
return node.d.value;
|
175
183
|
}
|
176
184
|
case 35 /* ParseNodeType.MemberAccess */: {
|
177
|
-
return printExpression(node.
|
185
|
+
return printExpression(node.d.leftExpr, flags) + '.' + node.d.member.d.value;
|
178
186
|
}
|
179
187
|
case 9 /* ParseNodeType.Call */: {
|
180
|
-
let lhs = printExpression(node.
|
188
|
+
let lhs = printExpression(node.d.leftExpr, flags);
|
181
189
|
// Some left-hand expressions must be parenthesized.
|
182
|
-
if (node.
|
183
|
-
node.
|
184
|
-
node.
|
185
|
-
node.
|
190
|
+
if (node.d.leftExpr.nodeType !== 35 /* ParseNodeType.MemberAccess */ &&
|
191
|
+
node.d.leftExpr.nodeType !== 38 /* ParseNodeType.Name */ &&
|
192
|
+
node.d.leftExpr.nodeType !== 27 /* ParseNodeType.Index */ &&
|
193
|
+
node.d.leftExpr.nodeType !== 9 /* ParseNodeType.Call */) {
|
186
194
|
lhs = `(${lhs})`;
|
187
195
|
}
|
188
|
-
return lhs + '(' + node.
|
196
|
+
return lhs + '(' + node.d.args.map((arg) => printArgument(arg, flags)).join(', ') + ')';
|
189
197
|
}
|
190
198
|
case 27 /* ParseNodeType.Index */: {
|
191
|
-
return (printExpression(node.
|
199
|
+
return (printExpression(node.d.leftExpr, flags) +
|
192
200
|
'[' +
|
193
|
-
node.items.map((item) => printArgument(item, flags)).join(', ') +
|
194
|
-
(node.trailingComma ? ',' : '') +
|
201
|
+
node.d.items.map((item) => printArgument(item, flags)).join(', ') +
|
202
|
+
(node.d.trailingComma ? ',' : '') +
|
195
203
|
']');
|
196
204
|
}
|
197
205
|
case 55 /* ParseNodeType.UnaryOperation */: {
|
198
|
-
const exprStr = printOperator(node.operator) + printExpression(node.
|
199
|
-
return node.
|
206
|
+
const exprStr = printOperator(node.d.operator) + printExpression(node.d.expr, flags);
|
207
|
+
return node.d.hasParens ? `(${exprStr})` : exprStr;
|
200
208
|
}
|
201
209
|
case 7 /* ParseNodeType.BinaryOperation */: {
|
202
|
-
const exprStr = printExpression(node.
|
210
|
+
const exprStr = printExpression(node.d.leftExpr, flags) +
|
203
211
|
' ' +
|
204
|
-
printOperator(node.operator) +
|
212
|
+
printOperator(node.d.operator) +
|
205
213
|
' ' +
|
206
|
-
printExpression(node.
|
207
|
-
return node.
|
214
|
+
printExpression(node.d.rightExpr, flags);
|
215
|
+
return node.d.hasParens ? `(${exprStr})` : exprStr;
|
208
216
|
}
|
209
217
|
case 40 /* ParseNodeType.Number */: {
|
210
|
-
let value = node.value.toString();
|
218
|
+
let value = node.d.value.toString();
|
211
219
|
// If it's stored as a bigint, strip off the "n".
|
212
220
|
if (value.endsWith('n')) {
|
213
221
|
value = value.substring(0, value.length - 1);
|
214
222
|
}
|
215
|
-
if (node.isImaginary) {
|
223
|
+
if (node.d.isImaginary) {
|
216
224
|
value += 'j';
|
217
225
|
}
|
218
226
|
return value;
|
219
227
|
}
|
220
228
|
case 48 /* ParseNodeType.StringList */: {
|
221
|
-
if (flags & 1 /* PrintExpressionFlags.ForwardDeclarations */ && node.
|
222
|
-
return printExpression(node.
|
229
|
+
if (flags & 1 /* PrintExpressionFlags.ForwardDeclarations */ && node.d.annotation) {
|
230
|
+
return printExpression(node.d.annotation, flags);
|
223
231
|
}
|
224
232
|
else {
|
225
|
-
return node.strings
|
233
|
+
return node.d.strings
|
226
234
|
.map((str) => {
|
227
235
|
return printExpression(str, flags);
|
228
236
|
})
|
@@ -231,25 +239,25 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
231
239
|
}
|
232
240
|
case 49 /* ParseNodeType.String */: {
|
233
241
|
let exprString = '';
|
234
|
-
if (node.token.flags & 8 /* StringTokenFlags.Raw */) {
|
242
|
+
if (node.d.token.flags & 8 /* StringTokenFlags.Raw */) {
|
235
243
|
exprString += 'r';
|
236
244
|
}
|
237
|
-
if (node.token.flags & 16 /* StringTokenFlags.Unicode */) {
|
245
|
+
if (node.d.token.flags & 16 /* StringTokenFlags.Unicode */) {
|
238
246
|
exprString += 'u';
|
239
247
|
}
|
240
|
-
if (node.token.flags & 32 /* StringTokenFlags.Bytes */) {
|
248
|
+
if (node.d.token.flags & 32 /* StringTokenFlags.Bytes */) {
|
241
249
|
exprString += 'b';
|
242
250
|
}
|
243
|
-
if (node.token.flags & 64 /* StringTokenFlags.Format */) {
|
251
|
+
if (node.d.token.flags & 64 /* StringTokenFlags.Format */) {
|
244
252
|
exprString += 'f';
|
245
253
|
}
|
246
|
-
let escapedString = node.token.escapedValue;
|
254
|
+
let escapedString = node.d.token.escapedValue;
|
247
255
|
if ((flags & 2 /* PrintExpressionFlags.DoNotLimitStringLength */) === 0) {
|
248
256
|
const maxStringLength = 32;
|
249
257
|
escapedString = escapedString.slice(0, maxStringLength);
|
250
258
|
}
|
251
|
-
if (node.token.flags & 4 /* StringTokenFlags.Triplicate */) {
|
252
|
-
if (node.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
259
|
+
if (node.d.token.flags & 4 /* StringTokenFlags.Triplicate */) {
|
260
|
+
if (node.d.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
253
261
|
exprString += `'''${escapedString}'''`;
|
254
262
|
}
|
255
263
|
else {
|
@@ -257,7 +265,7 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
257
265
|
}
|
258
266
|
}
|
259
267
|
else {
|
260
|
-
if (node.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
268
|
+
if (node.d.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
261
269
|
exprString += `'${escapedString}'`;
|
262
270
|
}
|
263
271
|
else {
|
@@ -269,7 +277,7 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
269
277
|
case 30 /* ParseNodeType.FormatString */: {
|
270
278
|
let exprString = 'f';
|
271
279
|
let escapedString = '';
|
272
|
-
const itemsToPrint = [...node.middleTokens, ...node.
|
280
|
+
const itemsToPrint = [...node.d.middleTokens, ...node.d.fieldExprs].sort((a, b) => a.start - b.start);
|
273
281
|
while (itemsToPrint.length > 0) {
|
274
282
|
const itemToPrint = itemsToPrint.shift();
|
275
283
|
if ('nodeType' in itemToPrint) {
|
@@ -279,8 +287,8 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
279
287
|
escapedString += itemToPrint.escapedValue;
|
280
288
|
}
|
281
289
|
}
|
282
|
-
if (node.token.flags & 4 /* StringTokenFlags.Triplicate */) {
|
283
|
-
if (node.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
290
|
+
if (node.d.token.flags & 4 /* StringTokenFlags.Triplicate */) {
|
291
|
+
if (node.d.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
284
292
|
exprString += `'''${escapedString}'''`;
|
285
293
|
}
|
286
294
|
else {
|
@@ -288,7 +296,7 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
288
296
|
}
|
289
297
|
}
|
290
298
|
else {
|
291
|
-
if (node.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
299
|
+
if (node.d.token.flags & 1 /* StringTokenFlags.SingleQuote */) {
|
292
300
|
exprString += `'${escapedString}'`;
|
293
301
|
}
|
294
302
|
else {
|
@@ -298,43 +306,43 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
298
306
|
return exprString;
|
299
307
|
}
|
300
308
|
case 3 /* ParseNodeType.Assignment */: {
|
301
|
-
return printExpression(node.
|
309
|
+
return printExpression(node.d.leftExpr, flags) + ' = ' + printExpression(node.d.rightExpr, flags);
|
302
310
|
}
|
303
311
|
case 4 /* ParseNodeType.AssignmentExpression */: {
|
304
|
-
return printExpression(node.name, flags) + ' := ' + printExpression(node.
|
312
|
+
return printExpression(node.d.name, flags) + ' := ' + printExpression(node.d.rightExpr, flags);
|
305
313
|
}
|
306
314
|
case 54 /* ParseNodeType.TypeAnnotation */: {
|
307
|
-
return printExpression(node.
|
315
|
+
return printExpression(node.d.valueExpr, flags) + ': ' + printExpression(node.d.annotation, flags);
|
308
316
|
}
|
309
317
|
case 5 /* ParseNodeType.AugmentedAssignment */: {
|
310
|
-
return (printExpression(node.
|
318
|
+
return (printExpression(node.d.leftExpr, flags) +
|
311
319
|
' ' +
|
312
|
-
printOperator(node.operator) +
|
320
|
+
printOperator(node.d.operator) +
|
313
321
|
' ' +
|
314
|
-
printExpression(node.
|
322
|
+
printExpression(node.d.rightExpr, flags));
|
315
323
|
}
|
316
324
|
case 6 /* ParseNodeType.Await */: {
|
317
|
-
const exprStr = 'await ' + printExpression(node.
|
318
|
-
return node.
|
325
|
+
const exprStr = 'await ' + printExpression(node.d.expr, flags);
|
326
|
+
return node.d.hasParens ? `(${exprStr})` : exprStr;
|
319
327
|
}
|
320
328
|
case 51 /* ParseNodeType.Ternary */: {
|
321
|
-
return (printExpression(node.
|
329
|
+
return (printExpression(node.d.ifExpr, flags) +
|
322
330
|
' if ' +
|
323
|
-
printExpression(node.
|
331
|
+
printExpression(node.d.testExpr, flags) +
|
324
332
|
' else ' +
|
325
|
-
printExpression(node.
|
333
|
+
printExpression(node.d.elseExpr, flags));
|
326
334
|
}
|
327
335
|
case 34 /* ParseNodeType.List */: {
|
328
|
-
const expressions = node.
|
336
|
+
const expressions = node.d.items.map((expr) => {
|
329
337
|
return printExpression(expr, flags);
|
330
338
|
});
|
331
339
|
return `[${expressions.join(', ')}]`;
|
332
340
|
}
|
333
341
|
case 56 /* ParseNodeType.Unpack */: {
|
334
|
-
return '*' + printExpression(node.
|
342
|
+
return '*' + printExpression(node.d.expr, flags);
|
335
343
|
}
|
336
344
|
case 52 /* ParseNodeType.Tuple */: {
|
337
|
-
const expressions = node.
|
345
|
+
const expressions = node.d.items.map((expr) => {
|
338
346
|
return printExpression(expr, flags);
|
339
347
|
});
|
340
348
|
if (expressions.length === 1) {
|
@@ -343,57 +351,57 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
343
351
|
return `(${expressions.join(', ')})`;
|
344
352
|
}
|
345
353
|
case 60 /* ParseNodeType.Yield */: {
|
346
|
-
if (node.
|
347
|
-
return 'yield ' + printExpression(node.
|
354
|
+
if (node.d.expr) {
|
355
|
+
return 'yield ' + printExpression(node.d.expr, flags);
|
348
356
|
}
|
349
357
|
else {
|
350
358
|
return 'yield';
|
351
359
|
}
|
352
360
|
}
|
353
361
|
case 61 /* ParseNodeType.YieldFrom */: {
|
354
|
-
return 'yield from ' + printExpression(node.
|
362
|
+
return 'yield from ' + printExpression(node.d.expr, flags);
|
355
363
|
}
|
356
364
|
case 21 /* ParseNodeType.Ellipsis */: {
|
357
365
|
return '...';
|
358
366
|
}
|
359
367
|
case 11 /* ParseNodeType.Comprehension */: {
|
360
368
|
let listStr = '<ListExpression>';
|
361
|
-
if ((0, parseNodes_1.isExpressionNode)(node.
|
362
|
-
listStr = printExpression(node.
|
369
|
+
if ((0, parseNodes_1.isExpressionNode)(node.d.expr)) {
|
370
|
+
listStr = printExpression(node.d.expr, flags);
|
363
371
|
}
|
364
|
-
else if (node.
|
365
|
-
const keyStr = printExpression(node.
|
366
|
-
const valueStr = printExpression(node.
|
372
|
+
else if (node.d.expr.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */) {
|
373
|
+
const keyStr = printExpression(node.d.expr.d.keyExpr, flags);
|
374
|
+
const valueStr = printExpression(node.d.expr.d.valueExpr, flags);
|
367
375
|
listStr = `${keyStr}: ${valueStr}`;
|
368
376
|
}
|
369
377
|
listStr =
|
370
378
|
listStr +
|
371
379
|
' ' +
|
372
|
-
node.forIfNodes
|
380
|
+
node.d.forIfNodes
|
373
381
|
.map((expr) => {
|
374
382
|
if (expr.nodeType === 12 /* ParseNodeType.ComprehensionFor */) {
|
375
|
-
return (`${expr.isAsync ? 'async ' : ''}for ` +
|
376
|
-
printExpression(expr.
|
377
|
-
` in ${printExpression(expr.
|
383
|
+
return (`${expr.d.isAsync ? 'async ' : ''}for ` +
|
384
|
+
printExpression(expr.d.targetExpr, flags) +
|
385
|
+
` in ${printExpression(expr.d.iterableExpr, flags)}`);
|
378
386
|
}
|
379
387
|
else {
|
380
|
-
return `if ${printExpression(expr.
|
388
|
+
return `if ${printExpression(expr.d.testExpr, flags)}`;
|
381
389
|
}
|
382
390
|
})
|
383
391
|
.join(' ');
|
384
|
-
return node.
|
392
|
+
return node.d.hasParens ? `(${listStr})` : listStr;
|
385
393
|
}
|
386
394
|
case 46 /* ParseNodeType.Slice */: {
|
387
395
|
let result = '';
|
388
|
-
if (node.startValue || node.endValue || node.stepValue) {
|
389
|
-
if (node.startValue) {
|
390
|
-
result += printExpression(node.startValue, flags);
|
396
|
+
if (node.d.startValue || node.d.endValue || node.d.stepValue) {
|
397
|
+
if (node.d.startValue) {
|
398
|
+
result += printExpression(node.d.startValue, flags);
|
391
399
|
}
|
392
|
-
if (node.endValue) {
|
393
|
-
result += ': ' + printExpression(node.endValue, flags);
|
400
|
+
if (node.d.endValue) {
|
401
|
+
result += ': ' + printExpression(node.d.endValue, flags);
|
394
402
|
}
|
395
|
-
if (node.stepValue) {
|
396
|
-
result += ': ' + printExpression(node.stepValue, flags);
|
403
|
+
if (node.d.stepValue) {
|
404
|
+
result += ': ' + printExpression(node.d.stepValue, flags);
|
397
405
|
}
|
398
406
|
}
|
399
407
|
else {
|
@@ -403,53 +411,52 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
403
411
|
}
|
404
412
|
case 33 /* ParseNodeType.Lambda */: {
|
405
413
|
return ('lambda ' +
|
406
|
-
node.
|
414
|
+
node.d.params
|
407
415
|
.map((param) => {
|
408
416
|
let paramStr = '';
|
409
|
-
if (param.category === 1 /* ParameterCategory.ArgsList */) {
|
417
|
+
if (param.d.category === 1 /* ParameterCategory.ArgsList */) {
|
410
418
|
paramStr += '*';
|
411
419
|
}
|
412
|
-
else if (param.category === 2 /* ParameterCategory.KwargsDict */) {
|
420
|
+
else if (param.d.category === 2 /* ParameterCategory.KwargsDict */) {
|
413
421
|
paramStr += '**';
|
414
422
|
}
|
415
|
-
if (param.name) {
|
416
|
-
paramStr += param.name.value;
|
423
|
+
if (param.d.name) {
|
424
|
+
paramStr += param.d.name.d.value;
|
417
425
|
}
|
418
|
-
else if (param.category === 0 /* ParameterCategory.Simple */) {
|
426
|
+
else if (param.d.category === 0 /* ParameterCategory.Simple */) {
|
419
427
|
paramStr += '/';
|
420
428
|
}
|
421
|
-
if (param.defaultValue) {
|
422
|
-
paramStr += ' = ' + printExpression(param.defaultValue, flags);
|
429
|
+
if (param.d.defaultValue) {
|
430
|
+
paramStr += ' = ' + printExpression(param.d.defaultValue, flags);
|
423
431
|
}
|
424
432
|
return paramStr;
|
425
433
|
})
|
426
434
|
.join(', ') +
|
427
435
|
': ' +
|
428
|
-
printExpression(node.
|
436
|
+
printExpression(node.d.expr, flags));
|
429
437
|
}
|
430
438
|
case 14 /* ParseNodeType.Constant */: {
|
431
|
-
if (node.constType === 33 /* KeywordType.True */) {
|
439
|
+
if (node.d.constType === 33 /* KeywordType.True */) {
|
432
440
|
return 'True';
|
433
441
|
}
|
434
|
-
else if (node.constType === 15 /* KeywordType.False */) {
|
442
|
+
else if (node.d.constType === 15 /* KeywordType.False */) {
|
435
443
|
return 'False';
|
436
444
|
}
|
437
|
-
else if (node.constType === 9 /* KeywordType.Debug */) {
|
445
|
+
else if (node.d.constType === 9 /* KeywordType.Debug */) {
|
438
446
|
return '__debug__';
|
439
447
|
}
|
440
|
-
else if (node.constType === 26 /* KeywordType.None */) {
|
448
|
+
else if (node.d.constType === 26 /* KeywordType.None */) {
|
441
449
|
return 'None';
|
442
450
|
}
|
443
451
|
break;
|
444
452
|
}
|
445
453
|
case 18 /* ParseNodeType.Dictionary */: {
|
446
|
-
const dictContents = `${node.
|
454
|
+
const dictContents = `${node.d.items.map((entry) => {
|
447
455
|
if (entry.nodeType === 20 /* ParseNodeType.DictionaryKeyEntry */) {
|
448
|
-
return (`${printExpression(entry.
|
449
|
-
`${printExpression(entry.valueExpression, flags)}`);
|
456
|
+
return (`${printExpression(entry.d.keyExpr, flags)}: ` + `${printExpression(entry.d.valueExpr, flags)}`);
|
450
457
|
}
|
451
458
|
else if (entry.nodeType === 19 /* ParseNodeType.DictionaryExpandEntry */) {
|
452
|
-
return `**${printExpression(entry.
|
459
|
+
return `**${printExpression(entry.d.expr, flags)}`;
|
453
460
|
}
|
454
461
|
else {
|
455
462
|
return printExpression(entry, flags);
|
@@ -461,7 +468,7 @@ function printExpression(node, flags = 0 /* PrintExpressionFlags.None */) {
|
|
461
468
|
return '{}';
|
462
469
|
}
|
463
470
|
case 45 /* ParseNodeType.Set */: {
|
464
|
-
return node.
|
471
|
+
return node.d.items.map((entry) => printExpression(entry, flags)).join(', ');
|
465
472
|
}
|
466
473
|
case 0 /* ParseNodeType.Error */: {
|
467
474
|
return '<Parse Error>';
|
@@ -528,13 +535,13 @@ exports.printOperator = printOperator;
|
|
528
535
|
// name in the LHS of a call expression, returns the call node.
|
529
536
|
function getCallForName(node) {
|
530
537
|
var _a, _b, _c;
|
531
|
-
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 9 /* ParseNodeType.Call */ && node.parent.
|
538
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 9 /* ParseNodeType.Call */ && node.parent.d.leftExpr === node) {
|
532
539
|
return node.parent;
|
533
540
|
}
|
534
541
|
if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 35 /* ParseNodeType.MemberAccess */ &&
|
535
|
-
node.parent.
|
542
|
+
node.parent.d.member === node &&
|
536
543
|
((_c = node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 9 /* ParseNodeType.Call */ &&
|
537
|
-
node.parent.parent.
|
544
|
+
node.parent.parent.d.leftExpr === node.parent) {
|
538
545
|
return node.parent.parent;
|
539
546
|
}
|
540
547
|
return undefined;
|
@@ -542,13 +549,13 @@ function getCallForName(node) {
|
|
542
549
|
exports.getCallForName = getCallForName;
|
543
550
|
function getDecoratorForName(node) {
|
544
551
|
var _a, _b, _c;
|
545
|
-
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 16 /* ParseNodeType.Decorator */ && node.parent.
|
552
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 16 /* ParseNodeType.Decorator */ && node.parent.d.expr === node) {
|
546
553
|
return node.parent;
|
547
554
|
}
|
548
555
|
if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 35 /* ParseNodeType.MemberAccess */ &&
|
549
|
-
node.parent.
|
556
|
+
node.parent.d.member === node &&
|
550
557
|
((_c = node.parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 16 /* ParseNodeType.Decorator */ &&
|
551
|
-
node.parent.parent.
|
558
|
+
node.parent.parent.d.expr === node.parent) {
|
552
559
|
return node.parent.parent;
|
553
560
|
}
|
554
561
|
return undefined;
|
@@ -621,7 +628,7 @@ function getEnclosingFunction(node) {
|
|
621
628
|
while (curNode) {
|
622
629
|
if (curNode.nodeType === 31 /* ParseNodeType.Function */) {
|
623
630
|
// Don't treat a decorator as being "enclosed" in the function.
|
624
|
-
if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
|
631
|
+
if (!curNode.d.decorators.some((decorator) => decorator === prevNode)) {
|
625
632
|
return curNode;
|
626
633
|
}
|
627
634
|
}
|
@@ -681,6 +688,21 @@ function getEnclosingClassOrFunction(node) {
|
|
681
688
|
return undefined;
|
682
689
|
}
|
683
690
|
exports.getEnclosingClassOrFunction = getEnclosingClassOrFunction;
|
691
|
+
function getEnclosingClassOrFunctionSuite(node) {
|
692
|
+
var _a, _b;
|
693
|
+
let curNode = node.parent;
|
694
|
+
while (curNode) {
|
695
|
+
if (curNode.nodeType === 50 /* ParseNodeType.Suite */) {
|
696
|
+
if (((_a = curNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 31 /* ParseNodeType.Function */ ||
|
697
|
+
((_b = curNode.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 10 /* ParseNodeType.Class */) {
|
698
|
+
return curNode;
|
699
|
+
}
|
700
|
+
}
|
701
|
+
curNode = curNode.parent;
|
702
|
+
}
|
703
|
+
return undefined;
|
704
|
+
}
|
705
|
+
exports.getEnclosingClassOrFunctionSuite = getEnclosingClassOrFunctionSuite;
|
684
706
|
function getEnclosingSuiteOrModule(node, stopAtFunction = false, stopAtLambda = true) {
|
685
707
|
let curNode = node.parent;
|
686
708
|
while (curNode) {
|
@@ -740,11 +762,11 @@ function getEvaluationScopeNode(node) {
|
|
740
762
|
let isParamDefaultNode = false;
|
741
763
|
while (curNode) {
|
742
764
|
if (curNode.nodeType === 41 /* ParseNodeType.Parameter */) {
|
743
|
-
if (prevNode === curNode.name) {
|
765
|
+
if (prevNode === curNode.d.name) {
|
744
766
|
// Note that we passed through a parameter name node.
|
745
767
|
isParamNameNode = true;
|
746
768
|
}
|
747
|
-
else if (prevNode === curNode.defaultValue) {
|
769
|
+
else if (prevNode === curNode.d.defaultValue) {
|
748
770
|
// Note that we passed through a parameter default value node.
|
749
771
|
isParamDefaultNode = true;
|
750
772
|
}
|
@@ -761,10 +783,10 @@ function getEvaluationScopeNode(node) {
|
|
761
783
|
break;
|
762
784
|
}
|
763
785
|
// Decorators are always evaluated outside of the function scope.
|
764
|
-
if (curNode.decorators.some((decorator) => decorator === prevNode)) {
|
786
|
+
if (curNode.d.decorators.some((decorator) => decorator === prevNode)) {
|
765
787
|
break;
|
766
788
|
}
|
767
|
-
if (curNode.
|
789
|
+
if (curNode.d.params.some((param) => param === prevNode)) {
|
768
790
|
// Default argument expressions are evaluated outside of the function scope.
|
769
791
|
if (isParamDefaultNode) {
|
770
792
|
break;
|
@@ -775,7 +797,7 @@ function getEvaluationScopeNode(node) {
|
|
775
797
|
}
|
776
798
|
}
|
777
799
|
}
|
778
|
-
if (prevNode === curNode.suite) {
|
800
|
+
if (prevNode === curNode.d.suite) {
|
779
801
|
if ((0, analyzerNodeInfo_1.getScope)(curNode) !== undefined) {
|
780
802
|
return { node: curNode };
|
781
803
|
}
|
@@ -783,8 +805,8 @@ function getEvaluationScopeNode(node) {
|
|
783
805
|
// All other nodes in the function are evaluated in the context
|
784
806
|
// of the type parameter scope if it's present. Otherwise,
|
785
807
|
// they are evaluated within the function's parent scope.
|
786
|
-
if (curNode.
|
787
|
-
const scopeNode = curNode.
|
808
|
+
if (curNode.d.typeParams) {
|
809
|
+
const scopeNode = curNode.d.typeParams;
|
788
810
|
if ((0, analyzerNodeInfo_1.getScope)(scopeNode) !== undefined) {
|
789
811
|
return { node: scopeNode, useProxyScope: true };
|
790
812
|
}
|
@@ -792,14 +814,14 @@ function getEvaluationScopeNode(node) {
|
|
792
814
|
break;
|
793
815
|
}
|
794
816
|
case 33 /* ParseNodeType.Lambda */: {
|
795
|
-
if (curNode.
|
817
|
+
if (curNode.d.params.some((param) => param === prevNode)) {
|
796
818
|
if (isParamNameNode) {
|
797
819
|
if ((0, analyzerNodeInfo_1.getScope)(curNode) !== undefined) {
|
798
820
|
return { node: curNode };
|
799
821
|
}
|
800
822
|
}
|
801
823
|
}
|
802
|
-
else if (!prevNode || prevNode === curNode.
|
824
|
+
else if (!prevNode || prevNode === curNode.d.expr) {
|
803
825
|
if ((0, analyzerNodeInfo_1.getScope)(curNode) !== undefined) {
|
804
826
|
return { node: curNode };
|
805
827
|
}
|
@@ -811,10 +833,10 @@ function getEvaluationScopeNode(node) {
|
|
811
833
|
break;
|
812
834
|
}
|
813
835
|
// Decorators are always evaluated outside of the class scope.
|
814
|
-
if (curNode.decorators.some((decorator) => decorator === prevNode)) {
|
836
|
+
if (curNode.d.decorators.some((decorator) => decorator === prevNode)) {
|
815
837
|
break;
|
816
838
|
}
|
817
|
-
if (prevNode === curNode.suite) {
|
839
|
+
if (prevNode === curNode.d.suite) {
|
818
840
|
if ((0, analyzerNodeInfo_1.getScope)(curNode) !== undefined) {
|
819
841
|
return { node: curNode };
|
820
842
|
}
|
@@ -822,8 +844,8 @@ function getEvaluationScopeNode(node) {
|
|
822
844
|
// All other nodes in the class are evaluated in the context
|
823
845
|
// of the type parameter scope if it's present. Otherwise,
|
824
846
|
// they are evaluated within the class' parent scope.
|
825
|
-
if (curNode.
|
826
|
-
const scopeNode = curNode.
|
847
|
+
if (curNode.d.typeParams) {
|
848
|
+
const scopeNode = curNode.d.typeParams;
|
827
849
|
if ((0, analyzerNodeInfo_1.getScope)(scopeNode) !== undefined) {
|
828
850
|
return { node: scopeNode, useProxyScope: true };
|
829
851
|
}
|
@@ -834,9 +856,9 @@ function getEvaluationScopeNode(node) {
|
|
834
856
|
if ((0, analyzerNodeInfo_1.getScope)(curNode) !== undefined) {
|
835
857
|
// The iterable expression of the first subnode of a list comprehension
|
836
858
|
// is evaluated within the scope of its parent.
|
837
|
-
const isFirstIterableExpr = prevNode === curNode.forIfNodes[0] &&
|
838
|
-
curNode.forIfNodes[0].nodeType === 12 /* ParseNodeType.ComprehensionFor */ &&
|
839
|
-
curNode.forIfNodes[0].
|
859
|
+
const isFirstIterableExpr = prevNode === curNode.d.forIfNodes[0] &&
|
860
|
+
curNode.d.forIfNodes[0].nodeType === 12 /* ParseNodeType.ComprehensionFor */ &&
|
861
|
+
curNode.d.forIfNodes[0].d.iterableExpr === prevPrevNode;
|
840
862
|
if (!isFirstIterableExpr) {
|
841
863
|
return { node: curNode };
|
842
864
|
}
|
@@ -844,8 +866,8 @@ function getEvaluationScopeNode(node) {
|
|
844
866
|
break;
|
845
867
|
}
|
846
868
|
case 77 /* ParseNodeType.TypeAlias */: {
|
847
|
-
if (prevNode === curNode.
|
848
|
-
const scopeNode = curNode.
|
869
|
+
if (prevNode === curNode.d.expr && curNode.d.typeParams) {
|
870
|
+
const scopeNode = curNode.d.typeParams;
|
849
871
|
if ((0, analyzerNodeInfo_1.getScope)(scopeNode) !== undefined) {
|
850
872
|
return { node: scopeNode };
|
851
873
|
}
|
@@ -875,13 +897,13 @@ function getTypeVarScopeNode(node) {
|
|
875
897
|
while (curNode) {
|
876
898
|
switch (curNode.nodeType) {
|
877
899
|
case 31 /* ParseNodeType.Function */: {
|
878
|
-
if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
|
900
|
+
if (!curNode.d.decorators.some((decorator) => decorator === prevNode)) {
|
879
901
|
return curNode;
|
880
902
|
}
|
881
903
|
break;
|
882
904
|
}
|
883
905
|
case 10 /* ParseNodeType.Class */: {
|
884
|
-
if (!curNode.decorators.some((decorator) => decorator === prevNode)) {
|
906
|
+
if (!curNode.d.decorators.some((decorator) => decorator === prevNode)) {
|
885
907
|
return curNode;
|
886
908
|
}
|
887
909
|
break;
|
@@ -917,7 +939,7 @@ function getTypeAnnotationNode(node) {
|
|
917
939
|
let curNode = node.parent;
|
918
940
|
while (curNode) {
|
919
941
|
if (curNode.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
|
920
|
-
if (curNode.
|
942
|
+
if (curNode.d.annotation === prevNode) {
|
921
943
|
return curNode;
|
922
944
|
}
|
923
945
|
break;
|
@@ -932,8 +954,8 @@ exports.getTypeAnnotationNode = getTypeAnnotationNode;
|
|
932
954
|
// left-to-right order. There is one exception, however, when an unpacked
|
933
955
|
// iterable is used after a keyword argument.
|
934
956
|
function getArgumentsByRuntimeOrder(node) {
|
935
|
-
const positionalArgs = node.
|
936
|
-
const keywordArgs = node.
|
957
|
+
const positionalArgs = node.d.args.filter((arg) => !arg.d.name && arg.d.argCategory !== 2 /* ArgumentCategory.UnpackedDictionary */);
|
958
|
+
const keywordArgs = node.d.args.filter((arg) => !!arg.d.name || arg.d.argCategory === 2 /* ArgumentCategory.UnpackedDictionary */);
|
937
959
|
return positionalArgs.concat(keywordArgs);
|
938
960
|
}
|
939
961
|
exports.getArgumentsByRuntimeOrder = getArgumentsByRuntimeOrder;
|
@@ -948,7 +970,7 @@ function isFinalAllowedForAssignmentTarget(targetNode) {
|
|
948
970
|
// Member access expressions like "self.x" are permitted only
|
949
971
|
// within __init__ methods.
|
950
972
|
if (targetNode.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
951
|
-
if (targetNode.
|
973
|
+
if (targetNode.d.leftExpr.nodeType !== 38 /* ParseNodeType.Name */) {
|
952
974
|
return false;
|
953
975
|
}
|
954
976
|
const classNode = getEnclosingClass(targetNode);
|
@@ -959,7 +981,7 @@ function isFinalAllowedForAssignmentTarget(targetNode) {
|
|
959
981
|
if (!methodNode) {
|
960
982
|
return false;
|
961
983
|
}
|
962
|
-
if (methodNode.name.value !== '__init__') {
|
984
|
+
if (methodNode.d.name.d.value !== '__init__') {
|
963
985
|
return false;
|
964
986
|
}
|
965
987
|
return true;
|
@@ -1012,31 +1034,31 @@ function getParentAnnotationNode(node) {
|
|
1012
1034
|
let prevNode;
|
1013
1035
|
while (curNode) {
|
1014
1036
|
if (curNode.nodeType === 31 /* ParseNodeType.Function */) {
|
1015
|
-
if (prevNode === curNode.
|
1037
|
+
if (prevNode === curNode.d.returnAnnotation) {
|
1016
1038
|
return prevNode;
|
1017
1039
|
}
|
1018
1040
|
return undefined;
|
1019
1041
|
}
|
1020
1042
|
if (curNode.nodeType === 41 /* ParseNodeType.Parameter */) {
|
1021
|
-
if (prevNode === curNode.
|
1043
|
+
if (prevNode === curNode.d.annotation || prevNode === curNode.d.annotationComment) {
|
1022
1044
|
return prevNode;
|
1023
1045
|
}
|
1024
1046
|
return undefined;
|
1025
1047
|
}
|
1026
1048
|
if (curNode.nodeType === 3 /* ParseNodeType.Assignment */) {
|
1027
|
-
if (prevNode === curNode.
|
1049
|
+
if (prevNode === curNode.d.annotationComment) {
|
1028
1050
|
return prevNode;
|
1029
1051
|
}
|
1030
1052
|
return undefined;
|
1031
1053
|
}
|
1032
1054
|
if (curNode.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
|
1033
|
-
if (prevNode === curNode.
|
1055
|
+
if (prevNode === curNode.d.annotation) {
|
1034
1056
|
return prevNode;
|
1035
1057
|
}
|
1036
1058
|
return undefined;
|
1037
1059
|
}
|
1038
1060
|
if (curNode.nodeType === 62 /* ParseNodeType.FunctionAnnotation */) {
|
1039
|
-
if (prevNode === curNode.
|
1061
|
+
if (prevNode === curNode.d.returnAnnotation || curNode.d.paramAnnotations.some((p) => p === prevNode)) {
|
1040
1062
|
(0, debug_1.assert)(!prevNode || (0, parseNodes_1.isExpressionNode)(prevNode));
|
1041
1063
|
return prevNode;
|
1042
1064
|
}
|
@@ -1054,9 +1076,9 @@ function isNodeContainedWithinNodeType(node, containerType) {
|
|
1054
1076
|
exports.isNodeContainedWithinNodeType = isNodeContainedWithinNodeType;
|
1055
1077
|
function isSuiteEmpty(node) {
|
1056
1078
|
let sawEllipsis = false;
|
1057
|
-
for (const statement of node.statements) {
|
1079
|
+
for (const statement of node.d.statements) {
|
1058
1080
|
if (statement.nodeType === 47 /* ParseNodeType.StatementList */) {
|
1059
|
-
for (const substatement of statement.statements) {
|
1081
|
+
for (const substatement of statement.d.statements) {
|
1060
1082
|
if (substatement.nodeType === 21 /* ParseNodeType.Ellipsis */) {
|
1061
1083
|
// Allow an ellipsis
|
1062
1084
|
sawEllipsis = true;
|
@@ -1092,60 +1114,60 @@ exports.containsAwaitNode = containsAwaitNode;
|
|
1092
1114
|
function isMatchingExpression(reference, expression) {
|
1093
1115
|
if (reference.nodeType === 38 /* ParseNodeType.Name */) {
|
1094
1116
|
if (expression.nodeType === 38 /* ParseNodeType.Name */) {
|
1095
|
-
return reference.value === expression.value;
|
1117
|
+
return reference.d.value === expression.d.value;
|
1096
1118
|
}
|
1097
1119
|
else if (expression.nodeType === 4 /* ParseNodeType.AssignmentExpression */) {
|
1098
|
-
return reference.value === expression.name.value;
|
1120
|
+
return reference.d.value === expression.d.name.d.value;
|
1099
1121
|
}
|
1100
1122
|
return false;
|
1101
1123
|
}
|
1102
1124
|
else if (reference.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
1103
1125
|
expression.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
1104
|
-
return (isMatchingExpression(reference.
|
1105
|
-
reference.
|
1126
|
+
return (isMatchingExpression(reference.d.leftExpr, expression.d.leftExpr) &&
|
1127
|
+
reference.d.member.d.value === expression.d.member.d.value);
|
1106
1128
|
}
|
1107
1129
|
else if (reference.nodeType === 27 /* ParseNodeType.Index */ && expression.nodeType === 27 /* ParseNodeType.Index */) {
|
1108
|
-
if (!isMatchingExpression(reference.
|
1130
|
+
if (!isMatchingExpression(reference.d.leftExpr, expression.d.leftExpr)) {
|
1109
1131
|
return false;
|
1110
1132
|
}
|
1111
|
-
if (expression.items.length !== 1 ||
|
1112
|
-
expression.trailingComma ||
|
1113
|
-
expression.items[0].name ||
|
1114
|
-
expression.items[0].
|
1133
|
+
if (expression.d.items.length !== 1 ||
|
1134
|
+
expression.d.trailingComma ||
|
1135
|
+
expression.d.items[0].d.name ||
|
1136
|
+
expression.d.items[0].d.argCategory !== 0 /* ArgumentCategory.Simple */) {
|
1115
1137
|
return false;
|
1116
1138
|
}
|
1117
|
-
const expr = reference.items[0].
|
1139
|
+
const expr = reference.d.items[0].d.valueExpr;
|
1118
1140
|
if (expr.nodeType === 40 /* ParseNodeType.Number */) {
|
1119
|
-
const subscriptNode = expression.items[0].
|
1141
|
+
const subscriptNode = expression.d.items[0].d.valueExpr;
|
1120
1142
|
if (subscriptNode.nodeType !== 40 /* ParseNodeType.Number */ ||
|
1121
|
-
subscriptNode.isImaginary ||
|
1122
|
-
!subscriptNode.isInteger) {
|
1143
|
+
subscriptNode.d.isImaginary ||
|
1144
|
+
!subscriptNode.d.isInteger) {
|
1123
1145
|
return false;
|
1124
1146
|
}
|
1125
|
-
return expr.value === subscriptNode.value;
|
1147
|
+
return expr.d.value === subscriptNode.d.value;
|
1126
1148
|
}
|
1127
1149
|
if (expr.nodeType === 55 /* ParseNodeType.UnaryOperation */ &&
|
1128
|
-
expr.operator === 33 /* OperatorType.Subtract */ &&
|
1129
|
-
expr.
|
1130
|
-
const subscriptNode = expression.items[0].
|
1150
|
+
expr.d.operator === 33 /* OperatorType.Subtract */ &&
|
1151
|
+
expr.d.expr.nodeType === 40 /* ParseNodeType.Number */) {
|
1152
|
+
const subscriptNode = expression.d.items[0].d.valueExpr;
|
1131
1153
|
if (subscriptNode.nodeType !== 55 /* ParseNodeType.UnaryOperation */ ||
|
1132
|
-
subscriptNode.operator !== 33 /* OperatorType.Subtract */ ||
|
1133
|
-
subscriptNode.
|
1134
|
-
subscriptNode.
|
1135
|
-
!subscriptNode.
|
1154
|
+
subscriptNode.d.operator !== 33 /* OperatorType.Subtract */ ||
|
1155
|
+
subscriptNode.d.expr.nodeType !== 40 /* ParseNodeType.Number */ ||
|
1156
|
+
subscriptNode.d.expr.d.isImaginary ||
|
1157
|
+
!subscriptNode.d.expr.d.isInteger) {
|
1136
1158
|
return false;
|
1137
1159
|
}
|
1138
|
-
return expr.
|
1160
|
+
return expr.d.expr.d.value === subscriptNode.d.expr.d.value;
|
1139
1161
|
}
|
1140
1162
|
if (expr.nodeType === 48 /* ParseNodeType.StringList */) {
|
1141
1163
|
const referenceStringListNode = expr;
|
1142
|
-
const subscriptNode = expression.items[0].
|
1143
|
-
if (referenceStringListNode.strings.length === 1 &&
|
1144
|
-
referenceStringListNode.strings[0].nodeType === 49 /* ParseNodeType.String */ &&
|
1164
|
+
const subscriptNode = expression.d.items[0].d.valueExpr;
|
1165
|
+
if (referenceStringListNode.d.strings.length === 1 &&
|
1166
|
+
referenceStringListNode.d.strings[0].nodeType === 49 /* ParseNodeType.String */ &&
|
1145
1167
|
subscriptNode.nodeType === 48 /* ParseNodeType.StringList */ &&
|
1146
|
-
subscriptNode.strings.length === 1 &&
|
1147
|
-
subscriptNode.strings[0].nodeType === 49 /* ParseNodeType.String */) {
|
1148
|
-
return referenceStringListNode.strings[0].value === subscriptNode.strings[0].value;
|
1168
|
+
subscriptNode.d.strings.length === 1 &&
|
1169
|
+
subscriptNode.d.strings[0].nodeType === 49 /* ParseNodeType.String */) {
|
1170
|
+
return referenceStringListNode.d.strings[0].d.value === subscriptNode.d.strings[0].d.value;
|
1149
1171
|
}
|
1150
1172
|
}
|
1151
1173
|
return false;
|
@@ -1155,12 +1177,12 @@ function isMatchingExpression(reference, expression) {
|
|
1155
1177
|
exports.isMatchingExpression = isMatchingExpression;
|
1156
1178
|
function isPartialMatchingExpression(reference, expression) {
|
1157
1179
|
if (reference.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
1158
|
-
return (isMatchingExpression(reference.
|
1159
|
-
isPartialMatchingExpression(reference.
|
1180
|
+
return (isMatchingExpression(reference.d.leftExpr, expression) ||
|
1181
|
+
isPartialMatchingExpression(reference.d.leftExpr, expression));
|
1160
1182
|
}
|
1161
1183
|
else if (reference.nodeType === 27 /* ParseNodeType.Index */) {
|
1162
|
-
return (isMatchingExpression(reference.
|
1163
|
-
isPartialMatchingExpression(reference.
|
1184
|
+
return (isMatchingExpression(reference.d.leftExpr, expression) ||
|
1185
|
+
isPartialMatchingExpression(reference.d.leftExpr, expression));
|
1164
1186
|
}
|
1165
1187
|
return false;
|
1166
1188
|
}
|
@@ -1169,7 +1191,7 @@ function isWithinDefaultParamInitializer(node) {
|
|
1169
1191
|
let curNode = node;
|
1170
1192
|
let prevNode;
|
1171
1193
|
while (curNode) {
|
1172
|
-
if (curNode.nodeType === 41 /* ParseNodeType.Parameter */ && prevNode === curNode.defaultValue) {
|
1194
|
+
if (curNode.nodeType === 41 /* ParseNodeType.Parameter */ && prevNode === curNode.d.defaultValue) {
|
1173
1195
|
return true;
|
1174
1196
|
}
|
1175
1197
|
if (curNode.nodeType === 33 /* ParseNodeType.Lambda */ ||
|
@@ -1190,26 +1212,26 @@ function isWithinTypeAnnotation(node, requireQuotedAnnotation) {
|
|
1190
1212
|
let isQuoted = false;
|
1191
1213
|
while (curNode) {
|
1192
1214
|
if (curNode.nodeType === 41 /* ParseNodeType.Parameter */ &&
|
1193
|
-
(prevNode === curNode.
|
1215
|
+
(prevNode === curNode.d.annotation || prevNode === curNode.d.annotationComment)) {
|
1194
1216
|
return isQuoted || !requireQuotedAnnotation;
|
1195
1217
|
}
|
1196
|
-
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.
|
1218
|
+
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.d.returnAnnotation) {
|
1197
1219
|
return isQuoted || !requireQuotedAnnotation;
|
1198
1220
|
}
|
1199
|
-
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.
|
1221
|
+
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.d.funcAnnotationComment) {
|
1200
1222
|
// Type comments are always considered forward declarations even though
|
1201
1223
|
// they're not "quoted".
|
1202
1224
|
return true;
|
1203
1225
|
}
|
1204
|
-
if (curNode.nodeType === 54 /* ParseNodeType.TypeAnnotation */ && prevNode === curNode.
|
1226
|
+
if (curNode.nodeType === 54 /* ParseNodeType.TypeAnnotation */ && prevNode === curNode.d.annotation) {
|
1205
1227
|
return isQuoted || !requireQuotedAnnotation;
|
1206
1228
|
}
|
1207
|
-
if (curNode.nodeType === 3 /* ParseNodeType.Assignment */ && prevNode === curNode.
|
1229
|
+
if (curNode.nodeType === 3 /* ParseNodeType.Assignment */ && prevNode === curNode.d.annotationComment) {
|
1208
1230
|
// Type comments are always considered forward declarations even though
|
1209
1231
|
// they're not "quoted".
|
1210
1232
|
return true;
|
1211
1233
|
}
|
1212
|
-
if (curNode.nodeType === 48 /* ParseNodeType.StringList */ && prevNode === curNode.
|
1234
|
+
if (curNode.nodeType === 48 /* ParseNodeType.StringList */ && prevNode === curNode.d.annotation) {
|
1213
1235
|
isQuoted = true;
|
1214
1236
|
}
|
1215
1237
|
if (curNode.nodeType === 33 /* ParseNodeType.Lambda */ ||
|
@@ -1228,12 +1250,12 @@ function isWithinAnnotationComment(node) {
|
|
1228
1250
|
let curNode = node;
|
1229
1251
|
let prevNode;
|
1230
1252
|
while (curNode) {
|
1231
|
-
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.
|
1253
|
+
if (curNode.nodeType === 31 /* ParseNodeType.Function */ && prevNode === curNode.d.funcAnnotationComment) {
|
1232
1254
|
// Type comments are always considered forward declarations even though
|
1233
1255
|
// they're not "quoted".
|
1234
1256
|
return true;
|
1235
1257
|
}
|
1236
|
-
if (curNode.nodeType === 3 /* ParseNodeType.Assignment */ && prevNode === curNode.
|
1258
|
+
if (curNode.nodeType === 3 /* ParseNodeType.Assignment */ && prevNode === curNode.d.annotationComment) {
|
1237
1259
|
// Type comments are always considered forward declarations even though
|
1238
1260
|
// they're not "quoted".
|
1239
1261
|
return true;
|
@@ -1273,7 +1295,7 @@ function isWithinAssertExpression(node) {
|
|
1273
1295
|
while (curNode) {
|
1274
1296
|
switch (curNode.nodeType) {
|
1275
1297
|
case 2 /* ParseNodeType.Assert */: {
|
1276
|
-
return curNode.
|
1298
|
+
return curNode.d.testExpr === prevNode;
|
1277
1299
|
}
|
1278
1300
|
}
|
1279
1301
|
prevNode = curNode;
|
@@ -1294,21 +1316,22 @@ function getDocString(statements) {
|
|
1294
1316
|
return undefined;
|
1295
1317
|
}
|
1296
1318
|
// It's up to the user to convert normalize/convert this as needed.
|
1297
|
-
const strings = statements[0].statements[0].strings;
|
1319
|
+
const strings = statements[0].d.statements[0].d.strings;
|
1298
1320
|
if (strings.length === 1) {
|
1299
|
-
return strings[0].value;
|
1321
|
+
return strings[0].d.value;
|
1300
1322
|
}
|
1301
|
-
return strings.map((s) => s.value).join('');
|
1323
|
+
return strings.map((s) => s.d.value).join('');
|
1302
1324
|
}
|
1303
1325
|
exports.getDocString = getDocString;
|
1304
1326
|
function isDocString(statementList) {
|
1305
1327
|
// If the first statement in the suite isn't a StringNode,
|
1306
1328
|
// assume there is no docString.
|
1307
|
-
if (statementList.statements.length === 0 ||
|
1329
|
+
if (statementList.d.statements.length === 0 ||
|
1330
|
+
statementList.d.statements[0].nodeType !== 48 /* ParseNodeType.StringList */) {
|
1308
1331
|
return false;
|
1309
1332
|
}
|
1310
1333
|
// A docstring can consist of multiple joined strings in a single expression.
|
1311
|
-
const strings = statementList.statements[0].strings;
|
1334
|
+
const strings = statementList.d.statements[0].d.strings;
|
1312
1335
|
if (strings.length === 0) {
|
1313
1336
|
return false;
|
1314
1337
|
}
|
@@ -1330,44 +1353,44 @@ function isAssignmentToDefaultsFollowingNamedTuple(callNode) {
|
|
1330
1353
|
if (callNode.nodeType !== 9 /* ParseNodeType.Call */ ||
|
1331
1354
|
!callNode.parent ||
|
1332
1355
|
callNode.parent.nodeType !== 3 /* ParseNodeType.Assignment */ ||
|
1333
|
-
callNode.parent.
|
1356
|
+
callNode.parent.d.leftExpr.nodeType !== 38 /* ParseNodeType.Name */ ||
|
1334
1357
|
!callNode.parent.parent ||
|
1335
1358
|
callNode.parent.parent.nodeType !== 47 /* ParseNodeType.StatementList */) {
|
1336
1359
|
return false;
|
1337
1360
|
}
|
1338
|
-
const namedTupleAssignedName = callNode.parent.
|
1361
|
+
const namedTupleAssignedName = callNode.parent.d.leftExpr.d.value;
|
1339
1362
|
const statementList = callNode.parent.parent;
|
1340
|
-
if (statementList.statements[0] !== callNode.parent ||
|
1363
|
+
if (statementList.d.statements[0] !== callNode.parent ||
|
1341
1364
|
!statementList.parent ||
|
1342
1365
|
!(statementList.parent.nodeType === 36 /* ParseNodeType.Module */ ||
|
1343
1366
|
statementList.parent.nodeType === 50 /* ParseNodeType.Suite */)) {
|
1344
1367
|
return false;
|
1345
1368
|
}
|
1346
1369
|
const moduleOrSuite = statementList.parent;
|
1347
|
-
let statementIndex = moduleOrSuite.statements.findIndex((s) => s === statementList);
|
1370
|
+
let statementIndex = moduleOrSuite.d.statements.findIndex((s) => s === statementList);
|
1348
1371
|
if (statementIndex < 0) {
|
1349
1372
|
return false;
|
1350
1373
|
}
|
1351
1374
|
statementIndex++;
|
1352
|
-
while (statementIndex < moduleOrSuite.statements.length) {
|
1353
|
-
const nextStatement = moduleOrSuite.statements[statementIndex];
|
1375
|
+
while (statementIndex < moduleOrSuite.d.statements.length) {
|
1376
|
+
const nextStatement = moduleOrSuite.d.statements[statementIndex];
|
1354
1377
|
if (nextStatement.nodeType !== 47 /* ParseNodeType.StatementList */) {
|
1355
1378
|
break;
|
1356
1379
|
}
|
1357
|
-
if (((_a = nextStatement.statements[0]) === null || _a === void 0 ? void 0 : _a.nodeType) === 48 /* ParseNodeType.StringList */) {
|
1380
|
+
if (((_a = nextStatement.d.statements[0]) === null || _a === void 0 ? void 0 : _a.nodeType) === 48 /* ParseNodeType.StringList */) {
|
1358
1381
|
// Skip over comments
|
1359
1382
|
statementIndex++;
|
1360
1383
|
continue;
|
1361
1384
|
}
|
1362
|
-
if (((_b = nextStatement.statements[0]) === null || _b === void 0 ? void 0 : _b.nodeType) === 3 /* ParseNodeType.Assignment */) {
|
1363
|
-
const assignNode = nextStatement.statements[0];
|
1364
|
-
if (assignNode.
|
1365
|
-
assignNode.
|
1366
|
-
const defaultTarget = assignNode.
|
1385
|
+
if (((_b = nextStatement.d.statements[0]) === null || _b === void 0 ? void 0 : _b.nodeType) === 3 /* ParseNodeType.Assignment */) {
|
1386
|
+
const assignNode = nextStatement.d.statements[0];
|
1387
|
+
if (assignNode.d.leftExpr.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
1388
|
+
assignNode.d.leftExpr.d.member.d.value === '__defaults__') {
|
1389
|
+
const defaultTarget = assignNode.d.leftExpr.d.leftExpr;
|
1367
1390
|
if (defaultTarget.nodeType === 35 /* ParseNodeType.MemberAccess */ &&
|
1368
|
-
defaultTarget.
|
1369
|
-
defaultTarget.
|
1370
|
-
defaultTarget.
|
1391
|
+
defaultTarget.d.member.d.value === '__new__' &&
|
1392
|
+
defaultTarget.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */ &&
|
1393
|
+
defaultTarget.d.leftExpr.d.value === namedTupleAssignedName) {
|
1371
1394
|
return true;
|
1372
1395
|
}
|
1373
1396
|
}
|
@@ -1389,11 +1412,11 @@ class NameNodeWalker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1389
1412
|
return true;
|
1390
1413
|
}
|
1391
1414
|
visitIndex(node) {
|
1392
|
-
this.walk(node.
|
1415
|
+
this.walk(node.d.leftExpr);
|
1393
1416
|
const prevSubscriptIndex = this._subscriptIndex;
|
1394
1417
|
const prevBaseExpression = this._baseExpression;
|
1395
|
-
this._baseExpression = node.
|
1396
|
-
node.items.forEach((item, index) => {
|
1418
|
+
this._baseExpression = node.d.leftExpr;
|
1419
|
+
node.d.items.forEach((item, index) => {
|
1397
1420
|
this._subscriptIndex = index;
|
1398
1421
|
this.walk(item);
|
1399
1422
|
});
|
@@ -1442,7 +1465,7 @@ function getCallNodeAndActiveParameterIndex(node, insertionOffset, tokens) {
|
|
1442
1465
|
}
|
1443
1466
|
curNode = curNode.parent;
|
1444
1467
|
}
|
1445
|
-
if (!callNode || !callNode.
|
1468
|
+
if (!callNode || !callNode.d.args) {
|
1446
1469
|
return undefined;
|
1447
1470
|
}
|
1448
1471
|
const endPosition = textRange_1.TextRange.getEnd(callNode);
|
@@ -1456,7 +1479,7 @@ function getCallNodeAndActiveParameterIndex(node, insertionOffset, tokens) {
|
|
1456
1479
|
let addedActive = false;
|
1457
1480
|
let activeIndex = -1;
|
1458
1481
|
let activeOrFake = false;
|
1459
|
-
callNode.
|
1482
|
+
callNode.d.args.forEach((arg, index) => {
|
1460
1483
|
if (addedActive) {
|
1461
1484
|
return;
|
1462
1485
|
}
|
@@ -1491,7 +1514,7 @@ function getCallNodeAndActiveParameterIndex(node, insertionOffset, tokens) {
|
|
1491
1514
|
}
|
1492
1515
|
});
|
1493
1516
|
if (!addedActive) {
|
1494
|
-
activeIndex = callNode.
|
1517
|
+
activeIndex = callNode.d.args.length + 1;
|
1495
1518
|
}
|
1496
1519
|
return {
|
1497
1520
|
callNode,
|
@@ -1499,15 +1522,15 @@ function getCallNodeAndActiveParameterIndex(node, insertionOffset, tokens) {
|
|
1499
1522
|
activeOrFake,
|
1500
1523
|
};
|
1501
1524
|
function isOffsetInsideCallArgs(tokens, node, offset) {
|
1502
|
-
const argumentStart = node.
|
1525
|
+
const argumentStart = node.d.leftExpr.length > 0 ? textRange_1.TextRange.getEnd(node.d.leftExpr) - 1 : node.d.leftExpr.start;
|
1503
1526
|
// Handle obvious case first.
|
1504
1527
|
const callEndOffset = textRange_1.TextRange.getEnd(node);
|
1505
1528
|
if (offset < argumentStart || callEndOffset < offset) {
|
1506
1529
|
return false;
|
1507
1530
|
}
|
1508
|
-
if (node.
|
1509
|
-
const start = node.
|
1510
|
-
const end = textRange_1.TextRange.getEnd(node.
|
1531
|
+
if (node.d.args.length > 0) {
|
1532
|
+
const start = node.d.args[0].start;
|
1533
|
+
const end = textRange_1.TextRange.getEnd(node.d.args[node.d.args.length - 1]);
|
1511
1534
|
if (start <= offset && offset < end) {
|
1512
1535
|
return true;
|
1513
1536
|
}
|
@@ -1786,44 +1809,44 @@ function isWriteAccess(node) {
|
|
1786
1809
|
while (curNode) {
|
1787
1810
|
switch (curNode.nodeType) {
|
1788
1811
|
case 3 /* ParseNodeType.Assignment */: {
|
1789
|
-
return prevNode === curNode.
|
1812
|
+
return prevNode === curNode.d.leftExpr;
|
1790
1813
|
}
|
1791
1814
|
case 5 /* ParseNodeType.AugmentedAssignment */: {
|
1792
|
-
return prevNode === curNode.
|
1815
|
+
return prevNode === curNode.d.leftExpr;
|
1793
1816
|
}
|
1794
1817
|
case 4 /* ParseNodeType.AssignmentExpression */: {
|
1795
|
-
return prevNode === curNode.name;
|
1818
|
+
return prevNode === curNode.d.name;
|
1796
1819
|
}
|
1797
1820
|
case 17 /* ParseNodeType.Del */: {
|
1798
1821
|
return true;
|
1799
1822
|
}
|
1800
1823
|
case 29 /* ParseNodeType.For */: {
|
1801
|
-
return prevNode === curNode.
|
1824
|
+
return prevNode === curNode.d.targetExpr;
|
1802
1825
|
}
|
1803
1826
|
case 24 /* ParseNodeType.ImportAs */: {
|
1804
|
-
return (prevNode === curNode.alias ||
|
1805
|
-
(curNode.module.nameParts.length > 0 && prevNode === curNode.module.nameParts[0]));
|
1827
|
+
return (prevNode === curNode.d.alias ||
|
1828
|
+
(curNode.d.module.d.nameParts.length > 0 && prevNode === curNode.d.module.d.nameParts[0]));
|
1806
1829
|
}
|
1807
1830
|
case 26 /* ParseNodeType.ImportFromAs */: {
|
1808
|
-
return prevNode === curNode.alias || (!curNode.alias && prevNode === curNode.name);
|
1831
|
+
return prevNode === curNode.d.alias || (!curNode.d.alias && prevNode === curNode.d.name);
|
1809
1832
|
}
|
1810
1833
|
case 35 /* ParseNodeType.MemberAccess */: {
|
1811
|
-
if (prevNode !== curNode.
|
1834
|
+
if (prevNode !== curNode.d.member) {
|
1812
1835
|
return false;
|
1813
1836
|
}
|
1814
1837
|
break;
|
1815
1838
|
}
|
1816
1839
|
case 28 /* ParseNodeType.Except */: {
|
1817
|
-
return prevNode === curNode.name;
|
1840
|
+
return prevNode === curNode.d.name;
|
1818
1841
|
}
|
1819
1842
|
case 58 /* ParseNodeType.With */: {
|
1820
|
-
return curNode.withItems.some((item) => item === prevNode);
|
1843
|
+
return curNode.d.withItems.some((item) => item === prevNode);
|
1821
1844
|
}
|
1822
1845
|
case 12 /* ParseNodeType.ComprehensionFor */: {
|
1823
|
-
return prevNode === curNode.
|
1846
|
+
return prevNode === curNode.d.targetExpr;
|
1824
1847
|
}
|
1825
1848
|
case 54 /* ParseNodeType.TypeAnnotation */: {
|
1826
|
-
if (prevNode === curNode.
|
1849
|
+
if (prevNode === curNode.d.annotation) {
|
1827
1850
|
return false;
|
1828
1851
|
}
|
1829
1852
|
break;
|
@@ -1855,12 +1878,12 @@ function getFileInfoFromNode(node) {
|
|
1855
1878
|
exports.getFileInfoFromNode = getFileInfoFromNode;
|
1856
1879
|
function isFunctionSuiteEmpty(node) {
|
1857
1880
|
let isEmpty = true;
|
1858
|
-
node.suite.statements.forEach((statement) => {
|
1881
|
+
node.d.suite.d.statements.forEach((statement) => {
|
1859
1882
|
if (statement.nodeType === 0 /* ParseNodeType.Error */) {
|
1860
1883
|
return;
|
1861
1884
|
}
|
1862
1885
|
else if (statement.nodeType === 47 /* ParseNodeType.StatementList */) {
|
1863
|
-
statement.statements.forEach((subStatement) => {
|
1886
|
+
statement.d.statements.forEach((subStatement) => {
|
1864
1887
|
// Allow docstrings, ellipsis, and pass statements.
|
1865
1888
|
if (subStatement.nodeType !== 21 /* ParseNodeType.Ellipsis */ &&
|
1866
1889
|
subStatement.nodeType !== 48 /* ParseNodeType.StringList */ &&
|
@@ -1877,22 +1900,22 @@ function isFunctionSuiteEmpty(node) {
|
|
1877
1900
|
}
|
1878
1901
|
exports.isFunctionSuiteEmpty = isFunctionSuiteEmpty;
|
1879
1902
|
function getTypeAnnotationForParameter(node, paramIndex) {
|
1880
|
-
if (paramIndex >= node.
|
1903
|
+
if (paramIndex >= node.d.params.length) {
|
1881
1904
|
return undefined;
|
1882
1905
|
}
|
1883
|
-
const param = node.
|
1884
|
-
if (param.
|
1885
|
-
return param.
|
1906
|
+
const param = node.d.params[paramIndex];
|
1907
|
+
if (param.d.annotation) {
|
1908
|
+
return param.d.annotation;
|
1886
1909
|
}
|
1887
|
-
else if (param.
|
1888
|
-
return param.
|
1910
|
+
else if (param.d.annotationComment) {
|
1911
|
+
return param.d.annotationComment;
|
1889
1912
|
}
|
1890
|
-
if (!node.
|
1913
|
+
if (!node.d.funcAnnotationComment || node.d.funcAnnotationComment.d.isEllipsis) {
|
1891
1914
|
return undefined;
|
1892
1915
|
}
|
1893
1916
|
let firstCommentAnnotationIndex = 0;
|
1894
|
-
const paramAnnotations = node.
|
1895
|
-
if (paramAnnotations.length < node.
|
1917
|
+
const paramAnnotations = node.d.funcAnnotationComment.d.paramAnnotations;
|
1918
|
+
if (paramAnnotations.length < node.d.params.length) {
|
1896
1919
|
firstCommentAnnotationIndex = 1;
|
1897
1920
|
}
|
1898
1921
|
const adjIndex = paramIndex - firstCommentAnnotationIndex;
|
@@ -1909,7 +1932,7 @@ function isImportModuleName(node) {
|
|
1909
1932
|
exports.isImportModuleName = isImportModuleName;
|
1910
1933
|
function isImportAlias(node) {
|
1911
1934
|
var _a;
|
1912
|
-
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 24 /* ParseNodeType.ImportAs */ && node.parent.alias === node;
|
1935
|
+
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 24 /* ParseNodeType.ImportAs */ && node.parent.d.alias === node;
|
1913
1936
|
}
|
1914
1937
|
exports.isImportAlias = isImportAlias;
|
1915
1938
|
function isFromImportModuleName(node) {
|
@@ -1919,12 +1942,12 @@ function isFromImportModuleName(node) {
|
|
1919
1942
|
exports.isFromImportModuleName = isFromImportModuleName;
|
1920
1943
|
function isFromImportName(node) {
|
1921
1944
|
var _a;
|
1922
|
-
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 26 /* ParseNodeType.ImportFromAs */ && node.parent.name === node;
|
1945
|
+
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 26 /* ParseNodeType.ImportFromAs */ && node.parent.d.name === node;
|
1923
1946
|
}
|
1924
1947
|
exports.isFromImportName = isFromImportName;
|
1925
1948
|
function isFromImportAlias(node) {
|
1926
1949
|
var _a;
|
1927
|
-
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 26 /* ParseNodeType.ImportFromAs */ && node.parent.alias === node;
|
1950
|
+
return ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 26 /* ParseNodeType.ImportFromAs */ && node.parent.d.alias === node;
|
1928
1951
|
}
|
1929
1952
|
exports.isFromImportAlias = isFromImportAlias;
|
1930
1953
|
function isLastNameOfModuleName(node) {
|
@@ -1933,10 +1956,10 @@ function isLastNameOfModuleName(node) {
|
|
1933
1956
|
return false;
|
1934
1957
|
}
|
1935
1958
|
const module = node.parent;
|
1936
|
-
if (module.nameParts.length === 0) {
|
1959
|
+
if (module.d.nameParts.length === 0) {
|
1937
1960
|
return false;
|
1938
1961
|
}
|
1939
|
-
return module.nameParts[module.nameParts.length - 1] === node;
|
1962
|
+
return module.d.nameParts[module.d.nameParts.length - 1] === node;
|
1940
1963
|
}
|
1941
1964
|
exports.isLastNameOfModuleName = isLastNameOfModuleName;
|
1942
1965
|
function* getAncestorsIncludingSelf(node) {
|
@@ -1971,7 +1994,7 @@ function getDottedNameWithGivenNodeAsLastName(node) {
|
|
1971
1994
|
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 35 /* ParseNodeType.MemberAccess */) {
|
1972
1995
|
return node;
|
1973
1996
|
}
|
1974
|
-
if (node.parent.
|
1997
|
+
if (node.parent.d.leftExpr === node) {
|
1975
1998
|
return node;
|
1976
1999
|
}
|
1977
2000
|
return node.parent;
|
@@ -1989,14 +2012,14 @@ function getDecoratorName(decorator) {
|
|
1989
2012
|
function getExpressionName(node) {
|
1990
2013
|
var _a;
|
1991
2014
|
if (node.nodeType === 38 /* ParseNodeType.Name */ || node.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
1992
|
-
return (_a = getDottedName(node)) === null || _a === void 0 ? void 0 : _a.map((n) => n.value).join('.');
|
2015
|
+
return (_a = getDottedName(node)) === null || _a === void 0 ? void 0 : _a.map((n) => n.d.value).join('.');
|
1993
2016
|
}
|
1994
2017
|
if (node.nodeType === 9 /* ParseNodeType.Call */) {
|
1995
|
-
return getExpressionName(node.
|
2018
|
+
return getExpressionName(node.d.leftExpr);
|
1996
2019
|
}
|
1997
2020
|
return undefined;
|
1998
2021
|
}
|
1999
|
-
return getExpressionName(decorator.
|
2022
|
+
return getExpressionName(decorator.d.expr);
|
2000
2023
|
}
|
2001
2024
|
exports.getDecoratorName = getDecoratorName;
|
2002
2025
|
function getDottedName(node) {
|
@@ -2016,10 +2039,10 @@ function getDottedName(node) {
|
|
2016
2039
|
names.push(node);
|
2017
2040
|
return true;
|
2018
2041
|
}
|
2019
|
-
names.push(node.
|
2020
|
-
if (node.
|
2021
|
-
node.
|
2022
|
-
return _getDottedName(node.
|
2042
|
+
names.push(node.d.member);
|
2043
|
+
if (node.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */ ||
|
2044
|
+
node.d.leftExpr.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
2045
|
+
return _getDottedName(node.d.leftExpr, names);
|
2023
2046
|
}
|
2024
2047
|
return false;
|
2025
2048
|
}
|
@@ -2030,9 +2053,8 @@ function getFirstNameOfDottedName(node) {
|
|
2030
2053
|
if (node.nodeType === 38 /* ParseNodeType.Name */) {
|
2031
2054
|
return node;
|
2032
2055
|
}
|
2033
|
-
if (node.
|
2034
|
-
node.
|
2035
|
-
return getFirstNameOfDottedName(node.leftExpression);
|
2056
|
+
if (node.d.leftExpr.nodeType === 38 /* ParseNodeType.Name */ || node.d.leftExpr.nodeType === 35 /* ParseNodeType.MemberAccess */) {
|
2057
|
+
return getFirstNameOfDottedName(node.d.leftExpr);
|
2036
2058
|
}
|
2037
2059
|
return undefined;
|
2038
2060
|
}
|
@@ -2043,7 +2065,7 @@ function isFirstNameOfDottedName(node) {
|
|
2043
2065
|
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 35 /* ParseNodeType.MemberAccess */) {
|
2044
2066
|
return true;
|
2045
2067
|
}
|
2046
|
-
if (node.parent.
|
2068
|
+
if (node.parent.d.leftExpr === node) {
|
2047
2069
|
return true;
|
2048
2070
|
}
|
2049
2071
|
return false;
|
@@ -2055,18 +2077,18 @@ function isLastNameOfDottedName(node) {
|
|
2055
2077
|
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 35 /* ParseNodeType.MemberAccess */) {
|
2056
2078
|
return true;
|
2057
2079
|
}
|
2058
|
-
if (node.parent.
|
2059
|
-
node.parent.
|
2080
|
+
if (node.parent.d.leftExpr.nodeType !== 38 /* ParseNodeType.Name */ &&
|
2081
|
+
node.parent.d.leftExpr.nodeType !== 35 /* ParseNodeType.MemberAccess */) {
|
2060
2082
|
return false;
|
2061
2083
|
}
|
2062
|
-
if (node.parent.
|
2084
|
+
if (node.parent.d.leftExpr === node) {
|
2063
2085
|
return false;
|
2064
2086
|
}
|
2065
2087
|
return ((_b = node.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) !== 35 /* ParseNodeType.MemberAccess */;
|
2066
2088
|
}
|
2067
2089
|
exports.isLastNameOfDottedName = isLastNameOfDottedName;
|
2068
2090
|
function getStringNodeValueRange(node) {
|
2069
|
-
return getStringValueRange(node.token);
|
2091
|
+
return getStringValueRange(node.d.token);
|
2070
2092
|
}
|
2071
2093
|
exports.getStringNodeValueRange = getStringNodeValueRange;
|
2072
2094
|
function getStringValueRange(token) {
|
@@ -2111,8 +2133,8 @@ function isBlankLine(tokenizerOutput, text, line) {
|
|
2111
2133
|
}
|
2112
2134
|
exports.isBlankLine = isBlankLine;
|
2113
2135
|
function isUnannotatedFunction(node) {
|
2114
|
-
return (node.
|
2115
|
-
node.
|
2136
|
+
return (node.d.returnAnnotation === undefined &&
|
2137
|
+
node.d.params.every((param) => param.d.annotation === undefined && param.d.annotationComment === undefined));
|
2116
2138
|
}
|
2117
2139
|
exports.isUnannotatedFunction = isUnannotatedFunction;
|
2118
2140
|
// Verifies that an import of the form "from __future__ import x"
|
@@ -2122,11 +2144,11 @@ function isValidLocationForFutureImport(node) {
|
|
2122
2144
|
const module = getModuleNode(node);
|
2123
2145
|
(0, debug_1.assert)(module);
|
2124
2146
|
let sawDocString = false;
|
2125
|
-
for (const statement of module.statements) {
|
2147
|
+
for (const statement of module.d.statements) {
|
2126
2148
|
if (statement.nodeType !== 47 /* ParseNodeType.StatementList */) {
|
2127
2149
|
return false;
|
2128
2150
|
}
|
2129
|
-
for (const simpleStatement of statement.statements) {
|
2151
|
+
for (const simpleStatement of statement.d.statements) {
|
2130
2152
|
if (simpleStatement === node) {
|
2131
2153
|
return true;
|
2132
2154
|
}
|
@@ -2137,9 +2159,9 @@ function isValidLocationForFutureImport(node) {
|
|
2137
2159
|
sawDocString = true;
|
2138
2160
|
}
|
2139
2161
|
else if (simpleStatement.nodeType === 25 /* ParseNodeType.ImportFrom */) {
|
2140
|
-
if (simpleStatement.module.leadingDots !== 0 ||
|
2141
|
-
simpleStatement.module.nameParts.length !== 1 ||
|
2142
|
-
simpleStatement.module.nameParts[0].value !== '__future__') {
|
2162
|
+
if (simpleStatement.d.module.d.leadingDots !== 0 ||
|
2163
|
+
simpleStatement.d.module.d.nameParts.length !== 1 ||
|
2164
|
+
simpleStatement.d.module.d.nameParts[0].d.value !== '__future__') {
|
2143
2165
|
return false;
|
2144
2166
|
}
|
2145
2167
|
}
|
@@ -2277,11 +2299,11 @@ function getVariableDocStringNode(node) {
|
|
2277
2299
|
(suiteOrModule.nodeType !== 36 /* ParseNodeType.Module */ && suiteOrModule.nodeType !== 50 /* ParseNodeType.Suite */)) {
|
2278
2300
|
return undefined;
|
2279
2301
|
}
|
2280
|
-
const assignmentIndex = suiteOrModule.statements.findIndex((node) => node === parentNode);
|
2281
|
-
if (assignmentIndex < 0 || assignmentIndex === suiteOrModule.statements.length - 1) {
|
2302
|
+
const assignmentIndex = suiteOrModule.d.statements.findIndex((node) => node === parentNode);
|
2303
|
+
if (assignmentIndex < 0 || assignmentIndex === suiteOrModule.d.statements.length - 1) {
|
2282
2304
|
return undefined;
|
2283
2305
|
}
|
2284
|
-
const nextStatement = suiteOrModule.statements[assignmentIndex + 1];
|
2306
|
+
const nextStatement = suiteOrModule.d.statements[assignmentIndex + 1];
|
2285
2307
|
if (nextStatement.nodeType !== 47 /* ParseNodeType.StatementList */ || !isDocString(nextStatement)) {
|
2286
2308
|
return undefined;
|
2287
2309
|
}
|
@@ -2299,7 +2321,7 @@ function getVariableDocStringNode(node) {
|
|
2299
2321
|
else {
|
2300
2322
|
const func = getEnclosingFunction(parentNode);
|
2301
2323
|
// If we're within an __init__ method, the attribute docstring is valid.
|
2302
|
-
if (func && func.name.value === '__init__' && getEnclosingClass(func, /* stopAtFunction */ true)) {
|
2324
|
+
if (func && func.d.name.d.value === '__init__' && getEnclosingClass(func, /* stopAtFunction */ true)) {
|
2303
2325
|
isValidContext = true;
|
2304
2326
|
}
|
2305
2327
|
}
|
@@ -2307,7 +2329,7 @@ function getVariableDocStringNode(node) {
|
|
2307
2329
|
return undefined;
|
2308
2330
|
}
|
2309
2331
|
// A docstring can consist of multiple joined strings in a single expression.
|
2310
|
-
return nextStatement.statements[0];
|
2332
|
+
return nextStatement.d.statements[0];
|
2311
2333
|
}
|
2312
2334
|
exports.getVariableDocStringNode = getVariableDocStringNode;
|
2313
2335
|
// Creates an ID that identifies this parse node in a way that will
|
@@ -2316,10 +2338,10 @@ exports.getVariableDocStringNode = getVariableDocStringNode;
|
|
2316
2338
|
function getScopeIdForNode(node) {
|
2317
2339
|
let name = '';
|
2318
2340
|
if (node.nodeType === 10 /* ParseNodeType.Class */) {
|
2319
|
-
name = node.name.value;
|
2341
|
+
name = node.d.name.d.value;
|
2320
2342
|
}
|
2321
2343
|
else if (node.nodeType === 31 /* ParseNodeType.Function */) {
|
2322
|
-
name = node.name.value;
|
2344
|
+
name = node.d.name.d.value;
|
2323
2345
|
}
|
2324
2346
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
|
2325
2347
|
return `${fileInfo.fileUri.key}.${node.start.toString()}-${name}`;
|
@@ -2342,7 +2364,7 @@ function getTypeVarScopesForNode(node) {
|
|
2342
2364
|
}
|
2343
2365
|
exports.getTypeVarScopesForNode = getTypeVarScopesForNode;
|
2344
2366
|
function checkDecorator(node, value) {
|
2345
|
-
return node.
|
2367
|
+
return node.d.expr.nodeType === 38 /* ParseNodeType.Name */ && node.d.expr.d.value === value;
|
2346
2368
|
}
|
2347
2369
|
exports.checkDecorator = checkDecorator;
|
2348
2370
|
function isSimpleDefault(node) {
|
@@ -2352,13 +2374,13 @@ function isSimpleDefault(node) {
|
|
2352
2374
|
case 35 /* ParseNodeType.MemberAccess */:
|
2353
2375
|
return true;
|
2354
2376
|
case 49 /* ParseNodeType.String */:
|
2355
|
-
return (node.token.flags & 64 /* StringTokenFlags.Format */) === 0;
|
2377
|
+
return (node.d.token.flags & 64 /* StringTokenFlags.Format */) === 0;
|
2356
2378
|
case 48 /* ParseNodeType.StringList */:
|
2357
|
-
return node.strings.every(isSimpleDefault);
|
2379
|
+
return node.d.strings.every(isSimpleDefault);
|
2358
2380
|
case 55 /* ParseNodeType.UnaryOperation */:
|
2359
|
-
return isSimpleDefault(node.
|
2381
|
+
return isSimpleDefault(node.d.expr);
|
2360
2382
|
case 7 /* ParseNodeType.BinaryOperation */:
|
2361
|
-
return isSimpleDefault(node.
|
2383
|
+
return isSimpleDefault(node.d.leftExpr) && isSimpleDefault(node.d.rightExpr);
|
2362
2384
|
default:
|
2363
2385
|
return false;
|
2364
2386
|
}
|