@zzzen/pyright-internal 1.2.0-dev.20230326 → 1.2.0-dev.20230409
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/binder.d.ts +8 -0
- package/dist/analyzer/binder.js +46 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.js +1 -1
- package/dist/analyzer/checker.js +54 -20
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +4 -1
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +4 -3
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +8 -0
- package/dist/analyzer/declarationUtils.js +147 -1
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/importStatementUtils.js +1 -1
- package/dist/analyzer/parameterUtils.d.ts +25 -1
- package/dist/analyzer/parameterUtils.js +182 -1
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +39 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +2 -0
- package/dist/analyzer/program.js +62 -11
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +13 -13
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +3 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +1 -1
- package/dist/analyzer/regions.js +4 -4
- package/dist/analyzer/regions.js.map +1 -1
- package/dist/analyzer/service.js +17 -8
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +2 -2
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +1 -1
- package/dist/analyzer/sourceMapper.js +1 -1
- package/dist/analyzer/sourceMapperUtils.d.ts +0 -8
- package/dist/analyzer/sourceMapperUtils.js +18 -25
- package/dist/analyzer/sourceMapperUtils.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +2 -2
- package/dist/analyzer/symbolUtils.js +1 -1
- package/dist/analyzer/testWalker.js +3 -0
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +1 -1
- package/dist/analyzer/typeCacheUtils.js +25 -1
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +180 -150
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -3
- package/dist/analyzer/typeEvaluatorTypes.js +0 -1
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeEvaluatorWithTracker.js +3 -5
- package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
- package/dist/analyzer/typeGuards.js +182 -159
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +13 -25
- package/dist/analyzer/typeUtils.js +157 -235
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.js +6 -2
- package/dist/analyzer/typeVarContext.js.map +1 -1
- package/dist/analyzer/typedDicts.js +42 -7
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +1 -0
- package/dist/analyzer/types.js +10 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.js +1 -1
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/diagnosticSink.js +1 -1
- package/dist/common/envVarUtils.js +7 -7
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +1 -1
- package/dist/common/host.js +1 -1
- package/dist/common/lspUtils.js +1 -1
- package/dist/common/pathConsts.d.ts +1 -0
- package/dist/common/pathConsts.js +2 -1
- package/dist/common/pathConsts.js.map +1 -1
- package/dist/common/positionUtils.d.ts +2 -1
- package/dist/common/positionUtils.js +18 -12
- package/dist/common/positionUtils.js.map +1 -1
- package/dist/common/progressReporter.js +4 -1
- package/dist/common/progressReporter.js.map +1 -1
- package/dist/common/pythonVersion.js +1 -2
- package/dist/common/pythonVersion.js.map +1 -1
- package/dist/common/realFileSystem.js +1 -1
- package/dist/common/textEditTracker.js +1 -1
- package/dist/common/workspaceEditUtils.js +1 -1
- package/dist/languageServerBase.js +1 -1
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +2 -2
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.js +1 -0
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +7 -3
- package/dist/languageService/callHierarchyProvider.js +38 -6
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +1 -0
- package/dist/languageService/completionProvider.js +29 -10
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.js +2 -2
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +4 -1
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +1 -2
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +2 -0
- package/dist/languageService/hoverProvider.js +53 -43
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.js +1 -1
- package/dist/languageService/indentationUtils.js +7 -1
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/insertionPointUtils.js +2 -1
- package/dist/languageService/insertionPointUtils.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +2 -2
- package/dist/localization/localize.d.ts +0 -3
- package/dist/localization/localize.js +0 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +0 -1
- package/dist/pyright.js +1 -2
- package/dist/pyright.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +27 -0
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +1 -1
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/fourslash/fourslash.d.ts +5 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +34 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js +19 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js.map +1 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +39 -0
- package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/testState.d.ts +5 -0
- package/dist/tests/harness/fourslash/testState.js +21 -0
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/indentationUtils.reindent.test.js +19 -0
- package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
- package/dist/tests/insertionPointUtils.test.js +13 -0
- package/dist/tests/insertionPointUtils.test.js.map +1 -1
- package/dist/tests/moveSymbol.insertion.test.js +21 -0
- package/dist/tests/moveSymbol.insertion.test.js.map +1 -1
- package/dist/tests/positionUtils.test.d.ts +1 -0
- package/dist/tests/positionUtils.test.js +48 -0
- package/dist/tests/positionUtils.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +10 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +20 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +9 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +43 -115
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -5
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +1 -0
- package/dist/workspaceFactory.js +24 -14
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
- package/dist/analyzer/aliasDeclarationUtils.d.ts +0 -9
- package/dist/analyzer/aliasDeclarationUtils.js +0 -157
- package/dist/analyzer/aliasDeclarationUtils.js.map +0 -1
@@ -12,6 +12,16 @@ class NumberReference {
|
|
12
12
|
this.value = 0;
|
13
13
|
}
|
14
14
|
}
|
15
|
+
// Builds an array of imports from the 'from' to the 'to' entry where 'from'
|
16
|
+
// is on the front of the array and the item just before 'to' is on the
|
17
|
+
// back of the array.
|
18
|
+
function buildImportTree(to, from, next, token) {
|
19
|
+
const totalCountRef = new NumberReference();
|
20
|
+
const results = _buildImportTreeImpl(to, from, next, [], totalCountRef, token);
|
21
|
+
// Result should always have the 'from' node in it.
|
22
|
+
return results.length > 0 ? results : [from];
|
23
|
+
}
|
24
|
+
exports.buildImportTree = buildImportTree;
|
15
25
|
function _buildImportTreeImpl(to, from, next, previous, totalSearched, token) {
|
16
26
|
// Exit early if cancellation is requested or we've exceeded max count
|
17
27
|
if (totalSearched.value > MAX_TREE_SEARCH_COUNT || token.isCancellationRequested) {
|
@@ -22,36 +32,19 @@ function _buildImportTreeImpl(to, from, next, previous, totalSearched, token) {
|
|
22
32
|
// At the top, previous should have our way into this recursion.
|
23
33
|
return previous.length ? previous : [from];
|
24
34
|
}
|
25
|
-
|
35
|
+
if (previous.length > 1 && previous.find((s) => s === from)) {
|
26
36
|
// Fail the search, we're stuck in a loop.
|
27
37
|
return [];
|
28
38
|
}
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
return subentries;
|
36
|
-
}
|
39
|
+
const nextEntries = next(from);
|
40
|
+
for (let i = 0; i < nextEntries.length && !token.isCancellationRequested; i++) {
|
41
|
+
// Do a search through the next level to get to the 'to' entry.
|
42
|
+
const subentries = _buildImportTreeImpl(to, nextEntries[i], next, [...previous, from], totalSearched, token);
|
43
|
+
if (subentries.length > 0) {
|
44
|
+
return subentries;
|
37
45
|
}
|
38
46
|
}
|
39
|
-
// Search failed on this tree
|
47
|
+
// Search failed on this tree. Fail so we can exit recursion.
|
40
48
|
return [];
|
41
49
|
}
|
42
|
-
/**
|
43
|
-
* Builds an array of imports from the 'from' to the 'to' entry where 'from' is on the front of the array and
|
44
|
-
* the item just before 'to' is on the back of the array
|
45
|
-
* @param to
|
46
|
-
* @param from
|
47
|
-
* @param next
|
48
|
-
* @returns
|
49
|
-
*/
|
50
|
-
function buildImportTree(to, from, next, token) {
|
51
|
-
const totalCountRef = new NumberReference();
|
52
|
-
const results = _buildImportTreeImpl(to, from, next, [], totalCountRef, token);
|
53
|
-
// Result should always have the 'from' node in it.
|
54
|
-
return results.length > 0 ? results : [from];
|
55
|
-
}
|
56
|
-
exports.buildImportTree = buildImportTree;
|
57
50
|
//# sourceMappingURL=sourceMapperUtils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sourceMapperUtils.js","sourceRoot":"","sources":["../../../src/analyzer/sourceMapperUtils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,eAAe;IAArB;QACI,UAAK,GAAG,CAAC,CAAC;IACd,CAAC;CAAA;AAED,SAAS,oBAAoB,CACzB,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,QAAkB,EAClB,aAA8B,EAC9B,KAAwB;IAExB,sEAAsE;IACtE,IAAI,aAAa,CAAC,KAAK,GAAG,qBAAqB,IAAI,KAAK,CAAC,uBAAuB,EAAE;QAC9E,OAAO,EAAE,CAAC;KACb;IACD,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzB,IAAI,IAAI,KAAK,EAAE,EAAE;QACb,gEAAgE;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;
|
1
|
+
{"version":3,"file":"sourceMapperUtils.js","sourceRoot":"","sources":["../../../src/analyzer/sourceMapperUtils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,eAAe;IAArB;QACI,UAAK,GAAG,CAAC,CAAC;IACd,CAAC;CAAA;AAED,4EAA4E;AAC5E,uEAAuE;AACvE,qBAAqB;AACrB,SAAgB,eAAe,CAC3B,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,KAAwB;IAExB,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE/E,mDAAmD;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAXD,0CAWC;AAED,SAAS,oBAAoB,CACzB,EAAU,EACV,IAAY,EACZ,IAAgC,EAChC,QAAkB,EAClB,aAA8B,EAC9B,KAAwB;IAExB,sEAAsE;IACtE,IAAI,aAAa,CAAC,KAAK,GAAG,qBAAqB,IAAI,KAAK,CAAC,uBAAuB,EAAE;QAC9E,OAAO,EAAE,CAAC;KACb;IACD,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzB,IAAI,IAAI,KAAK,EAAE,EAAE;QACb,gEAAgE;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;QACzD,0CAA0C;QAC1C,OAAO,EAAE,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE;QAC3E,+DAA+D;QAC/D,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAE7G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,UAAU,CAAC;SACrB;KACJ;IAED,6DAA6D;IAC7D,OAAO,EAAE,CAAC;AACd,CAAC"}
|
@@ -5,8 +5,8 @@
|
|
5
5
|
* Licensed under the MIT license.
|
6
6
|
* Author: Eric Traut
|
7
7
|
*
|
8
|
-
*
|
9
|
-
*
|
8
|
+
* Functions that operate on expressions (parse node trees)
|
9
|
+
* whose values can be evaluated statically.
|
10
10
|
*/
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.evaluateStaticBoolLikeExpression = exports.evaluateStaticBoolExpression = void 0;
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* Licensed under the MIT license.
|
6
6
|
* Author: Eric Traut
|
7
7
|
*
|
8
|
-
*
|
8
|
+
* Functions that operate on Symbol objects.
|
9
9
|
*/
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
11
11
|
exports.isVisibleExternally = exports.isTypedDictMemberAccessedThroughIndex = exports.getLastTypedDeclaredForSymbol = void 0;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"testWalker.js","sourceRoot":"","sources":["../../../src/analyzer/testWalker.ts"],"names":[],"mappings":";AAAA
|
1
|
+
{"version":3,"file":"testWalker.js","sourceRoot":"","sources":["../../../src/analyzer/testWalker.ts"],"names":[],"mappings":"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"}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Copyright (c) Microsoft Corporation.
|
5
5
|
* Licensed under the MIT license.
|
6
6
|
*
|
7
|
-
* Converts various types into
|
7
|
+
* Converts various types into string representations.
|
8
8
|
*/
|
9
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
10
10
|
if (k2 === undefined) k2 = k;
|
@@ -98,12 +98,36 @@ class SpeculativeTypeTracker {
|
|
98
98
|
if (this._speculativeContextStack.some((context) => !context.allowCacheRetention)) {
|
99
99
|
return;
|
100
100
|
}
|
101
|
+
const maxCacheEntriesPerNode = 8;
|
101
102
|
let cacheEntries = this._speculativeTypeCache.get(node.id);
|
102
103
|
if (!cacheEntries) {
|
103
104
|
cacheEntries = [];
|
104
|
-
this._speculativeTypeCache.set(node.id, cacheEntries);
|
105
105
|
}
|
106
|
+
else {
|
107
|
+
cacheEntries = cacheEntries.filter((entry) => {
|
108
|
+
// Filter out any incomplete entries that no longer match the generation count.
|
109
|
+
// These are obsolete and cannot be used.
|
110
|
+
if (entry.typeResult.isIncomplete && entry.incompleteGenerationCount !== incompleteGenerationCount) {
|
111
|
+
return false;
|
112
|
+
}
|
113
|
+
// Filter out any entries that match the expected type of the
|
114
|
+
// new entry. The new entry replaces the old in this case.
|
115
|
+
if (expectedType) {
|
116
|
+
if (!entry.expectedType) {
|
117
|
+
return true;
|
118
|
+
}
|
119
|
+
return !(0, types_1.isTypeSame)(entry.expectedType, expectedType);
|
120
|
+
}
|
121
|
+
return !!entry.expectedType;
|
122
|
+
});
|
123
|
+
// Don't allow the cache to grow too large.
|
124
|
+
if (cacheEntries.length >= maxCacheEntriesPerNode) {
|
125
|
+
cacheEntries.slice(1);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
// Add the new entry.
|
106
129
|
cacheEntries.push({ typeResult, expectedType, incompleteGenerationCount });
|
130
|
+
this._speculativeTypeCache.set(node.id, cacheEntries);
|
107
131
|
}
|
108
132
|
getSpeculativeType(node, expectedType) {
|
109
133
|
if (this._speculativeContextStack.some((context) => ParseTreeUtils.isNodeContainedWithin(node, context.speculativeRootNode))) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typeCacheUtils.js","sourceRoot":"","sources":["../../../src/analyzer/typeCacheUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAAyC;AAEzC,iEAAmD;AACnD,mCAA2C;AA0B3C,oEAAoE;AACpE,uEAAuE;AACvE,qEAAqE;AACrE,8DAA8D;AAC9D,wEAAwE;AACxE,sDAAsD;AACtD,MAAa,sBAAsB;IAAnC;QACY,6BAAwB,GAAyB,EAAE,CAAC;QACpD,0BAAqB,GAAG,IAAI,GAAG,EAAkC,CAAC;
|
1
|
+
{"version":3,"file":"typeCacheUtils.js","sourceRoot":"","sources":["../../../src/analyzer/typeCacheUtils.ts"],"names":[],"mappings":"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"}
|