@zzzen/pyright-internal 1.2.0-dev.20260809 → 1.2.0-dev.20260816
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.js +87 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +37 -0
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +47 -7
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.js +18 -8
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +1 -0
- package/dist/analyzer/dataClasses.js +98 -19
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/decorators.js +18 -0
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/scope.d.ts +3 -0
- package/dist/analyzer/scope.js +10 -0
- package/dist/analyzer/scope.js.map +1 -1
- package/dist/analyzer/symbol.d.ts +4 -1
- package/dist/analyzer/symbol.js +8 -0
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/typeCacheUtils.d.ts +6 -2
- package/dist/analyzer/typeCacheUtils.js +16 -37
- package/dist/analyzer/typeCacheUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +955 -105
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +11 -8
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/types.d.ts +11 -1
- package/dist/analyzer/types.js +48 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/localization/localize.d.ts +6 -0
- package/dist/localization/localize.js +4 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +13 -0
- package/dist/tests/typeCacheUtils.test.d.ts +1 -0
- package/dist/tests/typeCacheUtils.test.js +69 -0
- package/dist/tests/typeCacheUtils.test.js.map +1 -0
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +12 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +33 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +25 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +318 -4
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/types.test.d.ts +1 -0
- package/dist/tests/types.test.js +63 -0
- package/dist/tests/types.test.js.map +1 -0
- package/dist/typeServer/typeGuards.js +4 -3
- package/dist/typeServer/typeGuards.js.map +1 -1
- package/package.json +1 -1
|
@@ -132,6 +132,7 @@ export declare class Checker extends ParseTreeWalker {
|
|
|
132
132
|
private _validateProtocolTypeParamVariance;
|
|
133
133
|
private _validateSlotsClassVarConflict;
|
|
134
134
|
private _validateConstructorConsistency;
|
|
135
|
+
private _validateDisjointBaseClass;
|
|
135
136
|
private _validateMultipleInheritanceBaseClasses;
|
|
136
137
|
private _validateMultipleInheritanceCompatibility;
|
|
137
138
|
private _validateMultipleInheritanceOverride;
|
package/dist/analyzer/checker.js
CHANGED
|
@@ -192,6 +192,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
192
192
|
this._validateBaseClassOverrides(classTypeResult.classType);
|
|
193
193
|
this._validateTypedDictOverrides(classTypeResult.classType);
|
|
194
194
|
this._validateOverloadDecoratorConsistency(classTypeResult.classType);
|
|
195
|
+
this._validateDisjointBaseClass(classTypeResult.classType, node.d.name);
|
|
195
196
|
this._validateMultipleInheritanceBaseClasses(classTypeResult.classType, node.d.name);
|
|
196
197
|
this._validateMultipleInheritanceCompatibility(classTypeResult.classType, node.d.name);
|
|
197
198
|
this._validateConstructorConsistency(classTypeResult.classType, node.d.name);
|
|
@@ -3997,6 +3998,42 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
|
3997
3998
|
}
|
|
3998
3999
|
}
|
|
3999
4000
|
}
|
|
4001
|
+
// Verifies that a class has a unique most-derived disjoint base.
|
|
4002
|
+
_validateDisjointBaseClass(classType, errorNode) {
|
|
4003
|
+
if (classType.shared.baseClasses.length < 2) {
|
|
4004
|
+
return;
|
|
4005
|
+
}
|
|
4006
|
+
const candidates = [];
|
|
4007
|
+
for (const baseClass of classType.shared.baseClasses) {
|
|
4008
|
+
if (!(0, types_1.isInstantiableClass)(baseClass)) {
|
|
4009
|
+
// An unknown base may introduce an unknown disjoint base, but it
|
|
4010
|
+
// cannot make two already-incompatible known bases compatible,
|
|
4011
|
+
// so keep collecting the known candidates.
|
|
4012
|
+
continue;
|
|
4013
|
+
}
|
|
4014
|
+
const candidate = types_1.ClassType.getDisjointBase(baseClass);
|
|
4015
|
+
if (!candidate) {
|
|
4016
|
+
// The base class is invalid or its disjoint base is unknown; an
|
|
4017
|
+
// unknown disjoint base cannot relate two otherwise-incompatible
|
|
4018
|
+
// known candidates, so keep collecting the known candidates.
|
|
4019
|
+
continue;
|
|
4020
|
+
}
|
|
4021
|
+
if (!candidates.some((existingCandidate) => types_1.ClassType.isSameGenericClass(existingCandidate, candidate))) {
|
|
4022
|
+
candidates.push(candidate);
|
|
4023
|
+
}
|
|
4024
|
+
}
|
|
4025
|
+
if (candidates.length > 1 && !types_1.ClassType.getMostDerivedDisjointBase(candidates)) {
|
|
4026
|
+
this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.disjointBaseIncompatible().format({
|
|
4027
|
+
// `object` is a disjoint base but is compatible with every
|
|
4028
|
+
// other disjoint base, so including it in the reported names
|
|
4029
|
+
// would be misleading. Filter it out.
|
|
4030
|
+
bases: candidates
|
|
4031
|
+
.filter((candidate) => !types_1.ClassType.isBuiltIn(candidate, 'object'))
|
|
4032
|
+
.map((candidate) => `"${candidate.shared.name}"`)
|
|
4033
|
+
.join(', '),
|
|
4034
|
+
}), errorNode);
|
|
4035
|
+
}
|
|
4036
|
+
}
|
|
4000
4037
|
// Verifies that classes that have more than one base class do not have
|
|
4001
4038
|
// have conflicting type arguments.
|
|
4002
4039
|
_validateMultipleInheritanceBaseClasses(classType, errorNode) {
|