@zzzen/pyright-internal 1.2.0-dev.20230507 → 1.2.0-dev.20230521
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 +1 -0
- package/dist/analyzer/analyzerFileInfo.js +4 -3
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +17 -15
- package/dist/analyzer/backgroundAnalysisProgram.js +43 -53
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.d.ts +0 -2
- package/dist/analyzer/binder.js +2 -20
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -1
- package/dist/analyzer/checker.js +97 -29
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +14 -15
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +5 -1
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.js +248 -189
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +5 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +1 -0
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +1 -1
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/enums.js +8 -0
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +4 -4
- package/dist/analyzer/importResolver.js +93 -69
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importResult.d.ts +2 -2
- package/dist/analyzer/importStatementUtils.js +2 -2
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.js +2 -5
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +1 -1
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +2 -34
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.js +2 -2
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.js +1 -0
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +18 -34
- package/dist/analyzer/program.js +57 -259
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +4 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +8 -16
- package/dist/analyzer/service.js +33 -47
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +1 -15
- package/dist/analyzer/sourceFile.js +14 -96
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.js +1 -1
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/symbol.d.ts +3 -1
- package/dist/analyzer/symbol.js +5 -0
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +2 -2
- package/dist/analyzer/typeEvaluator.js +495 -196
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -2
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +1 -0
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +3 -3
- package/dist/analyzer/typePrinter.js +255 -101
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +12 -7
- package/dist/analyzer/typeUtils.js +174 -49
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +1 -2
- package/dist/analyzer/typeVarContext.js +16 -34
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typedDicts.js +138 -41
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +10 -3
- package/dist/analyzer/types.js +32 -16
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +25 -19
- package/dist/backgroundAnalysisBase.js +161 -115
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +1 -1
- package/dist/backgroundThreadBase.js +1 -1
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +3 -4
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/configOptions.js +1 -1
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/extensibility.d.ts +26 -5
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/logTracker.d.ts +2 -0
- package/dist/common/logTracker.js +8 -1
- package/dist/common/logTracker.js.map +1 -1
- package/dist/common/lspUtils.d.ts +4 -1
- package/dist/common/lspUtils.js +38 -1
- package/dist/common/lspUtils.js.map +1 -1
- package/dist/common/pythonVersion.d.ts +2 -1
- package/dist/common/pythonVersion.js +1 -0
- package/dist/common/pythonVersion.js.map +1 -1
- package/dist/common/textRange.js +1 -1
- package/dist/common/textRange.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +3 -3
- package/dist/common/workspaceEditUtils.js +15 -17
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +2 -5
- package/dist/languageServerBase.js +35 -62
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +51 -52
- package/dist/languageService/autoImporter.js +126 -211
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +8 -33
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +42 -81
- package/dist/languageService/completionProvider.js +608 -841
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +2 -2
- package/dist/languageService/documentSymbolCollector.js +40 -30
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.d.ts +13 -35
- package/dist/languageService/documentSymbolProvider.js +52 -264
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +1 -3
- package/dist/languageService/hoverProvider.js +11 -97
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +3 -3
- package/dist/languageService/referencesProvider.js +6 -8
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.d.ts +0 -1
- package/dist/languageService/renameProvider.js +2 -6
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +1 -1
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +23 -0
- package/dist/languageService/symbolIndexer.js +105 -0
- package/dist/languageService/symbolIndexer.js.map +1 -0
- package/dist/languageService/tooltipUtils.d.ts +8 -1
- package/dist/languageService/tooltipUtils.js +102 -1
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.d.ts +17 -0
- package/dist/languageService/workspaceSymbolProvider.js +133 -0
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -0
- package/dist/localization/localize.d.ts +38 -4
- package/dist/localization/localize.js +21 -4
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +23 -6
- package/dist/parser/parseNodes.d.ts +8 -8
- package/dist/parser/parseNodes.js +20 -10
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +3 -3
- package/dist/parser/parser.js +136 -159
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringTokenUtils.d.ts +3 -13
- package/dist/parser/stringTokenUtils.js +8 -181
- package/dist/parser/stringTokenUtils.js.map +1 -1
- package/dist/parser/tokenizer.d.ts +3 -0
- package/dist/parser/tokenizer.js +211 -24
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/parser/tokenizerTypes.d.ts +31 -1
- package/dist/parser/tokenizerTypes.js +51 -1
- package/dist/parser/tokenizerTypes.js.map +1 -1
- package/dist/pyright.js +26 -4
- package/dist/pyright.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.js +1 -1
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +15 -20
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +14 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/completions.test.js +11 -236
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/docStringConversion.test.js +36 -2
- package/dist/tests/docStringConversion.test.js.map +1 -1
- package/dist/tests/fourslash/completions.override2.fourslash.js +1 -16
- package/dist/tests/fourslash/completions.override2.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +14 -8
- package/dist/tests/harness/fourslash/testState.js +27 -37
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/importResolver.test.js +84 -4
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/textRange.test.js +45 -0
- package/dist/tests/textRange.test.js.map +1 -0
- package/dist/tests/tokenizer.test.js +272 -58
- package/dist/tests/tokenizer.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +16 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +14 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +7 -2
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +29 -9
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +15 -10
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/workspaceFactory.js +3 -5
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
- package/dist/languageService/importAdder.d.ts +0 -40
- package/dist/languageService/importAdder.js +0 -388
- package/dist/languageService/importAdder.js.map +0 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.d.ts +0 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.js +0 -81
- package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +0 -1
- package/dist/tests/importAdder.test.js +0 -1325
- package/dist/tests/importAdder.test.js.map +0 -1
- /package/dist/tests/{importAdder.test.d.ts → textRange.test.d.ts} +0 -0
@@ -14,6 +14,7 @@
|
|
14
14
|
*/
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
16
16
|
exports.createFunctionFromConstructor = exports.validateConstructorArguments = void 0;
|
17
|
+
const collectionUtils_1 = require("../common/collectionUtils");
|
17
18
|
const diagnosticRules_1 = require("../common/diagnosticRules");
|
18
19
|
const localize_1 = require("../localization/localize");
|
19
20
|
const analyzerNodeInfo_1 = require("./analyzerNodeInfo");
|
@@ -27,7 +28,6 @@ const types_1 = require("./types");
|
|
27
28
|
// If successful, it returns the resulting (specialized) object type that
|
28
29
|
// is allocated by the constructor. If unsuccessful, it reports diagnostics.
|
29
30
|
function validateConstructorArguments(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext) {
|
30
|
-
var _a;
|
31
31
|
// If there a custom `__call__` method on the metaclass, assume that it
|
32
32
|
// overrides the normal `type.__call__` logic and don't perform the usual
|
33
33
|
// __new__ and __init__ validation.
|
@@ -36,170 +36,109 @@ function validateConstructorArguments(evaluator, errorNode, argList, type, skipU
|
|
36
36
|
return metaclassResult;
|
37
37
|
}
|
38
38
|
// Determine whether the class overrides the object.__new__ method.
|
39
|
-
const
|
39
|
+
const newMethodTypeResult = evaluator.getTypeOfClassMemberName(errorNode, type,
|
40
40
|
/* isAccessedThroughObject */ false, '__new__', { method: 'get' },
|
41
41
|
/* diag */ undefined, 1 /* AccessClassMembersOnly */ |
|
42
42
|
4 /* SkipObjectBaseClass */ |
|
43
43
|
16 /* TreatConstructorAsClassMethod */, type);
|
44
|
-
// Determine whether the class overrides the object.__init__ method.
|
45
|
-
const initMethodInfo = evaluator.getTypeOfObjectMember(errorNode, types_1.ClassType.cloneAsInstance(type), '__init__', { method: 'get' },
|
46
|
-
/* diag */ undefined, 4 /* SkipObjectBaseClass */ | 64 /* SkipAttributeAccessOverride */);
|
47
44
|
let returnType;
|
48
|
-
let
|
45
|
+
let validatedArgExpressions = false;
|
49
46
|
let argumentErrors = false;
|
50
47
|
let isTypeIncomplete = false;
|
51
48
|
const overloadsUsedForCall = [];
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
49
|
+
let newMethodReturnType;
|
50
|
+
const useConstructorTransform = (0, constructorTransform_1.hasConstructorTransform)(type);
|
51
|
+
// If there is a constructor transform, evaluate all arguments speculatively
|
52
|
+
// so we can later re-evaluate them in the context of the transform.
|
53
|
+
evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => {
|
54
|
+
var _a;
|
55
|
+
// Validate __new__ if it is present.
|
56
|
+
if (newMethodTypeResult) {
|
57
|
+
// Use speculative mode for arg expressions because we don't know whether
|
58
|
+
// we'll need to re-evaluate these expressions later for __init__.
|
59
|
+
const newCallResult = validateNewMethod(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, newMethodTypeResult,
|
60
|
+
/* useSpeculativeModeForArgs */ true);
|
61
|
+
if (newCallResult.argumentErrors) {
|
62
|
+
argumentErrors = true;
|
63
|
+
}
|
64
|
+
else {
|
65
|
+
(0, collectionUtils_1.appendArray)(overloadsUsedForCall, newCallResult.overloadsUsedForCall);
|
66
|
+
}
|
67
|
+
if (newCallResult.isTypeIncomplete) {
|
68
|
+
isTypeIncomplete = true;
|
69
|
+
}
|
70
|
+
newMethodReturnType = newCallResult.returnType;
|
58
71
|
}
|
59
|
-
|
60
|
-
|
72
|
+
if (!newMethodReturnType) {
|
73
|
+
newMethodReturnType = types_1.ClassType.cloneAsInstance(type);
|
61
74
|
}
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
// more specific type annotations, and we want to evaluate the arguments
|
68
|
-
// in the context of these types. The __new__ method often uses generic
|
69
|
-
// vargs and kwargs.
|
70
|
-
const initMethodType = initMethodInfo === null || initMethodInfo === void 0 ? void 0 : initMethodInfo.type;
|
71
|
-
if (initMethodType && !shouldSkipConstructorCheck(initMethodType)) {
|
72
|
-
// If there is an expected type, analyze the constructor call
|
73
|
-
// for each of the subtypes that comprise the expected type. If
|
74
|
-
// one or more analyzes with no errors, use those results.
|
75
|
-
if (inferenceContext) {
|
76
|
-
const expectedCallResult = validateConstructorMethodWithContext(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, initMethodType);
|
77
|
-
if (expectedCallResult && !expectedCallResult.argumentErrors) {
|
78
|
-
returnType = expectedCallResult.returnType;
|
79
|
-
if (expectedCallResult.isTypeIncomplete) {
|
80
|
-
isTypeIncomplete = true;
|
81
|
-
}
|
82
|
-
}
|
75
|
+
else if (!(0, types_1.isNever)(newMethodReturnType)) {
|
76
|
+
if (!(0, types_1.isClassInstance)(newMethodReturnType)) {
|
77
|
+
// If the __new__ method returns something other than an object or
|
78
|
+
// NoReturn, we'll ignore its return type.
|
79
|
+
newMethodReturnType = types_1.ClassType.cloneAsInstance(type);
|
83
80
|
}
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
81
|
+
}
|
82
|
+
let initMethodTypeResult;
|
83
|
+
// Validate __init__ if it's present. Skip if the __new__ method produced errors.
|
84
|
+
if (!argumentErrors &&
|
85
|
+
!(0, types_1.isNever)(newMethodReturnType) &&
|
86
|
+
!shouldSkipInitEvaluation(evaluator, type, newMethodReturnType)) {
|
87
|
+
// If the __new__ method returned the same type as the class it's constructing
|
88
|
+
// but didn't supply solved type arguments, we'll ignore its specialized return
|
89
|
+
// type and rely on the __init__ method to supply the type arguments instead.
|
90
|
+
let initMethodBindToType = newMethodReturnType;
|
91
|
+
if ((0, typeUtils_1.isPartlyUnknown)(initMethodBindToType)) {
|
92
|
+
initMethodBindToType = types_1.ClassType.cloneAsInstance(type);
|
93
|
+
}
|
94
|
+
// Determine whether the class overrides the object.__init__ method.
|
95
|
+
initMethodTypeResult = evaluator.getTypeOfObjectMember(errorNode, types_1.ClassType.cloneAsInstance(initMethodBindToType), '__init__', { method: 'get' },
|
96
|
+
/* diag */ undefined, 4 /* SkipObjectBaseClass */ | 64 /* SkipAttributeAccessOverride */);
|
97
|
+
// Validate __init__ if it's present.
|
98
|
+
if (initMethodTypeResult) {
|
99
|
+
const initCallResult = validateInitMethod(evaluator, errorNode, argList, initMethodBindToType, skipUnknownArgCheck, inferenceContext, initMethodTypeResult.type);
|
100
|
+
if (initCallResult.argumentErrors) {
|
102
101
|
argumentErrors = true;
|
103
102
|
}
|
104
103
|
else {
|
105
|
-
overloadsUsedForCall.push(...
|
104
|
+
overloadsUsedForCall.push(...initCallResult.overloadsUsedForCall);
|
106
105
|
}
|
107
|
-
|
108
|
-
|
109
|
-
skipUnknownArgCheck = true;
|
110
|
-
}
|
111
|
-
// Validate __new__
|
112
|
-
// Don't report errors for __new__ if __init__ already generated errors. They're
|
113
|
-
// probably going to be entirely redundant anyway.
|
114
|
-
if (!argumentErrors && newMethodInfo && !shouldSkipConstructorCheck(newMethodInfo.type)) {
|
115
|
-
const constructorMethodType = newMethodInfo.type;
|
116
|
-
let newReturnType;
|
117
|
-
// If there is an expected type that was not applied above when
|
118
|
-
// handling the __init__ method, try to apply it with the __new__ method.
|
119
|
-
if (inferenceContext && !returnType) {
|
120
|
-
const expectedCallResult = validateConstructorMethodWithContext(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, constructorMethodType);
|
121
|
-
if (expectedCallResult && !expectedCallResult.argumentErrors) {
|
122
|
-
newReturnType = expectedCallResult.returnType;
|
123
|
-
returnType = newReturnType;
|
124
|
-
if (expectedCallResult.isTypeIncomplete) {
|
125
|
-
isTypeIncomplete = true;
|
126
|
-
}
|
106
|
+
if (initCallResult.isTypeIncomplete) {
|
107
|
+
isTypeIncomplete = true;
|
127
108
|
}
|
109
|
+
returnType = initCallResult.returnType;
|
110
|
+
validatedArgExpressions = true;
|
111
|
+
skipUnknownArgCheck = true;
|
128
112
|
}
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
const callResult = evaluator.useSpeculativeMode((0, constructorTransform_1.hasConstructorTransform)(type) ? errorNode : undefined, () => {
|
137
|
-
return evaluator.validateCallArguments(errorNode, argList, newMethodInfo, typeVarContext, skipUnknownArgCheck);
|
138
|
-
});
|
139
|
-
if (callResult.isTypeIncomplete) {
|
140
|
-
isTypeIncomplete = true;
|
113
|
+
}
|
114
|
+
if (!validatedArgExpressions && newMethodTypeResult) {
|
115
|
+
// If we skipped the __init__ method and the __new__ method was evaluated only
|
116
|
+
// speculatively, evaluate it non-speculatively now so we can report errors.
|
117
|
+
if (!evaluator.isSpeculativeModeInUse(errorNode)) {
|
118
|
+
validateNewMethod(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, newMethodTypeResult,
|
119
|
+
/* useSpeculativeModeForArgs */ false);
|
141
120
|
}
|
121
|
+
validatedArgExpressions = true;
|
122
|
+
returnType = newMethodReturnType;
|
123
|
+
}
|
124
|
+
// If the class doesn't override object.__new__ or object.__init__, use the
|
125
|
+
// fallback constructor type evaluation for the `object` class.
|
126
|
+
if (!newMethodTypeResult && !initMethodTypeResult) {
|
127
|
+
const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext);
|
142
128
|
if (callResult.argumentErrors) {
|
143
129
|
argumentErrors = true;
|
144
130
|
}
|
145
|
-
else
|
146
|
-
|
147
|
-
if (overloadsUsedForCall.length === 0) {
|
148
|
-
overloadsUsedForCall.push(...callResult.overloadsUsedForCall);
|
149
|
-
}
|
150
|
-
// If the constructor returned an object whose type matches the class of
|
151
|
-
// the original type being constructed, use the return type in case it was
|
152
|
-
// specialized. If it doesn't match, we'll fall back on the assumption that
|
153
|
-
// the constructed type is an instance of the class type. We need to do this
|
154
|
-
// in cases where we're inferring the return type based on a call to
|
155
|
-
// super().__new__().
|
156
|
-
if (newReturnType) {
|
157
|
-
if ((0, types_1.isClassInstance)(newReturnType) && types_1.ClassType.isSameGenericClass(newReturnType, type)) {
|
158
|
-
// If the specialized return type derived from the __init__
|
159
|
-
// method is "better" than the return type provided by the
|
160
|
-
// __new__ method (where "better" means that the type arguments
|
161
|
-
// are all known), stick with the __init__ result.
|
162
|
-
if ((!(0, typeUtils_1.isPartlyUnknown)(newReturnType) && !(0, typeUtils_1.requiresSpecialization)(newReturnType)) ||
|
163
|
-
returnType === undefined) {
|
164
|
-
// Special-case the 'tuple' type specialization to use
|
165
|
-
// the homogenous arbitrary-length form.
|
166
|
-
if ((0, types_1.isClassInstance)(newReturnType) &&
|
167
|
-
types_1.ClassType.isTupleClass(newReturnType) &&
|
168
|
-
!newReturnType.tupleTypeArguments &&
|
169
|
-
newReturnType.typeArguments &&
|
170
|
-
newReturnType.typeArguments.length === 1) {
|
171
|
-
newReturnType = (0, typeUtils_1.specializeTupleClass)(newReturnType, [
|
172
|
-
{ type: newReturnType.typeArguments[0], isUnbounded: true },
|
173
|
-
]);
|
174
|
-
}
|
175
|
-
returnType = newReturnType;
|
176
|
-
}
|
177
|
-
}
|
178
|
-
else if (!returnType && !(0, types_1.isUnknown)(newReturnType)) {
|
179
|
-
returnType = newReturnType;
|
180
|
-
}
|
181
|
-
}
|
182
|
-
}
|
183
|
-
if (!returnType) {
|
184
|
-
returnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext);
|
131
|
+
else {
|
132
|
+
(0, collectionUtils_1.appendArray)(overloadsUsedForCall, callResult.overloadsUsedForCall);
|
185
133
|
}
|
186
|
-
|
187
|
-
|
134
|
+
if (callResult.isTypeIncomplete) {
|
135
|
+
isTypeIncomplete = true;
|
188
136
|
}
|
189
|
-
|
137
|
+
returnType = (_a = callResult.returnType) !== null && _a !== void 0 ? _a : types_1.UnknownType.create();
|
190
138
|
}
|
191
|
-
}
|
192
|
-
// If we weren't able to validate the args, analyze the expressions here
|
193
|
-
// to mark symbols referenced and report expression evaluation errors.
|
194
|
-
if (!validatedTypes) {
|
195
|
-
argList.forEach((arg) => {
|
196
|
-
if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) {
|
197
|
-
evaluator.getTypeOfExpression(arg.valueExpression);
|
198
|
-
}
|
199
|
-
});
|
200
|
-
}
|
139
|
+
});
|
201
140
|
// Apply a constructor transform if applicable.
|
202
|
-
if (!argumentErrors && returnType) {
|
141
|
+
if (!argumentErrors && returnType && useConstructorTransform) {
|
203
142
|
const transformed = (0, constructorTransform_1.applyConstructorTransform)(evaluator, errorNode, argList, type, {
|
204
143
|
argumentErrors,
|
205
144
|
returnType,
|
@@ -212,10 +151,153 @@ function validateConstructorArguments(evaluator, errorNode, argList, type, skipU
|
|
212
151
|
if (transformed.argumentErrors) {
|
213
152
|
argumentErrors = true;
|
214
153
|
}
|
154
|
+
validatedArgExpressions = true;
|
155
|
+
}
|
156
|
+
// If we weren't able to validate the args, analyze the expressions here
|
157
|
+
// to mark symbols referenced and report expression evaluation errors.
|
158
|
+
if (!validatedArgExpressions) {
|
159
|
+
argList.forEach((arg) => {
|
160
|
+
if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) {
|
161
|
+
evaluator.getTypeOfExpression(arg.valueExpression);
|
162
|
+
}
|
163
|
+
});
|
215
164
|
}
|
216
165
|
return { argumentErrors, returnType, isTypeIncomplete, overloadsUsedForCall };
|
217
166
|
}
|
218
167
|
exports.validateConstructorArguments = validateConstructorArguments;
|
168
|
+
// Evaluates the __new__ method for type correctness. If useSpeculativeModeForArgs
|
169
|
+
// is true, use speculative mode to evaluate the arguments (unless an argument
|
170
|
+
// error is produced, in which case it's OK to use speculative mode).
|
171
|
+
function validateNewMethod(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, newMethodTypeResult, useSpeculativeModeForArgs) {
|
172
|
+
let newReturnType;
|
173
|
+
let isTypeIncomplete = false;
|
174
|
+
let argumentErrors = false;
|
175
|
+
const overloadsUsedForCall = [];
|
176
|
+
const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
|
177
|
+
typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(newMethodTypeResult.type));
|
178
|
+
if (type.typeAliasInfo) {
|
179
|
+
typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId);
|
180
|
+
}
|
181
|
+
const callResult = evaluator.useSpeculativeMode(useSpeculativeModeForArgs ? errorNode : undefined, () => {
|
182
|
+
return evaluator.validateCallArguments(errorNode, argList, newMethodTypeResult, typeVarContext, skipUnknownArgCheck, inferenceContext);
|
183
|
+
});
|
184
|
+
if (callResult.isTypeIncomplete) {
|
185
|
+
isTypeIncomplete = true;
|
186
|
+
}
|
187
|
+
if (callResult.argumentErrors) {
|
188
|
+
argumentErrors = true;
|
189
|
+
// Evaluate the arguments in a non-speculative manner to generate any diagnostics.
|
190
|
+
typeVarContext.unlock();
|
191
|
+
evaluator.validateCallArguments(errorNode, argList, newMethodTypeResult, typeVarContext, skipUnknownArgCheck);
|
192
|
+
}
|
193
|
+
else {
|
194
|
+
newReturnType = callResult.returnType;
|
195
|
+
if (overloadsUsedForCall.length === 0) {
|
196
|
+
overloadsUsedForCall.push(...callResult.overloadsUsedForCall);
|
197
|
+
}
|
198
|
+
// If the constructor returned an object whose type matches the class of
|
199
|
+
// the original type being constructed, use the return type in case it was
|
200
|
+
// specialized. If it doesn't match, we'll fall back on the assumption that
|
201
|
+
// the constructed type is an instance of the class type. We need to do this
|
202
|
+
// in cases where we're inferring the return type based on a call to
|
203
|
+
// super().__new__().
|
204
|
+
if (newReturnType) {
|
205
|
+
if ((0, types_1.isClassInstance)(newReturnType) && types_1.ClassType.isSameGenericClass(newReturnType, type)) {
|
206
|
+
// If the specialized return type derived from the __init__
|
207
|
+
// method is "better" than the return type provided by the
|
208
|
+
// __new__ method (where "better" means that the type arguments
|
209
|
+
// are all known), stick with the __init__ result.
|
210
|
+
if (!(0, typeUtils_1.isPartlyUnknown)(newReturnType) && !(0, typeUtils_1.requiresSpecialization)(newReturnType)) {
|
211
|
+
// Special-case the 'tuple' type specialization to use
|
212
|
+
// the homogenous arbitrary-length form.
|
213
|
+
if ((0, types_1.isClassInstance)(newReturnType) &&
|
214
|
+
types_1.ClassType.isTupleClass(newReturnType) &&
|
215
|
+
!newReturnType.tupleTypeArguments &&
|
216
|
+
newReturnType.typeArguments &&
|
217
|
+
newReturnType.typeArguments.length === 1) {
|
218
|
+
newReturnType = (0, typeUtils_1.specializeTupleClass)(newReturnType, [
|
219
|
+
{ type: newReturnType.typeArguments[0], isUnbounded: true },
|
220
|
+
]);
|
221
|
+
}
|
222
|
+
}
|
223
|
+
}
|
224
|
+
}
|
225
|
+
}
|
226
|
+
if (!newReturnType) {
|
227
|
+
newReturnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext);
|
228
|
+
}
|
229
|
+
else if ((0, types_1.isClassInstance)(newReturnType) && (0, typeUtils_1.isTupleClass)(newReturnType) && !newReturnType.tupleTypeArguments) {
|
230
|
+
newReturnType = applyExpectedTypeForTupleConstructor(newReturnType, inferenceContext);
|
231
|
+
}
|
232
|
+
return { argumentErrors, returnType: newReturnType, isTypeIncomplete, overloadsUsedForCall };
|
233
|
+
}
|
234
|
+
function validateInitMethod(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, initMethodType) {
|
235
|
+
let returnType;
|
236
|
+
let isTypeIncomplete = false;
|
237
|
+
let argumentErrors = false;
|
238
|
+
const overloadsUsedForCall = [];
|
239
|
+
// If there is an expected type, analyze the __init__ call for each of the
|
240
|
+
// subtypes that comprise the expected type. If one or more analyzes with no
|
241
|
+
// errors, use those results. This requires special-case processing because
|
242
|
+
// the __init__ method doesn't return the expected type. It always
|
243
|
+
// returns None.
|
244
|
+
if (inferenceContext) {
|
245
|
+
returnType = (0, typeUtils_1.mapSubtypes)(inferenceContext.expectedType, (expectedSubType) => {
|
246
|
+
expectedSubType = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(expectedSubType);
|
247
|
+
const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
|
248
|
+
typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(initMethodType));
|
249
|
+
if ((0, constraintSolver_1.populateTypeVarContextBasedOnExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedSubType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode))) {
|
250
|
+
const specializedConstructor = (0, typeUtils_1.applySolvedTypeVars)(initMethodType, typeVarContext);
|
251
|
+
let callResult;
|
252
|
+
callResult = evaluator.useSpeculativeMode(errorNode, () => {
|
253
|
+
return evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext.clone(), skipUnknownArgCheck);
|
254
|
+
});
|
255
|
+
if (!callResult.argumentErrors) {
|
256
|
+
// Call validateCallArguments again, this time without speculative
|
257
|
+
// mode, so any errors are reported.
|
258
|
+
callResult = evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck);
|
259
|
+
if (callResult.isTypeIncomplete) {
|
260
|
+
isTypeIncomplete = true;
|
261
|
+
}
|
262
|
+
if (callResult.argumentErrors) {
|
263
|
+
argumentErrors = true;
|
264
|
+
}
|
265
|
+
(0, collectionUtils_1.appendArray)(overloadsUsedForCall, callResult.overloadsUsedForCall);
|
266
|
+
return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext);
|
267
|
+
}
|
268
|
+
}
|
269
|
+
return undefined;
|
270
|
+
});
|
271
|
+
if ((0, types_1.isNever)(returnType) || argumentErrors) {
|
272
|
+
returnType = undefined;
|
273
|
+
}
|
274
|
+
}
|
275
|
+
if (!returnType) {
|
276
|
+
const typeVarContext = type.typeArguments
|
277
|
+
? (0, typeUtils_1.buildTypeVarContextFromSpecializedClass)(type, /* makeConcrete */ false)
|
278
|
+
: new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
|
279
|
+
typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(initMethodType));
|
280
|
+
const callResult = evaluator.validateCallArguments(errorNode, argList, { type: initMethodType }, typeVarContext, skipUnknownArgCheck);
|
281
|
+
let adjustedClassType = type;
|
282
|
+
if (callResult.specializedInitSelfType &&
|
283
|
+
(0, types_1.isClassInstance)(callResult.specializedInitSelfType) &&
|
284
|
+
types_1.ClassType.isSameGenericClass(callResult.specializedInitSelfType, adjustedClassType)) {
|
285
|
+
adjustedClassType = types_1.ClassType.cloneAsInstantiable(callResult.specializedInitSelfType);
|
286
|
+
}
|
287
|
+
returnType = applyExpectedTypeForConstructor(evaluator, adjustedClassType,
|
288
|
+
/* inferenceContext */ undefined, typeVarContext);
|
289
|
+
if (callResult.isTypeIncomplete) {
|
290
|
+
isTypeIncomplete = true;
|
291
|
+
}
|
292
|
+
if (callResult.argumentErrors) {
|
293
|
+
argumentErrors = true;
|
294
|
+
}
|
295
|
+
else {
|
296
|
+
overloadsUsedForCall.push(...callResult.overloadsUsedForCall);
|
297
|
+
}
|
298
|
+
}
|
299
|
+
return { argumentErrors, returnType, isTypeIncomplete, overloadsUsedForCall };
|
300
|
+
}
|
219
301
|
function validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext) {
|
220
302
|
let reportedErrors = false;
|
221
303
|
if (argList.length > 0) {
|
@@ -267,51 +349,11 @@ function validateMetaclassCall(evaluator, errorNode, argList, type, skipUnknownA
|
|
267
349
|
}
|
268
350
|
return undefined;
|
269
351
|
}
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
function validateConstructorMethodWithContext(evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, constructorMethodType) {
|
274
|
-
let isTypeIncomplete = false;
|
275
|
-
let argumentErrors = false;
|
276
|
-
const overloadsUsedForCall = [];
|
277
|
-
const returnType = (0, typeUtils_1.mapSubtypes)(inferenceContext.expectedType, (expectedSubType) => {
|
278
|
-
expectedSubType = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(expectedSubType);
|
279
|
-
const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(type));
|
280
|
-
typeVarContext.addSolveForScope((0, typeUtils_1.getTypeVarScopeId)(constructorMethodType));
|
281
|
-
if ((0, constraintSolver_1.populateTypeVarContextBasedOnExpectedType)(evaluator, types_1.ClassType.cloneAsInstance(type), expectedSubType, typeVarContext, (0, parseTreeUtils_1.getTypeVarScopesForNode)(errorNode))) {
|
282
|
-
const specializedConstructor = (0, typeUtils_1.applySolvedTypeVars)(constructorMethodType, typeVarContext);
|
283
|
-
let callResult;
|
284
|
-
evaluator.useSpeculativeMode(errorNode, () => {
|
285
|
-
callResult = evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext.clone(), skipUnknownArgCheck);
|
286
|
-
});
|
287
|
-
if (!callResult.argumentErrors) {
|
288
|
-
// Call validateCallArguments again, this time without speculative
|
289
|
-
// mode, so any errors are reported.
|
290
|
-
callResult = evaluator.validateCallArguments(errorNode, argList, { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck);
|
291
|
-
if (callResult.isTypeIncomplete) {
|
292
|
-
isTypeIncomplete = true;
|
293
|
-
}
|
294
|
-
if (callResult.argumentErrors) {
|
295
|
-
argumentErrors = true;
|
296
|
-
}
|
297
|
-
overloadsUsedForCall.push(...callResult.overloadsUsedForCall);
|
298
|
-
return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, inferenceContext, typeVarContext);
|
299
|
-
}
|
300
|
-
}
|
301
|
-
return undefined;
|
352
|
+
function applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype, typeVarContext) {
|
353
|
+
const specializedType = (0, typeUtils_1.applySolvedTypeVars)(types_1.ClassType.cloneAsInstance(type), typeVarContext, {
|
354
|
+
applyInScopePlaceholders: true,
|
302
355
|
});
|
303
|
-
if ((
|
304
|
-
return undefined;
|
305
|
-
}
|
306
|
-
return { returnType, isTypeIncomplete, argumentErrors, overloadsUsedForCall };
|
307
|
-
}
|
308
|
-
function applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype, inferenceContext, typeVarContext) {
|
309
|
-
var _a;
|
310
|
-
const specializedType = (0, typeUtils_1.applySolvedTypeVars)(types_1.ClassType.cloneAsInstance(type), typeVarContext);
|
311
|
-
if (!evaluator.assignType(expectedSubtype, specializedType,
|
312
|
-
/* diag */ undefined,
|
313
|
-
/* destTypeVarContext */ (_a = inferenceContext === null || inferenceContext === void 0 ? void 0 : inferenceContext.typeVarContext) === null || _a === void 0 ? void 0 : _a.clone(),
|
314
|
-
/* srcTypeVarContext */ undefined)) {
|
356
|
+
if (!evaluator.assignType(expectedSubtype, specializedType)) {
|
315
357
|
return undefined;
|
316
358
|
}
|
317
359
|
// If the expected type is "Any", transform it to an Any.
|
@@ -326,7 +368,7 @@ function applyExpectedTypeForConstructor(evaluator, type, inferenceContext, type
|
|
326
368
|
let unsolvedTypeVarsAreUnknown = true;
|
327
369
|
if (inferenceContext) {
|
328
370
|
const specializedExpectedType = (0, typeUtils_1.mapSubtypes)(inferenceContext.expectedType, (expectedSubtype) => {
|
329
|
-
return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype,
|
371
|
+
return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype, typeVarContext);
|
330
372
|
});
|
331
373
|
if (!(0, types_1.isNever)(specializedExpectedType)) {
|
332
374
|
return specializedExpectedType;
|
@@ -448,9 +490,26 @@ function createFunctionFromConstructor(evaluator, classType, recursionCount = 0)
|
|
448
490
|
return constructorFunction;
|
449
491
|
}
|
450
492
|
exports.createFunctionFromConstructor = createFunctionFromConstructor;
|
451
|
-
//
|
452
|
-
//
|
453
|
-
|
454
|
-
|
493
|
+
// If __new__ returns a type that is not an instance of the class, skip the
|
494
|
+
// __init__ method evaluation. This is consistent with the behavior of the
|
495
|
+
// type.__call__ runtime behavior.
|
496
|
+
function shouldSkipInitEvaluation(evaluator, classType, newMethodReturnType) {
|
497
|
+
const returnType = evaluator.makeTopLevelTypeVarsConcrete(newMethodReturnType);
|
498
|
+
let skipInitCheck = false;
|
499
|
+
(0, typeUtils_1.doForEachSubtype)(returnType, (subtype) => {
|
500
|
+
if ((0, types_1.isAnyOrUnknown)(subtype)) {
|
501
|
+
return;
|
502
|
+
}
|
503
|
+
if ((0, types_1.isClassInstance)(subtype)) {
|
504
|
+
const inheritanceChain = [];
|
505
|
+
const isDerivedFrom = types_1.ClassType.isDerivedFrom(subtype, classType, inheritanceChain);
|
506
|
+
if (!isDerivedFrom) {
|
507
|
+
skipInitCheck = true;
|
508
|
+
}
|
509
|
+
return;
|
510
|
+
}
|
511
|
+
skipInitCheck = true;
|
512
|
+
});
|
513
|
+
return skipInitCheck;
|
455
514
|
}
|
456
515
|
//# sourceMappingURL=constructors.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../src/analyzer/constructors.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../src/analyzer/constructors.ts"],"names":[],"mappings":"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"}
|
@@ -52,6 +52,9 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
|
|
52
52
|
const classTypeVar = (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ true);
|
53
53
|
const newType = types_1.FunctionType.createSynthesizedInstance('__new__', 1 /* ConstructorMethod */);
|
54
54
|
const initType = types_1.FunctionType.createSynthesizedInstance('__init__');
|
55
|
+
// Override `__new__` because some dataclasses (such as those that are
|
56
|
+
// created by subclassing from NamedTuple) may have their own custom
|
57
|
+
// __new__ that requires overriding.
|
55
58
|
types_1.FunctionType.addParameter(newType, {
|
56
59
|
category: 0 /* Simple */,
|
57
60
|
name: 'cls',
|
@@ -472,10 +475,10 @@ function synthesizeDataClassMethods(evaluator, node, classType, skipSynthesizeIn
|
|
472
475
|
const hashMethod = types_1.FunctionType.createSynthesizedInstance('__hash__');
|
473
476
|
types_1.FunctionType.addParameter(hashMethod, selfParam);
|
474
477
|
hashMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'int');
|
475
|
-
symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */, hashMethod));
|
478
|
+
symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 4096 /* IgnoredForOverrideChecks */, hashMethod));
|
476
479
|
}
|
477
480
|
else if (synthesizeHashNone && !skipSynthesizeHash) {
|
478
|
-
symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */, types_1.NoneType.createInstance()));
|
481
|
+
symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* ClassMember */ | 4096 /* IgnoredForOverrideChecks */, types_1.NoneType.createInstance()));
|
479
482
|
}
|
480
483
|
let dictType = evaluator.getBuiltInType(node, 'dict');
|
481
484
|
if ((0, types_1.isInstantiableClass)(dictType)) {
|