@zzzen/pyright-internal 1.2.0-dev.20240107 → 1.2.0-dev.20240114
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/checker.d.ts +2 -0
- package/dist/analyzer/checker.js +64 -14
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +2 -2
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +6 -0
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/dataClasses.js +2 -2
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/decorators.js +9 -9
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +2 -2
- package/dist/analyzer/importResolver.js +93 -24
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/operations.js +4 -3
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +37 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +4 -4
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +1 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +27 -20
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +1 -1
- package/dist/analyzer/service.js +7 -6
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +2 -2
- package/dist/analyzer/sourceFile.js +5 -5
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +228 -133
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +4 -3
- package/dist/analyzer/typeEvaluatorTypes.js +2 -4
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +14 -9
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +2 -1
- package/dist/analyzer/typeUtils.js +13 -0
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/types.d.ts +9 -5
- package/dist/analyzer/types.js +38 -23
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +12 -11
- package/dist/backgroundAnalysisBase.js +60 -64
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +6 -5
- package/dist/backgroundThreadBase.js +63 -60
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/quickActionCommand.js +1 -1
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/common/cancellationUtils.d.ts +6 -3
- package/dist/common/cancellationUtils.js +29 -5
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/commandUtils.d.ts +2 -0
- package/dist/common/commandUtils.js +24 -0
- package/dist/common/commandUtils.js.map +1 -0
- package/dist/common/extensibility.d.ts +7 -6
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.js +19 -13
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fullAccessHost.d.ts +1 -1
- package/dist/common/fullAccessHost.js +2 -2
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/host.d.ts +2 -2
- package/dist/common/host.js.map +1 -1
- package/dist/common/realFileSystem.js +8 -8
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceProvider.js +8 -1
- package/dist/common/serviceProvider.js.map +1 -1
- package/dist/common/uri/baseUri.d.ts +4 -1
- package/dist/common/uri/baseUri.js +7 -1
- package/dist/common/uri/baseUri.js.map +1 -1
- package/dist/common/uri/emptyUri.d.ts +3 -0
- package/dist/common/uri/emptyUri.js +9 -0
- package/dist/common/uri/emptyUri.js.map +1 -1
- package/dist/common/uri/fileUri.d.ts +2 -0
- package/dist/common/uri/fileUri.js +6 -0
- package/dist/common/uri/fileUri.js.map +1 -1
- package/dist/common/uri/memoization.js +1 -1
- package/dist/common/uri/memoization.js.map +1 -1
- package/dist/common/uri/uri.d.ts +4 -1
- package/dist/common/uri/uri.js +5 -2
- package/dist/common/uri/uri.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +2 -0
- package/dist/common/uri/uriUtils.js +18 -1
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/common/uri/webUri.d.ts +2 -0
- package/dist/common/uri/webUri.js +7 -1
- package/dist/common/uri/webUri.js.map +1 -1
- package/dist/common/workspaceEditUtils.d.ts +6 -5
- package/dist/common/workspaceEditUtils.js +18 -17
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +1 -0
- package/dist/languageServerBase.js +28 -25
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -2
- package/dist/languageService/analyzerServiceExecutor.js +6 -5
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.js +3 -3
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +9 -7
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +3 -2
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +2 -4
- package/dist/languageService/completionProvider.js +14 -18
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +5 -4
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/navigationUtils.js +2 -1
- package/dist/languageService/navigationUtils.js.map +1 -1
- package/dist/languageService/renameProvider.js +2 -2
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +2 -1
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +5 -4
- package/dist/localization/localize.js +3 -2
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +19 -4
- package/dist/localization/package.nls.de.json +19 -4
- package/dist/localization/package.nls.en-us.json +3 -2
- package/dist/localization/package.nls.es.json +19 -4
- package/dist/localization/package.nls.fr.json +18 -3
- package/dist/localization/package.nls.it.json +19 -4
- package/dist/localization/package.nls.ja.json +19 -4
- package/dist/localization/package.nls.ko.json +19 -4
- package/dist/localization/package.nls.pl.json +19 -4
- package/dist/localization/package.nls.pt-br.json +19 -4
- package/dist/localization/package.nls.qps-ploc.json +19 -4
- package/dist/localization/package.nls.ru.json +18 -3
- package/dist/localization/package.nls.tr.json +19 -4
- package/dist/localization/package.nls.zh-cn.json +19 -4
- package/dist/localization/package.nls.zh-tw.json +19 -4
- package/dist/parser/parser.d.ts +0 -3
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.d.ts +2 -4
- package/dist/parser/tokenizer.js +5 -6
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/parser/tokenizerTypes.d.ts +2 -2
- package/dist/parser/tokenizerTypes.js.map +1 -1
- package/dist/pyright.js +3 -3
- package/dist/pyright.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +8 -8
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/completions.test.js +3 -3
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +10 -2
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/filesystem.test.js +4 -4
- package/dist/tests/filesystem.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +22 -8
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/fourslash/rename.multipleDecl.fourslash.d.ts +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +4 -0
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.d.ts +3 -0
- package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +13 -0
- package/dist/tests/harness/fourslash/testState.js +13 -8
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/factory.d.ts +1 -1
- package/dist/tests/harness/vfs/factory.js +4 -4
- package/dist/tests/harness/vfs/factory.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +1 -1
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +11 -12
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/serialization.test.d.ts +2 -0
- package/dist/tests/serialization.test.js +88 -0
- package/dist/tests/serialization.test.js.map +1 -0
- package/dist/tests/service.test.js +1 -1
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +2 -3
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +3 -3
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +2 -2
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/testState.test.js +1 -1
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testStateUtils.js +2 -2
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +1 -2
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +12 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +6 -6
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +6 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +4 -4
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/uri.test.js +30 -7
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +8 -8
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/workspaceFactory.js +1 -1
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +2 -1
@@ -105,6 +105,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
105
105
|
private _validateIsInstanceCall;
|
106
106
|
private _validateUnsafeProtocolOverlap;
|
107
107
|
private _isTypeSupportedTypeForIsInstance;
|
108
|
+
private _validateNotDataProtocol;
|
108
109
|
private _isSymbolPrivate;
|
109
110
|
private _reportDeprecatedClassProperty;
|
110
111
|
private _reportDeprecatedUseForMemberAccess;
|
@@ -125,6 +126,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
125
126
|
private _reportDuplicateEnumMembers;
|
126
127
|
private _validateProtocolCompatibility;
|
127
128
|
private _validateDataClassPostInit;
|
129
|
+
private _isUnimplementedProtocolMethod;
|
128
130
|
private _validateFinalClassNotAbstract;
|
129
131
|
private _validateInstanceVariableInitialization;
|
130
132
|
private _validateProtocolTypeParamVariance;
|
package/dist/analyzer/checker.js
CHANGED
@@ -1954,6 +1954,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1954
1954
|
else if ((0, types_1.isClassInstance)(exceptionType)) {
|
1955
1955
|
const iterableType = (_b = (_a = this._evaluator.getTypeOfIterator({ type: exceptionType }, /* isAsync */ false, errorNode)) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : types_1.UnknownType.create();
|
1956
1956
|
resultingExceptionType = (0, typeUtils_1.mapSubtypes)(iterableType, (subtype) => {
|
1957
|
+
subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
1957
1958
|
if ((0, types_1.isAnyOrUnknown)(subtype) || (0, types_1.isNever)(subtype)) {
|
1958
1959
|
return subtype;
|
1959
1960
|
}
|
@@ -2553,12 +2554,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2553
2554
|
if (!isInstanceCheck) {
|
2554
2555
|
const diag = new diagnostic_1.DiagnosticAddendum();
|
2555
2556
|
(0, typeUtils_1.doForEachSubtype)(arg1Type, (arg1Subtype) => {
|
2556
|
-
if ((0, types_1.
|
2557
|
-
types_1.ClassType.
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2561
|
-
})
|
2557
|
+
if ((0, types_1.isClassInstance)(arg1Subtype) &&
|
2558
|
+
types_1.ClassType.isTupleClass(arg1Subtype) &&
|
2559
|
+
arg1Subtype.tupleTypeArguments) {
|
2560
|
+
arg1Subtype.tupleTypeArguments.forEach((typeArg) => {
|
2561
|
+
this._validateNotDataProtocol(typeArg.type, diag);
|
2562
|
+
});
|
2563
|
+
}
|
2564
|
+
else {
|
2565
|
+
this._validateNotDataProtocol(arg1Subtype, diag);
|
2562
2566
|
}
|
2563
2567
|
});
|
2564
2568
|
if (!diag.isEmpty()) {
|
@@ -2761,6 +2765,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2761
2765
|
(0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
|
2762
2766
|
subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
2763
2767
|
subtype = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(subtype);
|
2768
|
+
if (subtype.specialForm && types_1.ClassType.isBuiltIn(subtype.specialForm, 'TypeAliasType')) {
|
2769
|
+
diag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeAliasInstanceCheck());
|
2770
|
+
isSupported = false;
|
2771
|
+
return;
|
2772
|
+
}
|
2764
2773
|
switch (subtype.category) {
|
2765
2774
|
case 2 /* TypeCategory.Any */:
|
2766
2775
|
case 1 /* TypeCategory.Unknown */:
|
@@ -2809,6 +2818,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2809
2818
|
});
|
2810
2819
|
return isSupported;
|
2811
2820
|
}
|
2821
|
+
_validateNotDataProtocol(type, diag) {
|
2822
|
+
if ((0, types_1.isInstantiableClass)(type) && types_1.ClassType.isProtocolClass(type) && !(0, protocols_1.isMethodOnlyProtocol)(type)) {
|
2823
|
+
diag.addMessage(localize_1.Localizer.DiagnosticAddendum.dataProtocolUnsupported().format({
|
2824
|
+
name: type.details.name,
|
2825
|
+
}));
|
2826
|
+
}
|
2827
|
+
}
|
2812
2828
|
_isSymbolPrivate(nameValue, scopeType) {
|
2813
2829
|
// All variables within the scope of a function or a list
|
2814
2830
|
// comprehension are considered private.
|
@@ -3444,14 +3460,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3444
3460
|
}
|
3445
3461
|
}
|
3446
3462
|
else if (decls[0].type === 5 /* DeclarationType.Function */) {
|
3447
|
-
if (
|
3448
|
-
if (!
|
3449
|
-
|
3450
|
-
|
3451
|
-
|
3452
|
-
|
3453
|
-
}));
|
3454
|
-
}
|
3463
|
+
if (this._isUnimplementedProtocolMethod(member.symbol)) {
|
3464
|
+
if (!isSymbolImplemented(name)) {
|
3465
|
+
diagAddendum.addMessage(localize_1.Localizer.DiagnosticAddendum.missingProtocolMember().format({
|
3466
|
+
name,
|
3467
|
+
classType: member.classType.details.name,
|
3468
|
+
}));
|
3455
3469
|
}
|
3456
3470
|
}
|
3457
3471
|
}
|
@@ -3533,6 +3547,42 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3533
3547
|
paramIndex++;
|
3534
3548
|
});
|
3535
3549
|
}
|
3550
|
+
// Determine whether a method defined in a protocol should be considered
|
3551
|
+
// "unimplemented". This is an under-specified part of the typing spec.
|
3552
|
+
_isUnimplementedProtocolMethod(symbol) {
|
3553
|
+
const symbolType = this._evaluator.getEffectiveTypeOfSymbol(symbol);
|
3554
|
+
// Behavior differs between stub files and source files.
|
3555
|
+
const decls = symbol.getDeclarations();
|
3556
|
+
const isDeclaredInStubFile = decls.length > 0 && (0, sourceMapper_1.isStubFile)(decls[0].uri);
|
3557
|
+
if ((0, types_1.isFunction)(symbolType)) {
|
3558
|
+
const decl = symbolType.details.declaration;
|
3559
|
+
if (decl) {
|
3560
|
+
return isDeclaredInStubFile
|
3561
|
+
? types_1.FunctionType.isAbstractMethod(symbolType)
|
3562
|
+
: ParseTreeUtils.isSuiteEmpty(decl.node.suite);
|
3563
|
+
}
|
3564
|
+
}
|
3565
|
+
else if ((0, types_1.isOverloadedFunction)(symbolType)) {
|
3566
|
+
// If an implementation is present and has an empty body, assume
|
3567
|
+
// the function is unimplemented.
|
3568
|
+
const impl = types_1.OverloadedFunctionType.getImplementation(symbolType);
|
3569
|
+
if (impl) {
|
3570
|
+
const decl = impl.details.declaration;
|
3571
|
+
if (decl) {
|
3572
|
+
return ParseTreeUtils.isSuiteEmpty(decl.node.suite);
|
3573
|
+
}
|
3574
|
+
return false;
|
3575
|
+
}
|
3576
|
+
if (isDeclaredInStubFile) {
|
3577
|
+
// If no implementation was present, see if any of the overloads
|
3578
|
+
// are marked as abstract.
|
3579
|
+
const overloads = types_1.OverloadedFunctionType.getOverloads(symbolType);
|
3580
|
+
return overloads.some((overload) => types_1.FunctionType.isAbstractMethod(overload));
|
3581
|
+
}
|
3582
|
+
return true;
|
3583
|
+
}
|
3584
|
+
return false;
|
3585
|
+
}
|
3536
3586
|
// If a class is marked final, it must implement all abstract methods,
|
3537
3587
|
// otherwise it is of no use.
|
3538
3588
|
_validateFinalClassNotAbstract(classType, errorNode) {
|