@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.
Files changed (53) hide show
  1. package/dist/analyzer/binder.js +87 -1
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +1 -0
  4. package/dist/analyzer/checker.js +37 -0
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/constraintSolver.js +47 -7
  7. package/dist/analyzer/constraintSolver.js.map +1 -1
  8. package/dist/analyzer/constructors.js +18 -8
  9. package/dist/analyzer/constructors.js.map +1 -1
  10. package/dist/analyzer/dataClasses.d.ts +1 -0
  11. package/dist/analyzer/dataClasses.js +98 -19
  12. package/dist/analyzer/dataClasses.js.map +1 -1
  13. package/dist/analyzer/decorators.js +18 -0
  14. package/dist/analyzer/decorators.js.map +1 -1
  15. package/dist/analyzer/scope.d.ts +3 -0
  16. package/dist/analyzer/scope.js +10 -0
  17. package/dist/analyzer/scope.js.map +1 -1
  18. package/dist/analyzer/symbol.d.ts +4 -1
  19. package/dist/analyzer/symbol.js +8 -0
  20. package/dist/analyzer/symbol.js.map +1 -1
  21. package/dist/analyzer/typeCacheUtils.d.ts +6 -2
  22. package/dist/analyzer/typeCacheUtils.js +16 -37
  23. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  24. package/dist/analyzer/typeEvaluator.js +955 -105
  25. package/dist/analyzer/typeEvaluator.js.map +1 -1
  26. package/dist/analyzer/typeGuards.js +11 -8
  27. package/dist/analyzer/typeGuards.js.map +1 -1
  28. package/dist/analyzer/types.d.ts +11 -1
  29. package/dist/analyzer/types.js +48 -0
  30. package/dist/analyzer/types.js.map +1 -1
  31. package/dist/localization/localize.d.ts +6 -0
  32. package/dist/localization/localize.js +4 -0
  33. package/dist/localization/localize.js.map +1 -1
  34. package/dist/localization/package.nls.en-us.json +13 -0
  35. package/dist/tests/typeCacheUtils.test.d.ts +1 -0
  36. package/dist/tests/typeCacheUtils.test.js +69 -0
  37. package/dist/tests/typeCacheUtils.test.js.map +1 -0
  38. package/dist/tests/typeEvaluator3.test.js +8 -0
  39. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  40. package/dist/tests/typeEvaluator5.test.js +12 -0
  41. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  42. package/dist/tests/typeEvaluator6.test.js +33 -1
  43. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  44. package/dist/tests/typeEvaluator7.test.js +25 -0
  45. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  46. package/dist/tests/typeEvaluator8.test.js +318 -4
  47. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  48. package/dist/tests/types.test.d.ts +1 -0
  49. package/dist/tests/types.test.js +63 -0
  50. package/dist/tests/types.test.js.map +1 -0
  51. package/dist/typeServer/typeGuards.js +4 -3
  52. package/dist/typeServer/typeGuards.js.map +1 -1
  53. 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;
@@ -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) {