@zzzen/pyright-internal 1.2.0-dev.20240526 → 1.2.0-dev.20240602
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.d.ts +2 -2
- package/dist/analyzer/binder.d.ts +3 -3
- package/dist/analyzer/binder.js +32 -32
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +3 -3
- package/dist/analyzer/checker.js +35 -35
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +4 -4
- package/dist/analyzer/codeFlowTypes.js +3 -3
- package/dist/analyzer/constructors.js +10 -3
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +3 -3
- package/dist/analyzer/enums.js +6 -6
- package/dist/analyzer/importResolver.d.ts +1 -0
- package/dist/analyzer/importResolver.js +6 -3
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +6 -6
- package/dist/analyzer/namedTuples.js +2 -2
- package/dist/analyzer/operations.js +2 -2
- package/dist/analyzer/parseTreeUtils.d.ts +1 -1
- package/dist/analyzer/parseTreeUtils.js +94 -94
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +5 -5
- package/dist/analyzer/parseTreeWalker.js +64 -64
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.js +1 -1
- package/dist/analyzer/program.d.ts +1 -1
- package/dist/analyzer/program.js +23 -29
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/scope.d.ts +1 -1
- package/dist/analyzer/scope.js +2 -2
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/sourceMapper.js +4 -4
- package/dist/analyzer/staticExpressions.js +3 -3
- package/dist/analyzer/testWalker.js +1 -1
- package/dist/analyzer/tracePrinter.js +4 -4
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeEvaluator.js +290 -311
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +6 -6
- package/dist/analyzer/typeStubWriter.js +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -1
- package/dist/analyzer/typeUtils.js +11 -4
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +1 -2
- package/dist/analyzer/typedDicts.js +5 -17
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.d.ts +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +14 -14
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/textEditTracker.js +5 -5
- package/dist/common/uri/fileUri.js +1 -0
- package/dist/common/uri/fileUri.js.map +1 -1
- package/dist/common/uri/uri.d.ts +3 -0
- package/dist/common/uri/uri.js +16 -0
- package/dist/common/uri/uri.js.map +1 -1
- package/dist/languageService/autoImporter.js +4 -4
- package/dist/languageService/callHierarchyProvider.js +1 -1
- package/dist/languageService/completionProvider.js +30 -30
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +7 -7
- package/dist/languageService/hoverProvider.js +2 -2
- package/dist/languageService/importSorter.js +1 -1
- package/dist/languageService/referencesProvider.js +4 -4
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.js +3 -3
- package/dist/languageService/tooltipUtils.js +2 -2
- package/dist/localization/localize.d.ts +1 -1
- package/dist/localization/localize.js +1 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +3 -1
- package/dist/localization/package.nls.de.json +3 -1
- package/dist/localization/package.nls.en-us.json +1 -1
- package/dist/localization/package.nls.es.json +3 -1
- package/dist/localization/package.nls.fr.json +3 -1
- package/dist/localization/package.nls.it.json +3 -1
- package/dist/localization/package.nls.ja.json +3 -1
- package/dist/localization/package.nls.ko.json +3 -1
- package/dist/localization/package.nls.pl.json +3 -1
- package/dist/localization/package.nls.pt-br.json +3 -1
- package/dist/localization/package.nls.qps-ploc.json +3 -1
- package/dist/localization/package.nls.ru.json +3 -1
- package/dist/localization/package.nls.tr.json +3 -1
- package/dist/localization/package.nls.zh-cn.json +3 -1
- package/dist/localization/package.nls.zh-tw.json +3 -1
- package/dist/parser/parseNodes.d.ts +42 -42
- package/dist/parser/parseNodes.js +69 -69
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -1
- package/dist/parser/parser.js +35 -35
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +3 -3
- package/dist/pyright.js.map +1 -1
- package/dist/tests/classDeclaration.test.js +1 -1
- package/dist/tests/importResolver.test.js +16 -0
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +4 -4
- package/dist/tests/parser.test.js +3 -3
- package/dist/tests/typeEvaluator2.test.js +5 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +1 -1
- package/dist/tests/typeEvaluator7.test.js +0 -6
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/uri.test.js +11 -3
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/workspaceFactory.js +16 -14
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import { ClassNode, ExecutionScopeNode, FunctionNode, LambdaNode,
|
1
|
+
import { ClassNode, ComprehensionNode, ExecutionScopeNode, FunctionNode, LambdaNode, ModuleNode, ParseNode, StringNode } from '../parser/parseNodes';
|
2
2
|
import { AnalyzerFileInfo } from './analyzerFileInfo';
|
3
3
|
import { FlowNode } from './codeFlowTypes';
|
4
4
|
import { Declaration } from './declaration';
|
@@ -9,7 +9,7 @@ export interface DunderAllInfo {
|
|
9
9
|
stringNodes: StringNode[];
|
10
10
|
usesUnsupportedDunderAllForm: boolean;
|
11
11
|
}
|
12
|
-
export type ScopedNode = ModuleNode | ClassNode | FunctionNode | LambdaNode |
|
12
|
+
export type ScopedNode = ModuleNode | ClassNode | FunctionNode | LambdaNode | ComprehensionNode;
|
13
13
|
export declare function cleanNodeAnalysisInfo(node: ParseNode): void;
|
14
14
|
export declare function getImportInfo(node: ParseNode): ImportResult | undefined;
|
15
15
|
export declare function setImportInfo(node: ParseNode, importInfo: ImportResult): void;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, ClassNode, ContinueNode, DelNode, ExceptNode, ForNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromNode, IndexNode, LambdaNode,
|
1
|
+
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, ClassNode, ComprehensionNode, ContinueNode, DelNode, ExceptNode, ForNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromNode, IndexNode, LambdaNode, MatchNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, NonlocalNode, ParseNode, PatternAsNode, PatternCaptureNode, PatternMappingExpandEntryNode, RaiseNode, ReturnNode, SuiteNode, TernaryNode, TryNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, UnaryOperationNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
2
2
|
import { AnalyzerFileInfo } from './analyzerFileInfo';
|
3
3
|
import { ParseTreeWalker } from './parseTreeWalker';
|
4
4
|
import { Scope } from './scope';
|
@@ -72,7 +72,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
72
72
|
visitTernary(node: TernaryNode): boolean;
|
73
73
|
visitUnaryOperation(node: UnaryOperationNode): boolean;
|
74
74
|
visitBinaryOperation(node: BinaryOperationNode): boolean;
|
75
|
-
|
75
|
+
visitComprehension(node: ComprehensionNode): boolean;
|
76
76
|
visitMatch(node: MatchNode): boolean;
|
77
77
|
visitPatternAs(node: PatternAsNode): boolean;
|
78
78
|
visitPatternCapture(node: PatternCaptureNode): boolean;
|
@@ -80,7 +80,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
80
80
|
private _formatModuleName;
|
81
81
|
private _getNonClassParentScope;
|
82
82
|
private _addSlotsToCurrentScope;
|
83
|
-
private
|
83
|
+
private _isInComprehension;
|
84
84
|
private _addPatternCaptureTarget;
|
85
85
|
private _useExceptTargets;
|
86
86
|
private _getDunderAllNamesFromImport;
|
package/dist/analyzer/binder.js
CHANGED
@@ -426,7 +426,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
426
426
|
// There are libraries that make extensive use of unannotated decorators,
|
427
427
|
// and this can lead to a performance issue when walking the control
|
428
428
|
// flow graph if we need to evaluate every decorator.
|
429
|
-
if (!ParseTreeUtils.isNodeContainedWithinNodeType(node,
|
429
|
+
if (!ParseTreeUtils.isNodeContainedWithinNodeType(node, 16 /* ParseNodeType.Decorator */)) {
|
430
430
|
// Skip if we're in an 'Annotated' annotation because this creates
|
431
431
|
// problems for "No Return" return type analysis when annotation
|
432
432
|
// evaluation is deferred.
|
@@ -444,7 +444,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
444
444
|
if (node.leftExpression.memberName.value === 'extend' && node.arguments.length === 1) {
|
445
445
|
const argExpr = node.arguments[0].valueExpression;
|
446
446
|
// Is this a call to "__all__.extend([<list>])"?
|
447
|
-
if (argExpr.nodeType ===
|
447
|
+
if (argExpr.nodeType === 34 /* ParseNodeType.List */) {
|
448
448
|
argExpr.entries.forEach((listEntryNode) => {
|
449
449
|
var _a, _b;
|
450
450
|
if (listEntryNode.nodeType === 48 /* ParseNodeType.StringList */ &&
|
@@ -581,7 +581,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
581
581
|
// If the assignment target base expression is potentially a
|
582
582
|
// TypedDict, add the base expression to the flow expressions set
|
583
583
|
// to accommodate TypedDict type narrowing.
|
584
|
-
if (node.leftExpression.nodeType ===
|
584
|
+
if (node.leftExpression.nodeType === 27 /* ParseNodeType.Index */) {
|
585
585
|
const target = node.leftExpression;
|
586
586
|
if (target.items.length === 1 &&
|
587
587
|
!target.trailingComma &&
|
@@ -621,7 +621,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
621
621
|
const expr = node.rightExpression;
|
622
622
|
this._dunderAllNames = [];
|
623
623
|
let emitDunderAllWarning = false;
|
624
|
-
if (expr.nodeType ===
|
624
|
+
if (expr.nodeType === 34 /* ParseNodeType.List */) {
|
625
625
|
expr.entries.forEach((listEntryNode) => {
|
626
626
|
if (listEntryNode.nodeType === 48 /* ParseNodeType.StringList */ &&
|
627
627
|
listEntryNode.strings.length === 1 &&
|
@@ -668,7 +668,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
668
668
|
if (expr.nodeType === 48 /* ParseNodeType.StringList */) {
|
669
669
|
this._dunderSlotsEntries.push(expr);
|
670
670
|
}
|
671
|
-
else if (expr.nodeType ===
|
671
|
+
else if (expr.nodeType === 34 /* ParseNodeType.List */) {
|
672
672
|
expr.entries.forEach((listEntryNode) => {
|
673
673
|
if (listEntryNode.nodeType === 48 /* ParseNodeType.StringList */ &&
|
674
674
|
listEntryNode.strings.length === 1 &&
|
@@ -751,7 +751,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
751
751
|
node.leftExpression.value === '__all__') {
|
752
752
|
const expr = node.rightExpression;
|
753
753
|
let emitDunderAllWarning = true;
|
754
|
-
if (expr.nodeType ===
|
754
|
+
if (expr.nodeType === 34 /* ParseNodeType.List */) {
|
755
755
|
// Is this the form __all__ += ["a", "b"]?
|
756
756
|
expr.entries.forEach((listEntryNode) => {
|
757
757
|
var _a;
|
@@ -899,15 +899,15 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
899
899
|
return false;
|
900
900
|
}
|
901
901
|
visitYield(node) {
|
902
|
-
if (this.
|
903
|
-
this._addSyntaxError(localize_1.LocMessage.
|
902
|
+
if (this._isInComprehension(node, /* ignoreOutermostIterable */ true)) {
|
903
|
+
this._addSyntaxError(localize_1.LocMessage.yieldWithinComprehension(), node);
|
904
904
|
}
|
905
905
|
this._bindYield(node);
|
906
906
|
return false;
|
907
907
|
}
|
908
908
|
visitYieldFrom(node) {
|
909
|
-
if (this.
|
910
|
-
this._addSyntaxError(localize_1.LocMessage.
|
909
|
+
if (this._isInComprehension(node, /* ignoreOutermostIterable */ true)) {
|
910
|
+
this._addSyntaxError(localize_1.LocMessage.yieldWithinComprehension(), node);
|
911
911
|
}
|
912
912
|
this._bindYield(node);
|
913
913
|
return false;
|
@@ -1191,7 +1191,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1191
1191
|
// Allow if it's within a generator expression. Execution of
|
1192
1192
|
// generator expressions is deferred and therefore can be
|
1193
1193
|
// run within the context of an async function later.
|
1194
|
-
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !==
|
1194
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) !== 11 /* ParseNodeType.Comprehension */) {
|
1195
1195
|
this._addSyntaxError(localize_1.LocMessage.awaitNotInAsync(), node);
|
1196
1196
|
}
|
1197
1197
|
}
|
@@ -1639,13 +1639,13 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1639
1639
|
}
|
1640
1640
|
return false;
|
1641
1641
|
}
|
1642
|
-
|
1642
|
+
visitComprehension(node) {
|
1643
1643
|
const enclosingFunction = ParseTreeUtils.getEnclosingFunction(node);
|
1644
1644
|
// The first iterable is executed outside of the comprehension scope.
|
1645
|
-
if (node.forIfNodes.length > 0 && node.forIfNodes[0].nodeType ===
|
1645
|
+
if (node.forIfNodes.length > 0 && node.forIfNodes[0].nodeType === 12 /* ParseNodeType.ComprehensionFor */) {
|
1646
1646
|
this.walk(node.forIfNodes[0].iterableExpression);
|
1647
1647
|
}
|
1648
|
-
this._createNewScope(1 /* ScopeType.
|
1648
|
+
this._createNewScope(1 /* ScopeType.Comprehension */, this._getNonClassParentScope(),
|
1649
1649
|
/* proxyScope */ undefined, () => {
|
1650
1650
|
var _a;
|
1651
1651
|
AnalyzerNodeInfo.setScope(node, this._currentScope);
|
@@ -1656,7 +1656,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1656
1656
|
for (let i = 0; i < node.forIfNodes.length; i++) {
|
1657
1657
|
const compr = node.forIfNodes[i];
|
1658
1658
|
const addedSymbols = new Map();
|
1659
|
-
if (compr.nodeType ===
|
1659
|
+
if (compr.nodeType === 12 /* ParseNodeType.ComprehensionFor */) {
|
1660
1660
|
this._bindPossibleTupleNamedTarget(compr.targetExpression, addedSymbols);
|
1661
1661
|
this._addInferredTypeAssignmentForVariable(compr.targetExpression, compr);
|
1662
1662
|
// Async for is not allowed outside of an async function
|
@@ -1666,7 +1666,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1666
1666
|
// Allow if it's within a generator expression. Execution of
|
1667
1667
|
// generator expressions is deferred and therefore can be
|
1668
1668
|
// run within the context of an async function later.
|
1669
|
-
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) ===
|
1669
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 34 /* ParseNodeType.List */) {
|
1670
1670
|
this._addSyntaxError(localize_1.LocMessage.asyncNotInAsyncFunction(), compr.asyncToken);
|
1671
1671
|
}
|
1672
1672
|
}
|
@@ -1675,7 +1675,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1675
1675
|
}
|
1676
1676
|
for (let i = 0; i < node.forIfNodes.length; i++) {
|
1677
1677
|
const compr = node.forIfNodes[i];
|
1678
|
-
if (compr.nodeType ===
|
1678
|
+
if (compr.nodeType === 12 /* ParseNodeType.ComprehensionFor */) {
|
1679
1679
|
// We already walked the first iterable expression above,
|
1680
1680
|
// so skip it here.
|
1681
1681
|
if (i !== 0) {
|
@@ -1843,15 +1843,15 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1843
1843
|
this._currentScope.setSlotsNames(slotNameNodes.map((node) => node.strings[0].value));
|
1844
1844
|
}
|
1845
1845
|
}
|
1846
|
-
|
1846
|
+
_isInComprehension(node, ignoreOutermostIterable = false) {
|
1847
1847
|
let curNode = node;
|
1848
1848
|
let prevNode;
|
1849
1849
|
let prevPrevNode;
|
1850
1850
|
while (curNode) {
|
1851
|
-
if (curNode.nodeType ===
|
1851
|
+
if (curNode.nodeType === 11 /* ParseNodeType.Comprehension */) {
|
1852
1852
|
if (ignoreOutermostIterable && curNode.forIfNodes.length > 0) {
|
1853
1853
|
const outermostCompr = curNode.forIfNodes[0];
|
1854
|
-
if (prevNode === outermostCompr && outermostCompr.nodeType ===
|
1854
|
+
if (prevNode === outermostCompr && outermostCompr.nodeType === 12 /* ParseNodeType.ComprehensionFor */) {
|
1855
1855
|
if (prevPrevNode === outermostCompr.iterableExpression) {
|
1856
1856
|
return false;
|
1857
1857
|
}
|
@@ -2304,7 +2304,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2304
2304
|
switch (expression.nodeType) {
|
2305
2305
|
case 38 /* ParseNodeType.Name */:
|
2306
2306
|
case 35 /* ParseNodeType.MemberAccess */:
|
2307
|
-
case
|
2307
|
+
case 27 /* ParseNodeType.Index */: {
|
2308
2308
|
if (filterForNeverNarrowing) {
|
2309
2309
|
// Never narrowing doesn't support member access or index
|
2310
2310
|
// expressions.
|
@@ -2332,7 +2332,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2332
2332
|
// If the expression is an index expression with a supported
|
2333
2333
|
// subscript, add its baseExpression to the expression list because
|
2334
2334
|
// that expression can be narrowed.
|
2335
|
-
if (expression.nodeType ===
|
2335
|
+
if (expression.nodeType === 27 /* ParseNodeType.Index */ &&
|
2336
2336
|
expression.items.length === 1 &&
|
2337
2337
|
!expression.trailingComma &&
|
2338
2338
|
expression.items[0].argumentCategory === 0 /* ArgumentCategory.Simple */) {
|
@@ -2357,7 +2357,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2357
2357
|
if (isOrIsNotOperator || equalsOrNotEqualsOperator) {
|
2358
2358
|
// Look for "X is None", "X is not None", "X == None", "X != None".
|
2359
2359
|
// These are commonly-used patterns used in control flow.
|
2360
|
-
if (expression.rightExpression.nodeType ===
|
2360
|
+
if (expression.rightExpression.nodeType === 14 /* ParseNodeType.Constant */ &&
|
2361
2361
|
expression.rightExpression.constType === 26 /* KeywordType.None */) {
|
2362
2362
|
return this._isNarrowingExpression(expression.leftExpression, expressionList, filterForNeverNarrowing,
|
2363
2363
|
/* isComplexExpression */ true);
|
@@ -2456,7 +2456,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2456
2456
|
}
|
2457
2457
|
break;
|
2458
2458
|
}
|
2459
|
-
case
|
2459
|
+
case 27 /* ParseNodeType.Index */: {
|
2460
2460
|
this._createFlowAssignment(target, unbound);
|
2461
2461
|
if (walkTargets) {
|
2462
2462
|
this.walk(target);
|
@@ -2483,7 +2483,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2483
2483
|
}
|
2484
2484
|
break;
|
2485
2485
|
}
|
2486
|
-
case
|
2486
|
+
case 34 /* ParseNodeType.List */: {
|
2487
2487
|
target.entries.forEach((entry) => {
|
2488
2488
|
this._createAssignmentTargetFlowNodes(entry, walkTargets, unbound);
|
2489
2489
|
});
|
@@ -2684,7 +2684,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2684
2684
|
});
|
2685
2685
|
break;
|
2686
2686
|
}
|
2687
|
-
case
|
2687
|
+
case 34 /* ParseNodeType.List */: {
|
2688
2688
|
target.entries.forEach((expr) => {
|
2689
2689
|
this._bindPossibleTupleNamedTarget(expr, addedSymbols);
|
2690
2690
|
});
|
@@ -2831,7 +2831,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2831
2831
|
this._addInferredTypeAssignmentForVariable(target.expression, source);
|
2832
2832
|
break;
|
2833
2833
|
}
|
2834
|
-
case
|
2834
|
+
case 34 /* ParseNodeType.List */: {
|
2835
2835
|
target.entries.forEach((entry) => {
|
2836
2836
|
this._addInferredTypeAssignmentForVariable(entry, source);
|
2837
2837
|
});
|
@@ -2905,14 +2905,14 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2905
2905
|
symbolWithScope.symbol.setIsInstanceMember();
|
2906
2906
|
}
|
2907
2907
|
// Look for an 'InitVar' either by itself or wrapped in an 'Annotated'.
|
2908
|
-
if (typeAnnotation.nodeType ===
|
2908
|
+
if (typeAnnotation.nodeType === 27 /* ParseNodeType.Index */) {
|
2909
2909
|
if (this._isDataclassesAnnotation(typeAnnotation.baseExpression, 'InitVar')) {
|
2910
2910
|
symbolWithScope.symbol.setIsInitVar();
|
2911
2911
|
}
|
2912
2912
|
else if (this._isTypingAnnotation(typeAnnotation.baseExpression, 'Annotated') &&
|
2913
2913
|
typeAnnotation.items.length > 0) {
|
2914
2914
|
const item0Expr = typeAnnotation.items[0].valueExpression;
|
2915
|
-
if (item0Expr.nodeType ===
|
2915
|
+
if (item0Expr.nodeType === 27 /* ParseNodeType.Index */ &&
|
2916
2916
|
this._isDataclassesAnnotation(item0Expr.baseExpression, 'InitVar')) {
|
2917
2917
|
symbolWithScope.symbol.setIsInitVar();
|
2918
2918
|
}
|
@@ -3031,7 +3031,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
3031
3031
|
if (this._isTypingAnnotation(typeAnnotation, 'Final')) {
|
3032
3032
|
isFinal = true;
|
3033
3033
|
}
|
3034
|
-
else if (typeAnnotation.nodeType ===
|
3034
|
+
else if (typeAnnotation.nodeType === 27 /* ParseNodeType.Index */ && typeAnnotation.items.length === 1) {
|
3035
3035
|
// Recursively call to see if the base expression is "Final".
|
3036
3036
|
const finalInfo = this._isAnnotationFinal(typeAnnotation.baseExpression);
|
3037
3037
|
if (finalInfo.isFinal &&
|
@@ -3056,7 +3056,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
3056
3056
|
if (typeAnnotation.nodeType === 48 /* ParseNodeType.StringList */ && typeAnnotation.typeAnnotation) {
|
3057
3057
|
typeAnnotation = typeAnnotation.typeAnnotation;
|
3058
3058
|
}
|
3059
|
-
if (typeAnnotation.nodeType ===
|
3059
|
+
if (typeAnnotation.nodeType === 27 /* ParseNodeType.Index */ &&
|
3060
3060
|
typeAnnotation.items.length > 0 &&
|
3061
3061
|
this._isTypingAnnotation(typeAnnotation.baseExpression, 'Annotated')) {
|
3062
3062
|
typeAnnotation = typeAnnotation.items[0].valueExpression;
|
@@ -3065,7 +3065,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
3065
3065
|
isClassVar = true;
|
3066
3066
|
break;
|
3067
3067
|
}
|
3068
|
-
else if (typeAnnotation.nodeType ===
|
3068
|
+
else if (typeAnnotation.nodeType === 27 /* ParseNodeType.Index */ && typeAnnotation.items.length === 1) {
|
3069
3069
|
// Recursively call to see if the base expression is "ClassVar".
|
3070
3070
|
const finalInfo = this._isAnnotationClassVar(typeAnnotation.baseExpression);
|
3071
3071
|
if (finalInfo.isClassVar &&
|