@zzzen/pyright-internal 1.2.0-dev.20240714 → 1.2.0-dev.20240728
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 +2 -2
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/binder.js +8 -8
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.js +3 -0
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +3 -2
- package/dist/analyzer/checker.js +137 -142
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +2 -2
- package/dist/analyzer/codeFlowEngine.js +74 -44
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.js +1 -1
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/constraintSolver.d.ts +2 -2
- package/dist/analyzer/constraintSolver.js +166 -206
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.d.ts +2 -3
- package/dist/analyzer/constructorTransform.js +18 -19
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +3 -3
- package/dist/analyzer/constructors.js +72 -175
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +2 -2
- package/dist/analyzer/dataClasses.js +60 -40
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +9 -9
- package/dist/analyzer/declaration.js +9 -9
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +1 -1
- package/dist/analyzer/declarationUtils.js +6 -6
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +5 -6
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +2 -2
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/enums.d.ts +2 -2
- package/dist/analyzer/enums.js +6 -6
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/functionTransform.d.ts +2 -2
- package/dist/analyzer/functionTransform.js +4 -4
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importResolver.js +5 -3
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +3 -3
- package/dist/analyzer/namedTuples.js +21 -22
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +145 -96
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +8 -8
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parameterUtils.d.ts +10 -10
- package/dist/analyzer/parameterUtils.js +60 -59
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +7 -6
- package/dist/analyzer/parseTreeUtils.js +47 -24
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +109 -90
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +11 -4
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +23 -19
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +23 -20
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +1 -1
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/service.d.ts +3 -7
- package/dist/analyzer/service.js +28 -30
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/serviceUtils.d.ts +8 -0
- package/dist/analyzer/serviceUtils.js +31 -0
- package/dist/analyzer/serviceUtils.js.map +1 -0
- package/dist/analyzer/sourceFile.js +5 -19
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +1 -1
- package/dist/analyzer/sourceMapper.js +4 -4
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +1 -1
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/testWalker.js +13 -1
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +4 -4
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/tuples.d.ts +9 -0
- package/dist/analyzer/tuples.js +252 -0
- package/dist/analyzer/tuples.js.map +1 -0
- package/dist/analyzer/typeComplexity.d.ts +2 -0
- package/dist/analyzer/typeComplexity.js +86 -0
- package/dist/analyzer/typeComplexity.js.map +1 -0
- package/dist/analyzer/typeEvaluator.js +1721 -1824
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +47 -40
- package/dist/analyzer/typeEvaluatorTypes.js +10 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +116 -90
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.d.ts +1 -1
- package/dist/analyzer/typePrinter.js +54 -53
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.d.ts +3 -3
- package/dist/analyzer/typeStubWriter.js +15 -15
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +35 -29
- package/dist/analyzer/typeUtils.js +420 -357
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.d.ts +24 -36
- package/dist/analyzer/typeVarContext.js +89 -193
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typeWalker.js +4 -4
- package/dist/analyzer/typeWalker.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +2 -2
- package/dist/analyzer/typedDicts.js +49 -53
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +89 -63
- package/dist/analyzer/types.js +163 -120
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +12 -12
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +5 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/diagnosticRules.d.ts +1 -0
- package/dist/common/diagnosticRules.js +1 -0
- package/dist/common/diagnosticRules.js.map +1 -1
- package/dist/common/fileSystem.d.ts +0 -1
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +13 -0
- package/dist/common/languageServerInterface.js +15 -1
- package/dist/common/languageServerInterface.js.map +1 -1
- package/dist/common/lspUtils.js +2 -2
- package/dist/common/memUtils.d.ts +4 -0
- package/dist/common/memUtils.js +33 -2
- package/dist/common/memUtils.js.map +1 -1
- package/dist/common/serviceKeys.d.ts +3 -0
- package/dist/common/serviceKeys.js +2 -0
- package/dist/common/serviceKeys.js.map +1 -1
- package/dist/common/serviceProviderExtensions.js +7 -0
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/languageServerBase.d.ts +4 -3
- package/dist/languageServerBase.js +14 -10
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +3 -2
- package/dist/languageService/autoImporter.js +5 -1
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +5 -3
- package/dist/languageService/completionProvider.js +38 -37
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.d.ts +1 -1
- package/dist/languageService/completionProviderUtils.js +3 -3
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.js +2 -2
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.js +14 -6
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +10 -4
- package/dist/languageService/referencesProvider.js +24 -12
- 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.js +1 -1
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +3 -3
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +9 -3
- package/dist/localization/localize.js +8 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +5 -2
- package/dist/localization/package.nls.de.json +5 -2
- package/dist/localization/package.nls.en-us.json +7 -1
- package/dist/localization/package.nls.es.json +5 -2
- package/dist/localization/package.nls.fr.json +5 -2
- package/dist/localization/package.nls.it.json +5 -2
- package/dist/localization/package.nls.ja.json +5 -2
- package/dist/localization/package.nls.ko.json +5 -2
- package/dist/localization/package.nls.pl.json +5 -2
- package/dist/localization/package.nls.pt-br.json +5 -2
- package/dist/localization/package.nls.qps-ploc.json +5 -2
- package/dist/localization/package.nls.ru.json +5 -2
- package/dist/localization/package.nls.tr.json +5 -2
- package/dist/localization/package.nls.zh-cn.json +5 -2
- package/dist/localization/package.nls.zh-tw.json +5 -2
- package/dist/parser/parseNodes.d.ts +12 -10
- package/dist/parser/parseNodes.js +23 -21
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.js +66 -43
- package/dist/parser/parser.js.map +1 -1
- package/dist/tests/checker.test.js +2 -2
- 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/fourslash/signature.builtinDocstrings.fourslash.js +4 -21
- package/dist/tests/fourslash/signature.builtinDocstrings.fourslash.js.map +1 -1
- package/dist/tests/fourslash/signature.complicated.fourslash.js +1 -1
- package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/testStateUtils.js +2 -2
- package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +0 -1
- package/dist/tests/harness/vfs/filesystem.js +0 -4
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +62 -15
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js +1 -1
- package/dist/tests/lsp/languageServerTestUtils.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 +1 -1
- package/dist/tests/typeEvaluator4.test.js +19 -7
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +8 -2
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +76 -60
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +5 -1
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typePrinter.test.js +13 -18
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +3 -2
- package/dist/workspaceFactory.js +15 -2
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
@@ -5,16 +5,16 @@
|
|
5
5
|
* Licensed under the MIT license.
|
6
6
|
* Author: Eric Traut
|
7
7
|
*
|
8
|
-
* Module that records the relationship between type variables
|
9
|
-
*
|
8
|
+
* Module that records the relationship between type variables and their
|
9
|
+
* types. It is used by the constraint solver to solve for the type of
|
10
10
|
* each type variable.
|
11
11
|
*/
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
13
|
-
exports.TypeVarContext = exports.
|
13
|
+
exports.TypeVarContext = exports.TypeVarSolutionSet = void 0;
|
14
14
|
const debug_1 = require("../common/debug");
|
15
|
-
const
|
15
|
+
const typeComplexity_1 = require("./typeComplexity");
|
16
16
|
const types_1 = require("./types");
|
17
|
-
// The maximum number of
|
17
|
+
// The maximum number of solution sets that can be associated
|
18
18
|
// with a TypeVarContext. This equates to the number of overloads
|
19
19
|
// that can be captured by a ParamSpec (or multiple ParamSpecs).
|
20
20
|
// We should never hit this limit in practice, but there are certain
|
@@ -22,23 +22,22 @@ const types_1 = require("./types");
|
|
22
22
|
// this so it doesn't completely exhaust memory. This was previously
|
23
23
|
// set to 64, but we have seen cases where a library uses in excess
|
24
24
|
// of 300 overloads on a single function.
|
25
|
-
const
|
26
|
-
|
25
|
+
const maxSolutionSetCount = 1024;
|
26
|
+
// Records the solution information for a set of type variables associated
|
27
|
+
// with a callee's signature.
|
28
|
+
class TypeVarSolutionSet {
|
27
29
|
constructor() {
|
28
30
|
this._typeVarMap = new Map();
|
29
31
|
}
|
30
32
|
clone() {
|
31
|
-
const
|
33
|
+
const solutionSet = new TypeVarSolutionSet();
|
32
34
|
this._typeVarMap.forEach((value) => {
|
33
|
-
|
34
|
-
if (value.tupleTypes) {
|
35
|
-
newContext.setTupleTypeVar(value.typeVar, value.tupleTypes);
|
36
|
-
}
|
35
|
+
solutionSet.setTypeVarType(value.typeVar, value.lowerBound, value.lowerBoundNoLiterals, value.upperBound);
|
37
36
|
});
|
38
|
-
if (this.
|
39
|
-
this.
|
37
|
+
if (this._scopeIds) {
|
38
|
+
this._scopeIds.forEach((scopeId) => solutionSet.addScopeId(scopeId));
|
40
39
|
}
|
41
|
-
return
|
40
|
+
return solutionSet;
|
42
41
|
}
|
43
42
|
isSame(other) {
|
44
43
|
if (this._typeVarMap.size !== other._typeVarMap.size) {
|
@@ -54,8 +53,8 @@ class TypeVarSignatureContext {
|
|
54
53
|
this._typeVarMap.forEach((value, key) => {
|
55
54
|
const otherValue = other._typeVarMap.get(key);
|
56
55
|
if (!otherValue ||
|
57
|
-
!typesMatch(value.
|
58
|
-
!typesMatch(value.
|
56
|
+
!typesMatch(value.lowerBound, otherValue.lowerBound) ||
|
57
|
+
!typesMatch(value.upperBound, otherValue.upperBound)) {
|
59
58
|
isSame = false;
|
60
59
|
}
|
61
60
|
});
|
@@ -76,57 +75,50 @@ class TypeVarSignatureContext {
|
|
76
75
|
// The more complex, the lower the score. In the spirit of Occam's
|
77
76
|
// Razor, we always want to favor simple answers.
|
78
77
|
const typeVarType = this.getTypeVarType(value.typeVar);
|
79
|
-
score += 1.0 -
|
78
|
+
score += 1.0 - (0, typeComplexity_1.getComplexityScoreForType)(typeVarType);
|
80
79
|
});
|
81
80
|
return score;
|
82
81
|
}
|
83
|
-
getTypeVarType(reference,
|
82
|
+
getTypeVarType(reference, useLowerBoundOnly = false) {
|
84
83
|
var _a, _b;
|
85
84
|
const entry = this.getTypeVar(reference);
|
86
85
|
if (!entry) {
|
87
86
|
return undefined;
|
88
87
|
}
|
89
|
-
if (
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
if (!(entry === null || entry === void 0 ? void 0 : entry.narrowBound)) {
|
100
|
-
return undefined;
|
88
|
+
if ((0, types_1.isParamSpec)(reference)) {
|
89
|
+
if (!entry.lowerBound) {
|
90
|
+
return undefined;
|
91
|
+
}
|
92
|
+
if ((0, types_1.isFunction)(entry.lowerBound)) {
|
93
|
+
return entry.lowerBound;
|
94
|
+
}
|
95
|
+
if ((0, types_1.isAnyOrUnknown)(entry.lowerBound)) {
|
96
|
+
return types_1.ParamSpecType.getUnknown();
|
97
|
+
}
|
101
98
|
}
|
102
|
-
if (
|
103
|
-
return entry.
|
99
|
+
if (useLowerBoundOnly) {
|
100
|
+
return entry.lowerBound;
|
104
101
|
}
|
105
|
-
|
106
|
-
|
102
|
+
// Prefer the lower bound with no literals. It will be undefined
|
103
|
+
// if the literal type couldn't be widened due to constraints imposed
|
104
|
+
// by the upper bound.
|
105
|
+
return (_b = (_a = entry.lowerBoundNoLiterals) !== null && _a !== void 0 ? _a : entry.lowerBound) !== null && _b !== void 0 ? _b : entry.upperBound;
|
106
|
+
}
|
107
|
+
setTypeVarType(reference, lowerBound, lowerBoundNoLiterals, upperBound) {
|
108
|
+
// For param specs, callers should always convert values to function types.
|
109
|
+
if ((0, types_1.isParamSpec)(reference)) {
|
110
|
+
(0, debug_1.assert)(!lowerBound || (0, types_1.isFunction)(lowerBound));
|
111
|
+
(0, debug_1.assert)(!lowerBoundNoLiterals || (0, types_1.isFunction)(lowerBoundNoLiterals));
|
112
|
+
(0, debug_1.assert)(!upperBound || (0, types_1.isFunction)(upperBound));
|
107
113
|
}
|
108
|
-
return undefined;
|
109
|
-
}
|
110
|
-
setTypeVarType(reference, narrowBound, narrowBoundNoLiterals, wideBound, tupleTypes) {
|
111
114
|
const key = types_1.TypeVarType.getNameWithScope(reference);
|
112
115
|
this._typeVarMap.set(key, {
|
113
116
|
typeVar: reference,
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
tupleTypes,
|
117
|
+
lowerBound,
|
118
|
+
lowerBoundNoLiterals,
|
119
|
+
upperBound,
|
118
120
|
});
|
119
121
|
}
|
120
|
-
getTupleTypeVar(reference) {
|
121
|
-
var _a;
|
122
|
-
return (_a = this.getTypeVar(reference)) === null || _a === void 0 ? void 0 : _a.tupleTypes;
|
123
|
-
}
|
124
|
-
setTupleTypeVar(reference, types) {
|
125
|
-
// Caller should have already assigned a value to this type variable.
|
126
|
-
const entry = this.getTypeVar(reference);
|
127
|
-
(0, debug_1.assert)(entry);
|
128
|
-
entry.tupleTypes = types;
|
129
|
-
}
|
130
122
|
getTypeVar(reference) {
|
131
123
|
const key = types_1.TypeVarType.getNameWithScope(reference);
|
132
124
|
return this._typeVarMap.get(key);
|
@@ -138,104 +130,23 @@ class TypeVarSignatureContext {
|
|
138
130
|
});
|
139
131
|
return entries;
|
140
132
|
}
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
getWideTypeBound(reference) {
|
145
|
-
const entry = this.getTypeVar(reference);
|
146
|
-
if (entry) {
|
147
|
-
return entry.wideBound;
|
148
|
-
}
|
149
|
-
return undefined;
|
150
|
-
}
|
151
|
-
addSourceTypeVarScopeId(scopeId) {
|
152
|
-
if (!this._sourceTypeVarScopeId) {
|
153
|
-
this._sourceTypeVarScopeId = new Set();
|
133
|
+
addScopeId(scopeId) {
|
134
|
+
if (!this._scopeIds) {
|
135
|
+
this._scopeIds = new Set();
|
154
136
|
}
|
155
|
-
this.
|
137
|
+
this._scopeIds.add(scopeId);
|
156
138
|
}
|
157
|
-
|
158
|
-
if (!this.
|
139
|
+
hasScopeId(scopeId) {
|
140
|
+
if (!this._scopeIds) {
|
159
141
|
return false;
|
160
142
|
}
|
161
|
-
return this.
|
162
|
-
}
|
163
|
-
// Returns a "score" for a type that captures the relative complexity
|
164
|
-
// of the type. Scores should all be between 0 and 1 where 0 means
|
165
|
-
// very simple and 1 means complex. This is a heuristic, so there's
|
166
|
-
// often no objectively correct answer.
|
167
|
-
_getComplexityScoreForType(type, recursionCount = 0) {
|
168
|
-
if (recursionCount > types_1.maxTypeRecursionCount) {
|
169
|
-
return 1;
|
170
|
-
}
|
171
|
-
recursionCount++;
|
172
|
-
switch (type.category) {
|
173
|
-
case 1 /* TypeCategory.Unknown */:
|
174
|
-
case 2 /* TypeCategory.Any */:
|
175
|
-
case 9 /* TypeCategory.TypeVar */: {
|
176
|
-
return 0.5;
|
177
|
-
}
|
178
|
-
case 4 /* TypeCategory.Function */:
|
179
|
-
case 5 /* TypeCategory.OverloadedFunction */: {
|
180
|
-
// Classes and unions should be preferred over functions,
|
181
|
-
// so make this relatively high (more than 0.75).
|
182
|
-
return 0.8;
|
183
|
-
}
|
184
|
-
case 0 /* TypeCategory.Unbound */:
|
185
|
-
case 3 /* TypeCategory.Never */:
|
186
|
-
return 1.0;
|
187
|
-
case 8 /* TypeCategory.Union */: {
|
188
|
-
let maxScore = 0;
|
189
|
-
// If this union has a very large number of subtypes, don't bother
|
190
|
-
// accurately computing the score. Assume a fixed value.
|
191
|
-
if (type.priv.subtypes.length < 16) {
|
192
|
-
type.priv.subtypes.forEach((subtype) => {
|
193
|
-
const subtypeScore = this._getComplexityScoreForType(subtype, recursionCount);
|
194
|
-
maxScore = Math.max(maxScore, subtypeScore);
|
195
|
-
});
|
196
|
-
}
|
197
|
-
else {
|
198
|
-
maxScore = 0.5;
|
199
|
-
}
|
200
|
-
return maxScore;
|
201
|
-
}
|
202
|
-
case 6 /* TypeCategory.Class */: {
|
203
|
-
return this._getComplexityScoreForClass(type, recursionCount);
|
204
|
-
}
|
205
|
-
}
|
206
|
-
// For all other types, return a score of 0.
|
207
|
-
return 0;
|
208
|
-
}
|
209
|
-
_getComplexityScoreForClass(classType, recursionCount) {
|
210
|
-
let typeArgScoreSum = 0;
|
211
|
-
let typeArgCount = 0;
|
212
|
-
if (classType.priv.tupleTypeArguments) {
|
213
|
-
classType.priv.tupleTypeArguments.forEach((typeArg) => {
|
214
|
-
typeArgScoreSum += this._getComplexityScoreForType(typeArg.type, recursionCount);
|
215
|
-
typeArgCount++;
|
216
|
-
});
|
217
|
-
}
|
218
|
-
else if (classType.priv.typeArguments) {
|
219
|
-
classType.priv.typeArguments.forEach((type) => {
|
220
|
-
typeArgScoreSum += this._getComplexityScoreForType(type, recursionCount);
|
221
|
-
typeArgCount++;
|
222
|
-
});
|
223
|
-
}
|
224
|
-
else if (classType.shared.typeParameters) {
|
225
|
-
classType.shared.typeParameters.forEach((type) => {
|
226
|
-
typeArgScoreSum += this._getComplexityScoreForType(types_1.AnyType.create(), recursionCount);
|
227
|
-
typeArgCount++;
|
228
|
-
});
|
229
|
-
}
|
230
|
-
const averageTypeArgComplexity = typeArgCount > 0 ? typeArgScoreSum / typeArgCount : 0;
|
231
|
-
return 0.5 + averageTypeArgComplexity * 0.25;
|
143
|
+
return this._scopeIds.has(scopeId);
|
232
144
|
}
|
233
145
|
}
|
234
|
-
exports.
|
146
|
+
exports.TypeVarSolutionSet = TypeVarSolutionSet;
|
235
147
|
class TypeVarContext {
|
236
148
|
constructor(solveForScopes) {
|
237
149
|
this._isLocked = false;
|
238
|
-
this._id = TypeVarContext.nextTypeVarContextId++;
|
239
150
|
if (Array.isArray(solveForScopes)) {
|
240
151
|
this._solveForScopes = solveForScopes;
|
241
152
|
}
|
@@ -245,54 +156,51 @@ class TypeVarContext {
|
|
245
156
|
else {
|
246
157
|
this._solveForScopes = undefined;
|
247
158
|
}
|
248
|
-
this.
|
159
|
+
this._solutionSets = [new TypeVarSolutionSet()];
|
249
160
|
}
|
250
161
|
clone() {
|
251
162
|
const newTypeVarMap = new TypeVarContext();
|
252
163
|
if (this._solveForScopes) {
|
253
164
|
newTypeVarMap._solveForScopes = Array.from(this._solveForScopes);
|
254
165
|
}
|
255
|
-
newTypeVarMap.
|
166
|
+
newTypeVarMap._solutionSets = this._solutionSets.map((solutionSet) => solutionSet.clone());
|
256
167
|
newTypeVarMap._isLocked = this._isLocked;
|
257
168
|
return newTypeVarMap;
|
258
169
|
}
|
259
|
-
|
260
|
-
const
|
261
|
-
if (
|
262
|
-
const
|
263
|
-
if (
|
264
|
-
|
170
|
+
cloneWithSignature(scopeId) {
|
171
|
+
const cloned = this.clone();
|
172
|
+
if (scopeId) {
|
173
|
+
const filteredSolutionSets = this._solutionSets.filter((context) => context.hasScopeId(scopeId));
|
174
|
+
if (filteredSolutionSets.length > 0) {
|
175
|
+
cloned._solutionSets = filteredSolutionSets;
|
265
176
|
}
|
266
177
|
else {
|
267
|
-
|
268
|
-
context.
|
178
|
+
cloned._solutionSets.forEach((context) => {
|
179
|
+
context.addScopeId(scopeId);
|
269
180
|
});
|
270
181
|
}
|
271
182
|
}
|
272
|
-
return
|
183
|
+
return cloned;
|
273
184
|
}
|
274
185
|
// Copies a cloned type var context back into this object.
|
275
186
|
copyFromClone(clone) {
|
276
|
-
this.
|
187
|
+
this._solutionSets = clone._solutionSets.map((context) => context.clone());
|
277
188
|
this._isLocked = clone._isLocked;
|
278
189
|
}
|
279
|
-
// Copy the specified
|
280
|
-
|
190
|
+
// Copy the specified solution sets into this type var context.
|
191
|
+
addSolutionSets(contexts) {
|
281
192
|
(0, debug_1.assert)(contexts.length > 0);
|
282
|
-
// Limit the number of
|
193
|
+
// Limit the number of solution sets. There are rare circumstances
|
283
194
|
// where this can grow to unbounded numbers and exhaust memory.
|
284
|
-
if (contexts.length <
|
285
|
-
this.
|
195
|
+
if (contexts.length < maxSolutionSetCount) {
|
196
|
+
this._solutionSets = Array.from(contexts);
|
286
197
|
}
|
287
198
|
}
|
288
199
|
isSame(other) {
|
289
|
-
if (other.
|
200
|
+
if (other._solutionSets.length !== this._solutionSets.length) {
|
290
201
|
return false;
|
291
202
|
}
|
292
|
-
return this.
|
293
|
-
}
|
294
|
-
getId() {
|
295
|
-
return this._id;
|
203
|
+
return this._solutionSets.every((solutionSet, index) => solutionSet.isSame(other._solutionSets[index]));
|
296
204
|
}
|
297
205
|
// Returns the list of scopes this type var map is "solving".
|
298
206
|
getSolveForScopes() {
|
@@ -339,54 +247,42 @@ class TypeVarContext {
|
|
339
247
|
return this._isLocked;
|
340
248
|
}
|
341
249
|
isEmpty() {
|
342
|
-
return this.
|
343
|
-
}
|
344
|
-
setTypeVarType(reference, narrowBound, narrowBoundNoLiterals, wideBound, tupleTypes) {
|
345
|
-
(0, debug_1.assert)(!this._isLocked);
|
346
|
-
return this._signatureContexts.forEach((context) => {
|
347
|
-
context.setTypeVarType(reference, narrowBound, narrowBoundNoLiterals, wideBound, tupleTypes);
|
348
|
-
});
|
250
|
+
return this._solutionSets.every((solutionSet) => solutionSet.isEmpty());
|
349
251
|
}
|
350
|
-
|
252
|
+
setTypeVarType(reference, lowerBound, lowerBoundNoLiterals, upperBound) {
|
351
253
|
(0, debug_1.assert)(!this._isLocked);
|
352
|
-
return this.
|
353
|
-
|
254
|
+
return this._solutionSets.forEach((solutionSet) => {
|
255
|
+
solutionSet.setTypeVarType(reference, lowerBound, lowerBoundNoLiterals, upperBound);
|
354
256
|
});
|
355
257
|
}
|
356
258
|
getScore() {
|
357
259
|
let total = 0;
|
358
|
-
this.
|
359
|
-
total +=
|
260
|
+
this._solutionSets.forEach((solutionSet) => {
|
261
|
+
total += solutionSet.getScore();
|
360
262
|
});
|
361
|
-
// Return the average score among all
|
362
|
-
return total / this.
|
263
|
+
// Return the average score among all solution sets.
|
264
|
+
return total / this._solutionSets.length;
|
363
265
|
}
|
364
|
-
|
365
|
-
return this.
|
266
|
+
getMainSolutionSet() {
|
267
|
+
return this._solutionSets[0];
|
366
268
|
}
|
367
|
-
|
368
|
-
return this.
|
269
|
+
getSolutionSets() {
|
270
|
+
return this._solutionSets;
|
369
271
|
}
|
370
|
-
|
272
|
+
doForEachSolutionSet(callback) {
|
371
273
|
const wasLocked = this.isLocked();
|
372
274
|
this.unlock();
|
373
|
-
this.
|
374
|
-
callback(
|
275
|
+
this.getSolutionSets().forEach((solutionSet, index) => {
|
276
|
+
callback(solutionSet, index);
|
375
277
|
});
|
376
278
|
if (wasLocked) {
|
377
279
|
this.lock();
|
378
280
|
}
|
379
281
|
}
|
380
|
-
|
381
|
-
(0, debug_1.assert)(index >= 0 && index < this.
|
382
|
-
return this.
|
383
|
-
}
|
384
|
-
doForEachSignature(callback) {
|
385
|
-
this._signatureContexts.forEach((context) => {
|
386
|
-
callback(context);
|
387
|
-
});
|
282
|
+
getSolutionSet(index) {
|
283
|
+
(0, debug_1.assert)(index >= 0 && index < this._solutionSets.length);
|
284
|
+
return this._solutionSets[index];
|
388
285
|
}
|
389
286
|
}
|
390
287
|
exports.TypeVarContext = TypeVarContext;
|
391
|
-
TypeVarContext.nextTypeVarContextId = 1;
|
392
288
|
//# sourceMappingURL=typeVarContext.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typeVarContext.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeVarContext.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"typeVarContext.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeVarContext.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,2CAAyC;AACzC,qDAA6D;AAC7D,mCAWiB;AAEjB,6DAA6D;AAC7D,iEAAiE;AACjE,gEAAgE;AAChE,oEAAoE;AACpE,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,yCAAyC;AACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAkBjC,0EAA0E;AAC1E,6BAA6B;AAC7B,MAAa,kBAAkB;IAY3B;QACI,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC1D,CAAC;IAED,KAAK;QACD,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;SACxE;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAyB;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;YAClD,OAAO,KAAK,CAAC;SAChB;QAED,SAAS,UAAU,CAAC,KAAuB,EAAE,KAAuB;YAChE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;gBAClB,OAAO,KAAK,KAAK,KAAK,CAAC;aAC1B;YAED,OAAO,IAAA,kBAAU,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,IACI,CAAC,UAAU;gBACX,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;gBACpD,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EACtD;gBACE,MAAM,GAAG,KAAK,CAAC;aAClB;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,gEAAgE;IAChE,uDAAuD;IACvD,QAAQ;QACJ,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,qDAAqD;YACrD,KAAK,IAAI,CAAC,CAAC;YAEX,qEAAqE;YACrE,kEAAkE;YAClE,iDAAiD;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;YACxD,KAAK,IAAI,GAAG,GAAG,IAAA,0CAAyB,EAAC,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACjB,CAAC;IAID,cAAc,CAAC,SAAsB,EAAE,iBAAiB,GAAG,KAAK;;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,IAAA,mBAAW,EAAC,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACnB,OAAO,SAAS,CAAC;aACpB;YAED,IAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAC9B,OAAO,KAAK,CAAC,UAAU,CAAC;aAC3B;YAED,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAClC,OAAO,qBAAa,CAAC,UAAU,EAAE,CAAC;aACrC;SACJ;QAED,IAAI,iBAAiB,EAAE;YACnB,OAAO,KAAK,CAAC,UAAU,CAAC;SAC3B;QAED,gEAAgE;QAChE,qEAAqE;QACrE,sBAAsB;QACtB,OAAO,MAAA,MAAA,KAAK,CAAC,oBAAoB,mCAAI,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,UAAU,CAAC;IAC9E,CAAC;IAED,cAAc,CACV,SAAsB,EACtB,UAA4B,EAC5B,oBAA2B,EAC3B,UAAiB;QAEjB,2EAA2E;QAC3E,IAAI,IAAA,mBAAW,EAAC,SAAS,CAAC,EAAE;YACxB,IAAA,cAAM,EAAC,CAAC,UAAU,IAAI,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC,CAAC;YAC9C,IAAA,cAAM,EAAC,CAAC,oBAAoB,IAAI,IAAA,kBAAU,EAAC,oBAAoB,CAAC,CAAC,CAAC;YAClE,IAAA,cAAM,EAAC,CAAC,UAAU,IAAI,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC,CAAC;SACjD;QAED,MAAM,GAAG,GAAG,mBAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YACtB,OAAO,EAAE,SAAS;YAClB,UAAU;YACV,oBAAoB;YACpB,UAAU;SACb,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,SAAsB;QAC7B,MAAM,GAAG,GAAG,mBAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;QACP,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,OAAuB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;SACtC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,OAAuB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACJ;AAtKD,gDAsKC;AAED,MAAa,cAAc;IAKvB,YAAY,cAAkD;QAHtD,cAAS,GAAG,KAAK,CAAC;QAItB,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;SACzC;aAAM,IAAI,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,eAAe,GAAG,CAAC,cAAc,CAAC,CAAC;SAC3C;aAAM;YACH,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;SACpC;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK;QACD,MAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,aAAa,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACpE;QAED,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3F,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzC,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,kBAAkB,CAAC,OAAuB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,OAAO,EAAE;YACT,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAEjG,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,MAAM,CAAC,aAAa,GAAG,oBAAoB,CAAC;aAC/C;iBAAM;gBACH,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACrC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;aACN;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,0DAA0D;IAC1D,aAAa,CAAC,KAAqB;QAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,+DAA+D;IAC/D,eAAe,CAAC,QAA8B;QAC1C,IAAA,cAAM,EAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5B,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE;YACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C;IACL,CAAC;IAED,MAAM,CAAC,KAAqB;QACxB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1D,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,6DAA6D;IAC7D,iBAAiB;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,gBAAgB,CAAC,OAAsD;QACnE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,OAAO,KAAK,iCAAyB,EAAE;YACvC,OAAO,IAAI,CAAC;SACf;QAED,OAAO,CACH,OAAO,KAAK,SAAS;YACrB,IAAI,CAAC,eAAe,KAAK,SAAS;YAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAClD,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,QAA0B;QACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gBAAgB,CAAC,OAA2C;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;SACV;QAED,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;aAC7B;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtC;IACL,CAAC;IAED,IAAI;QACA,0DAA0D;QAC1D,IAAA,cAAM,EAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM;QACF,sDAAsD;QACtD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,cAAc,CACV,SAAsB,EACtB,UAA4B,EAC5B,oBAA2B,EAC3B,UAAiB;QAEjB,IAAA,cAAM,EAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YAC9C,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ;QACJ,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACvC,KAAK,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,oDAAoD;QACpD,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,oBAAoB,CAAC,QAAkE;QACnF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;YAClD,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,cAAc,CAAC,KAAa;QACxB,IAAA,cAAM,EAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACJ;AArLD,wCAqLC"}
|
@@ -80,8 +80,8 @@ class TypeWalker {
|
|
80
80
|
var _a;
|
81
81
|
const aliasInfo = (_a = type.props) === null || _a === void 0 ? void 0 : _a.typeAliasInfo;
|
82
82
|
(0, debug_1.assert)(aliasInfo !== undefined);
|
83
|
-
if (aliasInfo.
|
84
|
-
for (const typeArg of aliasInfo.
|
83
|
+
if (aliasInfo.typeArgs) {
|
84
|
+
for (const typeArg of aliasInfo.typeArgs) {
|
85
85
|
this.walk(typeArg);
|
86
86
|
if (this._isWalkCanceled) {
|
87
87
|
break;
|
@@ -106,7 +106,7 @@ class TypeWalker {
|
|
106
106
|
for (let i = 0; i < type.shared.parameters.length; i++) {
|
107
107
|
// Ignore parameters such as "*" that have no name.
|
108
108
|
if (type.shared.parameters[i].name) {
|
109
|
-
const paramType = types_1.FunctionType.
|
109
|
+
const paramType = types_1.FunctionType.getEffectiveParamType(type, i);
|
110
110
|
this.walk(paramType);
|
111
111
|
if (this._isWalkCanceled) {
|
112
112
|
break;
|
@@ -131,7 +131,7 @@ class TypeWalker {
|
|
131
131
|
visitClass(type) {
|
132
132
|
var _a;
|
133
133
|
if (!types_1.ClassType.isPseudoGenericClass(type)) {
|
134
|
-
const typeArgs = ((_a = type.priv.
|
134
|
+
const typeArgs = ((_a = type.priv.tupleTypeArgs) === null || _a === void 0 ? void 0 : _a.map((t) => t.type)) || type.priv.typeArgs;
|
135
135
|
if (typeArgs) {
|
136
136
|
for (const argType of typeArgs) {
|
137
137
|
this.walk(argType);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typeWalker.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeWalker.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,2CAAsD;AACtD,mCAciB;AAEjB,MAAa,UAAU;IAAvB;QACY,oBAAe,GAAG,CAAC,CAAC;QACpB,oBAAe,GAAG,KAAK,CAAC;QACxB,uBAAkB,GAAG,KAAK,CAAC;IAuKvC,CAAC;IArKG,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,IAAU;;QACX,IAAI,IAAI,CAAC,eAAe,GAAG,6BAAqB,EAAE;YAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACV;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO;SACV;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB;gBACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YAEV;gBACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,MAAM;YAEV;gBACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YAEV;gBACI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YAEV;gBACI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;YAEV;gBACI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM;YAEV;gBACI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YAEV;gBACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM;YAEV;gBACI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YAEV;gBACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YAEV;gBACI,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,UAAU;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,IAAU;;QACrB,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC;QAC5C,IAAA,cAAM,EAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAEhC,IAAI,SAAS,CAAC,
|
1
|
+
{"version":3,"file":"typeWalker.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeWalker.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { DiagnosticAddendum } from '../common/diagnostic';
|
2
2
|
import { ClassNode, ExpressionNode, IndexNode } from '../parser/parseNodes';
|
3
|
-
import {
|
3
|
+
import { Arg, EvaluatorUsage, TypeEvaluator, TypeResult, TypeResultWithNode } from './typeEvaluatorTypes';
|
4
4
|
import { ClassType, Type, TypedDictEntries, TypedDictEntry } from './types';
|
5
5
|
import { AssignTypeFlags } from './typeUtils';
|
6
6
|
import { TypeVarContext } from './typeVarContext';
|
7
|
-
export declare function createTypedDictType(evaluator: TypeEvaluator, errorNode: ExpressionNode, typedDictClass: ClassType, argList:
|
7
|
+
export declare function createTypedDictType(evaluator: TypeEvaluator, errorNode: ExpressionNode, typedDictClass: ClassType, argList: Arg[]): ClassType;
|
8
8
|
export declare function synthesizeTypedDictClassMethods(evaluator: TypeEvaluator, node: ClassNode | ExpressionNode, classType: ClassType): void;
|
9
9
|
export declare function getTypedDictMembersForClass(evaluator: TypeEvaluator, classType: ClassType, allowNarrowed?: boolean): TypedDictEntries;
|
10
10
|
export declare function getTypedDictMappingEquivalent(evaluator: TypeEvaluator, classType: ClassType): Type | undefined;
|