@zzzen/pyright-internal 1.2.0-dev.20250209 → 1.2.0-dev.20250216
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 +1 -1
- package/dist/analyzer/checker.js +30 -84
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintTracker.d.ts +2 -2
- package/dist/analyzer/constraintTracker.js +11 -5
- package/dist/analyzer/constraintTracker.js.map +1 -1
- package/dist/analyzer/constructors.js +2 -2
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -1
- package/dist/analyzer/program.d.ts +1 -0
- package/dist/analyzer/program.js +4 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +26 -11
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +1 -0
- package/dist/analyzer/service.js +3 -1
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +10 -0
- package/dist/analyzer/sourceFile.js +5 -0
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
- package/dist/analyzer/sourceFileInfoUtils.js +12 -11
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +146 -42
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
- package/dist/analyzer/typeGuards.js +20 -3
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -2
- package/dist/backgroundAnalysisBase.js +14 -13
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +6 -2
- package/dist/backgroundThreadBase.js +7 -1
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/fileSystem.d.ts +2 -0
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +0 -24
- package/dist/common/languageServerInterface.js.map +1 -1
- package/dist/common/realFileSystem.d.ts +2 -0
- package/dist/common/realFileSystem.js +8 -0
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceKeys.d.ts +1 -1
- package/dist/common/serviceProviderExtensions.d.ts +1 -1
- package/dist/common/serviceProviderExtensions.js +2 -2
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/uri/uriMap.d.ts +17 -0
- package/dist/common/uri/uriMap.js +76 -0
- package/dist/common/uri/uriMap.js.map +1 -0
- package/dist/languageServerBase.d.ts +2 -1
- package/dist/languageServerBase.js +2 -0
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/completionProvider.js +1 -1
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.js +9 -2
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +0 -4
- package/dist/localization/localize.js +0 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +7 -7
- package/dist/localization/package.nls.de.json +7 -7
- package/dist/localization/package.nls.en-us.json +0 -4
- package/dist/localization/package.nls.es.json +7 -7
- package/dist/localization/package.nls.fr.json +7 -7
- package/dist/localization/package.nls.it.json +7 -7
- package/dist/localization/package.nls.ja.json +7 -7
- package/dist/localization/package.nls.ko.json +7 -7
- package/dist/localization/package.nls.pl.json +7 -7
- package/dist/localization/package.nls.pt-br.json +7 -7
- package/dist/localization/package.nls.qps-ploc.json +3 -3
- package/dist/localization/package.nls.ru.json +7 -7
- package/dist/localization/package.nls.tr.json +7 -7
- package/dist/localization/package.nls.zh-cn.json +7 -7
- package/dist/localization/package.nls.zh-tw.json +7 -7
- package/dist/partialStubService.d.ts +26 -0
- package/dist/partialStubService.js +138 -0
- package/dist/partialStubService.js.map +1 -0
- package/dist/pyrightFileSystem.d.ts +1 -21
- package/dist/pyrightFileSystem.js +7 -137
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +7 -4
- package/dist/readonlyAugmentedFileSystem.js +124 -60
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tests/completions.test.js +23 -0
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/fourslash/rename.typeParams.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/rename.typeParams.fourslash.js +27 -0
- package/dist/tests/fourslash/rename.typeParams.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/testState.js +3 -1
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +2 -0
- package/dist/tests/harness/vfs/filesystem.js +5 -2
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +8 -2
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/pyrightFileSystem.test.js +15 -8
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +2 -2
- package/dist/tests/typeEvaluator6.test.js +4 -0
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +1 -1
- package/dist/tests/typeEvaluator8.test.js +1 -1
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +1 -1
@@ -81,7 +81,6 @@ export declare class Checker extends ParseTreeWalker {
|
|
81
81
|
private _validateStandardCollectionInstantiation;
|
82
82
|
private _validateContainmentTypes;
|
83
83
|
private _validateComparisonTypes;
|
84
|
-
private _isTypeComparable;
|
85
84
|
private _validateGeneratorReturnType;
|
86
85
|
private _isTypeValidForUnusedValueTest;
|
87
86
|
private _validateFunctionTypeVarUsage;
|
@@ -148,6 +147,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
148
147
|
private _isMethodExemptFromLsp;
|
149
148
|
private _validateOverrideDecoratorNotPresent;
|
150
149
|
private _validateBaseClassOverride;
|
150
|
+
private _isFinalFunction;
|
151
151
|
private _validatePropertyOverride;
|
152
152
|
private _validateMethod;
|
153
153
|
private _validateSuperCallForMethod;
|
package/dist/analyzer/checker.js
CHANGED
@@ -1382,7 +1382,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1382
1382
|
if (isComparable) {
|
1383
1383
|
return;
|
1384
1384
|
}
|
1385
|
-
if (this.
|
1385
|
+
if (this._evaluator.isTypeComparable(leftSubtype, rightSubtype)) {
|
1386
1386
|
isComparable = true;
|
1387
1387
|
}
|
1388
1388
|
return rightSubtype;
|
@@ -1399,71 +1399,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1399
1399
|
}
|
1400
1400
|
}
|
1401
1401
|
}
|
1402
|
-
// Determines whether the two types are potentially comparable -- i.e.
|
1403
|
-
// their types overlap in such a way that it makes sense for them to
|
1404
|
-
// be compared with an == or != operator.
|
1405
|
-
_isTypeComparable(leftType, rightType) {
|
1406
|
-
if ((0, types_1.isAnyOrUnknown)(leftType) || (0, types_1.isAnyOrUnknown)(rightType)) {
|
1407
|
-
return true;
|
1408
|
-
}
|
1409
|
-
if ((0, types_1.isNever)(leftType) || (0, types_1.isNever)(rightType)) {
|
1410
|
-
return false;
|
1411
|
-
}
|
1412
|
-
if ((0, types_1.isModule)(leftType) || (0, types_1.isModule)(rightType)) {
|
1413
|
-
return (0, types_1.isTypeSame)(leftType, rightType, { ignoreConditions: true });
|
1414
|
-
}
|
1415
|
-
const isLeftCallable = (0, types_1.isFunction)(leftType) || (0, types_1.isOverloaded)(leftType);
|
1416
|
-
const isRightCallable = (0, types_1.isFunction)(rightType) || (0, types_1.isOverloaded)(rightType);
|
1417
|
-
if (isLeftCallable !== isRightCallable) {
|
1418
|
-
return false;
|
1419
|
-
}
|
1420
|
-
if ((0, types_1.isInstantiableClass)(leftType) || ((0, types_1.isClassInstance)(leftType) && types_1.ClassType.isBuiltIn(leftType, 'type'))) {
|
1421
|
-
if ((0, types_1.isInstantiableClass)(rightType) ||
|
1422
|
-
((0, types_1.isClassInstance)(rightType) && types_1.ClassType.isBuiltIn(rightType, 'type'))) {
|
1423
|
-
const genericLeftType = types_1.ClassType.specialize(leftType, /* typeArgs */ undefined);
|
1424
|
-
const genericRightType = types_1.ClassType.specialize(rightType, /* typeArgs */ undefined);
|
1425
|
-
if (this._evaluator.assignType(genericLeftType, genericRightType) ||
|
1426
|
-
this._evaluator.assignType(genericRightType, genericLeftType)) {
|
1427
|
-
return true;
|
1428
|
-
}
|
1429
|
-
}
|
1430
|
-
// Does the class have an operator overload for eq?
|
1431
|
-
const metaclass = leftType.shared.effectiveMetaclass;
|
1432
|
-
if (metaclass && (0, types_1.isClass)(metaclass)) {
|
1433
|
-
if ((0, typeUtils_1.lookUpClassMember)(metaclass, '__eq__', 4 /* MemberAccessFlags.SkipObjectBaseClass */)) {
|
1434
|
-
return true;
|
1435
|
-
}
|
1436
|
-
}
|
1437
|
-
return false;
|
1438
|
-
}
|
1439
|
-
if ((0, types_1.isClassInstance)(leftType)) {
|
1440
|
-
if ((0, types_1.isClass)(rightType)) {
|
1441
|
-
const genericLeftType = types_1.ClassType.specialize(leftType, /* typeArgs */ undefined);
|
1442
|
-
const genericRightType = types_1.ClassType.specialize(rightType, /* typeArgs */ undefined);
|
1443
|
-
if (this._evaluator.assignType(genericLeftType, genericRightType) ||
|
1444
|
-
this._evaluator.assignType(genericRightType, genericLeftType)) {
|
1445
|
-
return true;
|
1446
|
-
}
|
1447
|
-
// Assume that if the types are disjoint and built-in classes that they
|
1448
|
-
// will never be comparable.
|
1449
|
-
if (types_1.ClassType.isBuiltIn(leftType) && types_1.ClassType.isBuiltIn(rightType) && types_1.TypeBase.isInstance(rightType)) {
|
1450
|
-
return false;
|
1451
|
-
}
|
1452
|
-
}
|
1453
|
-
// Does the class have an operator overload for eq?
|
1454
|
-
const eqMethod = (0, typeUtils_1.lookUpClassMember)(types_1.ClassType.cloneAsInstantiable(leftType), '__eq__', 4 /* MemberAccessFlags.SkipObjectBaseClass */);
|
1455
|
-
if (eqMethod) {
|
1456
|
-
// If this is a synthesized method for a dataclass, we can assume
|
1457
|
-
// that other dataclass types will not be comparable.
|
1458
|
-
if (types_1.ClassType.isDataClass(leftType) && eqMethod.symbol.getSynthesizedType()) {
|
1459
|
-
return false;
|
1460
|
-
}
|
1461
|
-
return true;
|
1462
|
-
}
|
1463
|
-
return false;
|
1464
|
-
}
|
1465
|
-
return true;
|
1466
|
-
}
|
1467
1402
|
// If the function is a generator, validates that its annotated return type
|
1468
1403
|
// is appropriate for a generator.
|
1469
1404
|
_validateGeneratorReturnType(node, functionType) {
|
@@ -4631,24 +4566,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4631
4566
|
if ((0, types_1.isFunction)(baseType) || (0, types_1.isOverloaded)(baseType)) {
|
4632
4567
|
const diagAddendum = new diagnostic_1.DiagnosticAddendum();
|
4633
4568
|
// Determine whether this is an attempt to override a method marked @final.
|
4634
|
-
|
4635
|
-
// Private names (starting with double underscore) are exempt from this check.
|
4636
|
-
if (!SymbolNameUtils.isPrivateName(memberName)) {
|
4637
|
-
if ((0, types_1.isFunction)(baseType) && types_1.FunctionType.isFinal(baseType)) {
|
4638
|
-
reportFinalMethodOverride = true;
|
4639
|
-
}
|
4640
|
-
else if ((0, types_1.isOverloaded)(baseType)) {
|
4641
|
-
const overloads = types_1.OverloadedType.getOverloads(baseType);
|
4642
|
-
const impl = types_1.OverloadedType.getImplementation(baseType);
|
4643
|
-
if (overloads.some((overload) => types_1.FunctionType.isFinal(overload))) {
|
4644
|
-
reportFinalMethodOverride = true;
|
4645
|
-
}
|
4646
|
-
if (impl && (0, types_1.isFunction)(impl) && types_1.FunctionType.isFinal(impl)) {
|
4647
|
-
reportFinalMethodOverride = true;
|
4648
|
-
}
|
4649
|
-
}
|
4650
|
-
}
|
4651
|
-
if (reportFinalMethodOverride) {
|
4569
|
+
if (this._isFinalFunction(memberName, baseType)) {
|
4652
4570
|
const decl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overrideSymbol);
|
4653
4571
|
if (decl && decl.type === 5 /* DeclarationType.Function */) {
|
4654
4572
|
const diag = this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.finalMethodOverride().format({
|
@@ -4857,6 +4775,25 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4857
4775
|
}
|
4858
4776
|
}
|
4859
4777
|
}
|
4778
|
+
_isFinalFunction(name, type) {
|
4779
|
+
if (SymbolNameUtils.isPrivateName(name)) {
|
4780
|
+
return false;
|
4781
|
+
}
|
4782
|
+
if ((0, types_1.isFunction)(type) && types_1.FunctionType.isFinal(type)) {
|
4783
|
+
return true;
|
4784
|
+
}
|
4785
|
+
if ((0, types_1.isOverloaded)(type)) {
|
4786
|
+
const overloads = types_1.OverloadedType.getOverloads(type);
|
4787
|
+
const impl = types_1.OverloadedType.getImplementation(type);
|
4788
|
+
if (overloads.some((overload) => types_1.FunctionType.isFinal(overload))) {
|
4789
|
+
return true;
|
4790
|
+
}
|
4791
|
+
if (impl && (0, types_1.isFunction)(impl) && types_1.FunctionType.isFinal(impl)) {
|
4792
|
+
return true;
|
4793
|
+
}
|
4794
|
+
}
|
4795
|
+
return false;
|
4796
|
+
}
|
4860
4797
|
_validatePropertyOverride(baseClassType, childClassType, baseType, childType, overrideSymbol, memberName) {
|
4861
4798
|
const propMethodInfo = [
|
4862
4799
|
['fget', (c) => c.priv.fgetInfo?.methodType],
|
@@ -4893,6 +4830,15 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4893
4830
|
}
|
4894
4831
|
return;
|
4895
4832
|
}
|
4833
|
+
else if (this._isFinalFunction(methodName, baseClassPropMethod)) {
|
4834
|
+
const decl = (0, symbolUtils_1.getLastTypedDeclarationForSymbol)(overrideSymbol);
|
4835
|
+
if (decl && decl.type === 5 /* DeclarationType.Function */) {
|
4836
|
+
this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportIncompatibleMethodOverride, localize_1.LocMessage.finalMethodOverride().format({
|
4837
|
+
name: memberName,
|
4838
|
+
className: baseClassType.shared.name,
|
4839
|
+
}), decl.node.d.name);
|
4840
|
+
}
|
4841
|
+
}
|
4896
4842
|
const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType, this._evaluator.getTypeClassType());
|
4897
4843
|
if (!(0, types_1.isFunction)(subclassMethodType)) {
|
4898
4844
|
return;
|