@zzzen/pyright-internal 1.2.0-dev.20230423 → 1.2.0-dev.20230507
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/analyzerFileInfo.d.ts +4 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +7 -4
- package/dist/analyzer/backgroundAnalysisProgram.js +22 -7
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +12 -7
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +58 -7
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +6 -0
- package/dist/analyzer/constructors.js +456 -0
- package/dist/analyzer/constructors.js.map +1 -0
- package/dist/analyzer/dataClasses.js +89 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +6 -1
- package/dist/analyzer/declarationUtils.js +10 -8
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/enums.js +54 -8
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +15 -15
- package/dist/analyzer/importResolver.js +477 -477
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +2 -2
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +1 -1
- package/dist/analyzer/namedTuples.js +30 -42
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +16 -0
- package/dist/analyzer/operations.js +749 -0
- package/dist/analyzer/operations.js.map +1 -0
- package/dist/analyzer/packageTypeReport.d.ts +2 -1
- package/dist/analyzer/packageTypeReport.js +2 -1
- package/dist/analyzer/packageTypeReport.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.d.ts +1 -1
- package/dist/analyzer/packageTypeVerifier.js +27 -13
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +4 -2
- package/dist/analyzer/parseTreeUtils.js +32 -1
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +16 -0
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +29 -53
- package/dist/analyzer/program.js +1050 -1649
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +1 -1
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +14 -35
- package/dist/analyzer/service.js +92 -121
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +14 -49
- package/dist/analyzer/sourceFile.js +271 -291
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -2
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +417 -1570
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +44 -9
- package/dist/analyzer/typeEvaluatorTypes.js +33 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +5 -9
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +3 -0
- package/dist/analyzer/typeUtils.js +66 -9
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +5 -5
- package/dist/analyzer/typeVarContext.js +7 -0
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typedDicts.js +2 -2
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +4 -2
- package/dist/analyzer/types.js +7 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +10 -11
- package/dist/backgroundAnalysisBase.js +87 -87
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +8 -8
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/commands/quickActionCommand.js +4 -1
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/common/cancellationUtils.d.ts +1 -1
- package/dist/common/cancellationUtils.js +9 -9
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -2
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +2 -2
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/console.d.ts +5 -9
- package/dist/common/console.js +46 -33
- package/dist/common/console.js.map +1 -1
- package/dist/common/deferred.js +10 -10
- package/dist/common/deferred.js.map +1 -1
- package/dist/common/extensibility.d.ts +27 -5
- package/dist/common/extensibility.js +1 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +5 -5
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fileSystem.d.ts +12 -10
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fullAccessHost.d.ts +3 -3
- package/dist/common/fullAccessHost.js +6 -6
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/pathUtils.d.ts +13 -13
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/realFileSystem.js +12 -7
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/uriParser.d.ts +2 -2
- package/dist/common/uriParser.js +3 -3
- package/dist/common/uriParser.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +5 -5
- package/dist/common/workspaceEditUtils.js +7 -4
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +32 -31
- package/dist/languageServerBase.js +278 -345
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +0 -1
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +16 -12
- package/dist/languageService/callHierarchyProvider.js +125 -41
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +10 -13
- package/dist/languageService/completionProvider.js +21 -10
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.d.ts +23 -9
- package/dist/languageService/definitionProvider.js +116 -91
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.d.ts +8 -3
- package/dist/languageService/documentHighlightProvider.js +17 -6
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +6 -7
- package/dist/languageService/documentSymbolCollector.js +21 -11
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +5 -3
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +4 -3
- package/dist/languageService/hoverProvider.js +30 -36
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/navigationUtils.d.ts +6 -0
- package/dist/languageService/navigationUtils.js +28 -0
- package/dist/languageService/navigationUtils.js.map +1 -0
- package/dist/languageService/quickActions.d.ts +2 -2
- package/dist/languageService/quickActions.js +12 -1
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +13 -12
- package/dist/languageService/referencesProvider.js +102 -16
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.d.ts +17 -0
- package/dist/languageService/renameProvider.js +143 -0
- package/dist/languageService/renameProvider.js.map +1 -0
- package/dist/languageService/signatureHelpProvider.d.ts +19 -23
- package/dist/languageService/signatureHelpProvider.js +111 -18
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +17 -14
- package/dist/localization/localize.js +4 -6
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +5 -6
- package/dist/parser/characterStream.d.ts +3 -3
- package/dist/parser/characterStream.js +12 -12
- package/dist/parser/characterStream.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -1
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +57 -54
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +1 -1
- package/dist/pyrightFileSystem.js +21 -21
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +6 -6
- package/dist/readonlyAugmentedFileSystem.js +28 -28
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +6 -6
- package/dist/server.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +1 -1
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +1 -1
- package/dist/tests/documentSymbolCollector.test.js +3 -3
- package/dist/tests/documentSymbolCollector.test.js.map +1 -1
- package/dist/tests/fourslash/fourslash.d.ts +4 -4
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js +1 -1
- package/dist/tests/fourslash/missingTypeStub.codeAction.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -3
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +11 -11
- package/dist/tests/harness/fourslash/testState.js +123 -113
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +8 -8
- package/dist/tests/harness/vfs/filesystem.js +68 -68
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +34 -0
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +5 -1
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +2 -2
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/testStateUtils.d.ts +2 -2
- package/dist/tests/testStateUtils.js +39 -9
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +8 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +13 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +2 -2
- package/dist/tests/typeEvaluator4.test.js +9 -1
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +4 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +84 -0
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/package.json +4 -4
- package/dist/languageService/indentationUtils.d.ts +0 -16
- package/dist/languageService/indentationUtils.js +0 -727
- package/dist/languageService/indentationUtils.js.map +0 -1
- package/dist/languageService/insertionPointUtils.d.ts +0 -9
- package/dist/languageService/insertionPointUtils.js +0 -132
- package/dist/languageService/insertionPointUtils.js.map +0 -1
- package/dist/languageService/renameModuleProvider.d.ts +0 -65
- package/dist/languageService/renameModuleProvider.js +0 -939
- package/dist/languageService/renameModuleProvider.js.map +0 -1
- package/dist/tests/indentationUtils.ptvs.test.d.ts +0 -1
- package/dist/tests/indentationUtils.ptvs.test.js +0 -324
- package/dist/tests/indentationUtils.ptvs.test.js.map +0 -1
- package/dist/tests/indentationUtils.reindent.test.d.ts +0 -1
- package/dist/tests/indentationUtils.reindent.test.js +0 -372
- package/dist/tests/indentationUtils.reindent.test.js.map +0 -1
- package/dist/tests/indentationUtils.test.d.ts +0 -1
- package/dist/tests/indentationUtils.test.js +0 -502
- package/dist/tests/indentationUtils.test.js.map +0 -1
- package/dist/tests/insertionPointUtils.test.d.ts +0 -1
- package/dist/tests/insertionPointUtils.test.js +0 -154
- package/dist/tests/insertionPointUtils.test.js.map +0 -1
- package/dist/tests/moveSymbol.importAdder.test.d.ts +0 -1
- package/dist/tests/moveSymbol.importAdder.test.js +0 -298
- package/dist/tests/moveSymbol.importAdder.test.js.map +0 -1
- package/dist/tests/moveSymbol.insertion.test.d.ts +0 -1
- package/dist/tests/moveSymbol.insertion.test.js +0 -537
- package/dist/tests/moveSymbol.insertion.test.js.map +0 -1
- package/dist/tests/moveSymbol.misc.test.d.ts +0 -1
- package/dist/tests/moveSymbol.misc.test.js +0 -169
- package/dist/tests/moveSymbol.misc.test.js.map +0 -1
- package/dist/tests/moveSymbol.updateReference.test.d.ts +0 -1
- package/dist/tests/moveSymbol.updateReference.test.js +0 -1057
- package/dist/tests/moveSymbol.updateReference.test.js.map +0 -1
- package/dist/tests/renameModule.folder.test.d.ts +0 -1
- package/dist/tests/renameModule.folder.test.js +0 -229
- package/dist/tests/renameModule.folder.test.js.map +0 -1
- package/dist/tests/renameModule.fromImports.test.d.ts +0 -1
- package/dist/tests/renameModule.fromImports.test.js +0 -790
- package/dist/tests/renameModule.fromImports.test.js.map +0 -1
- package/dist/tests/renameModule.imports.test.d.ts +0 -1
- package/dist/tests/renameModule.imports.test.js +0 -380
- package/dist/tests/renameModule.imports.test.js.map +0 -1
- package/dist/tests/renameModule.misc.test.d.ts +0 -1
- package/dist/tests/renameModule.misc.test.js +0 -615
- package/dist/tests/renameModule.misc.test.js.map +0 -1
- package/dist/tests/renameModule.relativePath.test.d.ts +0 -1
- package/dist/tests/renameModule.relativePath.test.js +0 -231
- package/dist/tests/renameModule.relativePath.test.js.map +0 -1
- package/dist/tests/renameModuleTestUtils.d.ts +0 -4
- package/dist/tests/renameModuleTestUtils.js +0 -76
- package/dist/tests/renameModuleTestUtils.js.map +0 -1
package/dist/analyzer/checker.js
CHANGED
@@ -510,16 +510,17 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
510
510
|
return true;
|
511
511
|
}
|
512
512
|
visitListComprehensionIf(node) {
|
513
|
+
this._validateConditionalIsBool(node.testExpression);
|
513
514
|
this._reportUnnecessaryConditionExpression(node.testExpression);
|
514
515
|
return true;
|
515
516
|
}
|
516
517
|
visitIf(node) {
|
517
|
-
this.
|
518
|
+
this._validateConditionalIsBool(node.testExpression);
|
518
519
|
this._reportUnnecessaryConditionExpression(node.testExpression);
|
519
520
|
return true;
|
520
521
|
}
|
521
522
|
visitWhile(node) {
|
522
|
-
this.
|
523
|
+
this._validateConditionalIsBool(node.testExpression);
|
523
524
|
this._reportUnnecessaryConditionExpression(node.testExpression);
|
524
525
|
return true;
|
525
526
|
}
|
@@ -694,6 +695,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
694
695
|
if (node.exceptionExpression) {
|
695
696
|
this._evaluator.getType(node.exceptionExpression);
|
696
697
|
}
|
698
|
+
this._validateConditionalIsBool(node.testExpression);
|
697
699
|
// Specifically look for a common programming error where the two arguments
|
698
700
|
// to an assert are enclosed in parens and interpreted as a two-element tuple.
|
699
701
|
// assert (x > 3, "bad value x")
|
@@ -776,6 +778,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
776
778
|
return true;
|
777
779
|
}
|
778
780
|
visitBinaryOperation(node) {
|
781
|
+
if (node.operator === 36 /* And */ || node.operator === 37 /* Or */) {
|
782
|
+
this._validateConditionalIsBool(node.leftExpression);
|
783
|
+
this._validateConditionalIsBool(node.rightExpression);
|
784
|
+
}
|
779
785
|
if (node.operator === 12 /* Equals */ || node.operator === 28 /* NotEquals */) {
|
780
786
|
// Don't apply this rule if it's within an assert.
|
781
787
|
if (!ParseTreeUtils.isWithinAssertExpression(node)) {
|
@@ -810,11 +816,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
810
816
|
return true;
|
811
817
|
}
|
812
818
|
visitUnaryOperation(node) {
|
819
|
+
if (node.operator === 38 /* Not */) {
|
820
|
+
this._validateConditionalIsBool(node.expression);
|
821
|
+
}
|
813
822
|
this._evaluator.getType(node);
|
814
823
|
return true;
|
815
824
|
}
|
816
825
|
visitTernary(node) {
|
817
826
|
this._evaluator.getType(node);
|
827
|
+
this._validateConditionalIsBool(node.testExpression);
|
818
828
|
this._reportUnnecessaryConditionExpression(node.testExpression);
|
819
829
|
return true;
|
820
830
|
}
|
@@ -989,7 +999,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
989
999
|
}
|
990
1000
|
visitCase(node) {
|
991
1001
|
if (node.guardExpression) {
|
992
|
-
this.
|
1002
|
+
this._validateConditionalIsBool(node.guardExpression);
|
993
1003
|
}
|
994
1004
|
this._evaluator.evaluateTypesForStatement(node.pattern);
|
995
1005
|
return true;
|
@@ -1036,6 +1046,44 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1036
1046
|
importName: importResult.importName,
|
1037
1047
|
}), node);
|
1038
1048
|
}
|
1049
|
+
_validateConditionalIsBool(node) {
|
1050
|
+
const operandType = this._evaluator.getType(node);
|
1051
|
+
if (!operandType) {
|
1052
|
+
return;
|
1053
|
+
}
|
1054
|
+
let isTypeBool = true;
|
1055
|
+
const diag = new diagnostic_1.DiagnosticAddendum();
|
1056
|
+
this._evaluator.mapSubtypesExpandTypeVars(operandType, /* conditionFilter */ undefined, (expandedSubtype) => {
|
1057
|
+
if ((0, types_1.isAnyOrUnknown)(expandedSubtype)) {
|
1058
|
+
return undefined;
|
1059
|
+
}
|
1060
|
+
// If it's a bool (the common case), we're good.
|
1061
|
+
if ((0, types_1.isClassInstance)(expandedSubtype) && types_1.ClassType.isBuiltIn(expandedSubtype, 'bool')) {
|
1062
|
+
return undefined;
|
1063
|
+
}
|
1064
|
+
// Invoke the __bool__ method on the type.
|
1065
|
+
const boolReturnType = this._evaluator.getTypeOfMagicMethodReturn(expandedSubtype, [], '__bool__', node,
|
1066
|
+
/* inferenceContext */ undefined);
|
1067
|
+
if (!boolReturnType || (0, types_1.isAnyOrUnknown)(boolReturnType)) {
|
1068
|
+
return undefined;
|
1069
|
+
}
|
1070
|
+
if ((0, types_1.isClassInstance)(boolReturnType) && types_1.ClassType.isBuiltIn(boolReturnType, 'bool')) {
|
1071
|
+
return undefined;
|
1072
|
+
}
|
1073
|
+
// All other types are problematic.
|
1074
|
+
isTypeBool = false;
|
1075
|
+
diag.addMessage(localize_1.Localizer.DiagnosticAddendum.conditionalRequiresBool().format({
|
1076
|
+
operandType: this._evaluator.printType(expandedSubtype),
|
1077
|
+
boolReturnType: this._evaluator.printType(boolReturnType),
|
1078
|
+
}));
|
1079
|
+
return undefined;
|
1080
|
+
});
|
1081
|
+
if (!isTypeBool) {
|
1082
|
+
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.conditionalOperandInvalid().format({
|
1083
|
+
type: this._evaluator.printType(operandType),
|
1084
|
+
}) + diag.getString(), node);
|
1085
|
+
}
|
1086
|
+
}
|
1039
1087
|
_reportUnnecessaryConditionExpression(expression) {
|
1040
1088
|
if (expression.nodeType === 7 /* BinaryOperation */) {
|
1041
1089
|
if (expression.operator === 36 /* And */ || expression.operator === 37 /* Or */) {
|
@@ -1385,7 +1433,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1385
1433
|
``;
|
1386
1434
|
if (nameType && (0, types_1.isTypeVar)(nameType) && !nameType.details.isSynthesizedSelf) {
|
1387
1435
|
// Does this name refer to a TypeVar that is scoped to this function?
|
1388
|
-
if (nameType.scopeId ===
|
1436
|
+
if (nameType.scopeId === ParseTreeUtils.getScopeIdForNode(node)) {
|
1389
1437
|
// We exempt constrained TypeVars, bound TypeVars that are type arguments of
|
1390
1438
|
// other types, and ParamSpecs. There are legitimate uses for singleton
|
1391
1439
|
// instances in these particular cases.
|
@@ -2511,6 +2559,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2511
2559
|
let isSupported = true;
|
2512
2560
|
(0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
|
2513
2561
|
subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
2562
|
+
subtype = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(subtype);
|
2514
2563
|
switch (subtype.category) {
|
2515
2564
|
case 2 /* Any */:
|
2516
2565
|
case 1 /* Unknown */:
|
@@ -2741,7 +2790,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2741
2790
|
const stdlibPath = this._importResolver.getTypeshedStdLibPath(this._fileInfo.executionEnvironment);
|
2742
2791
|
if (stdlibPath && this._importResolver.isStdlibModule(module, this._fileInfo.executionEnvironment)) {
|
2743
2792
|
// If the definition for this name is in 'user' module, it is overwriting the stdlib module.
|
2744
|
-
const definitions = definitionProvider_1.DefinitionProvider.getDefinitionsForNode(this._sourceMapper, namePartNodes[namePartNodes.length - 1],
|
2793
|
+
const definitions = definitionProvider_1.DefinitionProvider.getDefinitionsForNode(this._sourceMapper, this._evaluator, namePartNodes[namePartNodes.length - 1], namePartNodes[namePartNodes.length - 1].start, vscode_languageserver_1.CancellationToken.None);
|
2745
2794
|
const paths = definitions ? definitions.map((d) => d.path) : [];
|
2746
2795
|
paths.forEach((p) => {
|
2747
2796
|
if (!p.startsWith(stdlibPath) && !(0, sourceMapper_1.isStubFile)(p) && this._sourceMapper.isUserCode(p)) {
|
@@ -3258,8 +3307,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3258
3307
|
if (this._fileInfo.diagnosticRuleSet.reportUninitializedInstanceVariable === 'none') {
|
3259
3308
|
return;
|
3260
3309
|
}
|
3261
|
-
// Protocol classes are exempted from this check
|
3262
|
-
|
3310
|
+
// Protocol classes and ABCs are exempted from this check unless they are
|
3311
|
+
// marked @final.
|
3312
|
+
if (types_1.ClassType.isProtocolClass(classType) ||
|
3313
|
+
(types_1.ClassType.supportsAbstractMethods(classType) && !types_1.ClassType.isFinal(classType))) {
|
3263
3314
|
return;
|
3264
3315
|
}
|
3265
3316
|
classType.details.fields.forEach((localSymbol, name) => {
|