@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
package/dist/analyzer/checker.js
CHANGED
@@ -1,4 +1,17 @@
|
|
1
1
|
"use strict";
|
2
|
+
/*
|
3
|
+
* checker.ts
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
5
|
+
* Licensed under the MIT license.
|
6
|
+
* Author: Eric Traut
|
7
|
+
*
|
8
|
+
* A parse tree walker that performs static type checking for
|
9
|
+
* a source file. Most of its work is performed by the type
|
10
|
+
* evaluator, but this module touches every node in the file
|
11
|
+
* to ensure that all statements and expressions are evaluated
|
12
|
+
* and checked. It also performs some additional checks that
|
13
|
+
* cannot (or should not be) performed lazily.
|
14
|
+
*/
|
2
15
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
16
|
if (k2 === undefined) k2 = k;
|
4
17
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
@@ -20,19 +33,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
33
|
};
|
21
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
22
35
|
exports.Checker = void 0;
|
23
|
-
/*
|
24
|
-
* checker.ts
|
25
|
-
* Copyright (c) Microsoft Corporation.
|
26
|
-
* Licensed under the MIT license.
|
27
|
-
* Author: Eric Traut
|
28
|
-
*
|
29
|
-
* A parse tree walker that performs static type checking for
|
30
|
-
* a source file. Most of its work is performed by the type
|
31
|
-
* evaluator, but this module touches every node in the file
|
32
|
-
* to ensure that all statements and expressions are evaluated
|
33
|
-
* and checked. It also performs some additional checks that
|
34
|
-
* cannot (or should not be) performed lazily.
|
35
|
-
*/
|
36
36
|
const vscode_languageserver_1 = require("vscode-languageserver");
|
37
37
|
const debug_1 = require("../common/debug");
|
38
38
|
const diagnostic_1 = require("../common/diagnostic");
|
@@ -48,6 +48,7 @@ const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
|
48
48
|
const declaration_1 = require("./declaration");
|
49
49
|
const importResolver_1 = require("./importResolver");
|
50
50
|
const importStatementUtils_1 = require("./importStatementUtils");
|
51
|
+
const parameterUtils_1 = require("./parameterUtils");
|
51
52
|
const ParseTreeUtils = __importStar(require("./parseTreeUtils"));
|
52
53
|
const parseTreeWalker_1 = require("./parseTreeWalker");
|
53
54
|
const patternMatching_1 = require("./patternMatching");
|
@@ -3170,7 +3171,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3170
3171
|
!postInitType.details.declaration) {
|
3171
3172
|
return;
|
3172
3173
|
}
|
3173
|
-
const paramListDetails = (0,
|
3174
|
+
const paramListDetails = (0, parameterUtils_1.getParameterListDetails)(postInitType);
|
3174
3175
|
// If there is an *args or **kwargs parameter or a keyword-only separator,
|
3175
3176
|
// don't bother checking.
|
3176
3177
|
if (paramListDetails.argsIndex !== undefined ||
|
@@ -3736,6 +3737,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3736
3737
|
});
|
3737
3738
|
}
|
3738
3739
|
_validateOverrideDecoratorPresent(overrideType, baseMember) {
|
3740
|
+
var _a;
|
3739
3741
|
// Skip this check if disabled.
|
3740
3742
|
if (this._fileInfo.diagnosticRuleSet.reportImplicitOverride === 'none') {
|
3741
3743
|
return;
|
@@ -3747,9 +3749,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3747
3749
|
else if ((0, types_1.isOverloadedFunction)(overrideType)) {
|
3748
3750
|
overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
|
3749
3751
|
}
|
3752
|
+
else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
|
3753
|
+
const fgetSymbol = overrideType.details.fields.get('fget');
|
3754
|
+
if (fgetSymbol) {
|
3755
|
+
const fgetType = (_a = this._evaluator.getDeclaredTypeOfSymbol(fgetSymbol)) === null || _a === void 0 ? void 0 : _a.type;
|
3756
|
+
if (fgetType && (0, types_1.isFunction)(fgetType)) {
|
3757
|
+
overrideFunction = fgetType;
|
3758
|
+
}
|
3759
|
+
}
|
3760
|
+
}
|
3750
3761
|
if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || types_1.FunctionType.isOverridden(overrideFunction)) {
|
3751
3762
|
return;
|
3752
3763
|
}
|
3764
|
+
// Constructors are exempt.
|
3765
|
+
if (overrideFunction.details.name === '__init__' || overrideFunction.details.name === '__new__') {
|
3766
|
+
return;
|
3767
|
+
}
|
3753
3768
|
const funcNode = overrideFunction.details.declaration.node;
|
3754
3769
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportImplicitOverride, diagnosticRules_1.DiagnosticRule.reportImplicitOverride, localize_1.Localizer.Diagnostic.overrideDecoratorMissing().format({
|
3755
3770
|
name: funcNode.name.value,
|
@@ -3760,6 +3775,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3760
3775
|
// decorator. In this case, an error is reported because no base class has declared
|
3761
3776
|
// a method of the same name.
|
3762
3777
|
_validateOverrideDecoratorNotPresent(overrideType) {
|
3778
|
+
var _a;
|
3763
3779
|
let overrideFunction;
|
3764
3780
|
if ((0, types_1.isFunction)(overrideType)) {
|
3765
3781
|
overrideFunction = overrideType;
|
@@ -3767,6 +3783,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3767
3783
|
else if ((0, types_1.isOverloadedFunction)(overrideType)) {
|
3768
3784
|
overrideFunction = types_1.OverloadedFunctionType.getImplementation(overrideType);
|
3769
3785
|
}
|
3786
|
+
else if ((0, types_1.isClassInstance)(overrideType) && types_1.ClassType.isPropertyClass(overrideType)) {
|
3787
|
+
const fgetSymbol = overrideType.details.fields.get('fget');
|
3788
|
+
if (fgetSymbol) {
|
3789
|
+
const fgetType = (_a = this._evaluator.getDeclaredTypeOfSymbol(fgetSymbol)) === null || _a === void 0 ? void 0 : _a.type;
|
3790
|
+
if (fgetType && (0, types_1.isFunction)(fgetType)) {
|
3791
|
+
overrideFunction = fgetType;
|
3792
|
+
}
|
3793
|
+
}
|
3794
|
+
}
|
3770
3795
|
if (!(overrideFunction === null || overrideFunction === void 0 ? void 0 : overrideFunction.details.declaration) || !types_1.FunctionType.isOverridden(overrideFunction)) {
|
3771
3796
|
return;
|
3772
3797
|
}
|
@@ -4187,10 +4212,19 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4187
4212
|
return;
|
4188
4213
|
}
|
4189
4214
|
// Don't enforce this for an overloaded method because the "self" param
|
4190
|
-
// annotation can be used as a filter for the overload.
|
4215
|
+
// annotation can be used as a filter for the overload. This differs from
|
4216
|
+
// mypy, which enforces this check for overloads, but there are legitimate
|
4217
|
+
// uses for this in an overloaded method.
|
4191
4218
|
if (types_1.FunctionType.isOverloaded(functionType)) {
|
4192
4219
|
return;
|
4193
4220
|
}
|
4221
|
+
// If the declared type is LiteralString and the class is str, exempt this case.
|
4222
|
+
// It's used in the typeshed stubs.
|
4223
|
+
if ((0, types_1.isClassInstance)(paramType) &&
|
4224
|
+
types_1.ClassType.isBuiltIn(paramType, 'LiteralString') &&
|
4225
|
+
types_1.ClassType.isBuiltIn(classType, 'str')) {
|
4226
|
+
return;
|
4227
|
+
}
|
4194
4228
|
const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(functionType));
|
4195
4229
|
if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) {
|
4196
4230
|
// We exempt Never from this check because it has a legitimate use in this case.
|
@@ -4359,11 +4393,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4359
4393
|
});
|
4360
4394
|
}
|
4361
4395
|
_addDiagnosticForRegionComment(regionComment, message) {
|
4362
|
-
|
4363
|
-
|
4364
|
-
|
4365
|
-
|
4366
|
-
|
4396
|
+
return this._evaluator.addDiagnosticForTextRange(this._fileInfo, 'error', '', message, {
|
4397
|
+
// extend range to include # character
|
4398
|
+
start: regionComment.comment.start - 1,
|
4399
|
+
length: regionComment.comment.length + 1,
|
4400
|
+
});
|
4367
4401
|
}
|
4368
4402
|
}
|
4369
4403
|
exports.Checker = Checker;
|