@zzzen/pyright-internal 1.2.0-dev.20261004 → 1.2.0-dev.20261011

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 (58) hide show
  1. package/dist/analyzer/checker.d.ts +0 -1
  2. package/dist/analyzer/checker.js +17 -39
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/codeFlowEngine.js +2 -1
  5. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  6. package/dist/analyzer/constraintSolver.js +3 -2
  7. package/dist/analyzer/constraintSolver.js.map +1 -1
  8. package/dist/analyzer/operations.d.ts +2 -0
  9. package/dist/analyzer/operations.js +2 -1
  10. package/dist/analyzer/operations.js.map +1 -1
  11. package/dist/analyzer/parameterUtils.js +2 -1
  12. package/dist/analyzer/parameterUtils.js.map +1 -1
  13. package/dist/analyzer/patternMatching.js +41 -9
  14. package/dist/analyzer/patternMatching.js.map +1 -1
  15. package/dist/analyzer/properties.d.ts +2 -2
  16. package/dist/analyzer/properties.js +2 -2
  17. package/dist/analyzer/properties.js.map +1 -1
  18. package/dist/analyzer/protocols.d.ts +3 -1
  19. package/dist/analyzer/protocols.js +24 -2
  20. package/dist/analyzer/protocols.js.map +1 -1
  21. package/dist/analyzer/typeEvaluator.js +143 -24
  22. package/dist/analyzer/typeEvaluator.js.map +1 -1
  23. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  24. package/dist/analyzer/typeEvaluatorTypes.js +4 -0
  25. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  26. package/dist/analyzer/typeGuards.js +208 -68
  27. package/dist/analyzer/typeGuards.js.map +1 -1
  28. package/dist/analyzer/typePrinter.js +32 -6
  29. package/dist/analyzer/typePrinter.js.map +1 -1
  30. package/dist/analyzer/typeUtils.d.ts +1 -0
  31. package/dist/analyzer/typeUtils.js +15 -1
  32. package/dist/analyzer/typeUtils.js.map +1 -1
  33. package/dist/analyzer/types.d.ts +2 -1
  34. package/dist/analyzer/types.js +9 -0
  35. package/dist/analyzer/types.js.map +1 -1
  36. package/dist/tests/cacheManager.test.js +19 -15
  37. package/dist/tests/cacheManager.test.js.map +1 -1
  38. package/dist/tests/constraintSolver.test.d.ts +1 -0
  39. package/dist/tests/constraintSolver.test.js +39 -0
  40. package/dist/tests/constraintSolver.test.js.map +1 -0
  41. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.d.ts +1 -0
  42. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js +16 -0
  43. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js.map +1 -0
  44. package/dist/tests/mypyPrimerAnalysis.test.js +67 -11
  45. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  46. package/dist/tests/typeEquality.test.js +85 -2
  47. package/dist/tests/typeEquality.test.js.map +1 -1
  48. package/dist/tests/typeEvaluator1.test.js +28 -1
  49. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  50. package/dist/tests/typeEvaluator3.test.js +23 -0
  51. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  52. package/dist/tests/typeEvaluator6.test.js +63 -1
  53. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  54. package/dist/tests/typeEvaluator7.test.js +22 -0
  55. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  56. package/dist/tests/typeEvaluator8.test.js +13 -0
  57. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  58. package/package.json +1 -1
@@ -110,7 +110,6 @@ export declare class Checker extends ParseTreeWalker {
110
110
  private _conditionallyReportUnusedSymbol;
111
111
  private _conditionallyReportUnusedDeclaration;
112
112
  private _validateIsInstanceCall;
113
- private _validateUnsafeProtocolOverlap;
114
113
  private _isTypeSupportedTypeForIsInstance;
115
114
  private _validateNotDataProtocol;
116
115
  private _isSymbolPrivate;
@@ -1836,22 +1836,23 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1836
1836
  }
1837
1837
  for (let i = 0; i < prevOverloads.length; i++) {
1838
1838
  const prevOverload = prevOverloads[i];
1839
+ const prevReturnType = types_1.FunctionType.getEffectiveReturnType(prevOverload);
1840
+ const returnType = types_1.FunctionType.getEffectiveReturnType(functionType);
1841
+ if (!prevReturnType ||
1842
+ !returnType ||
1843
+ this._evaluator.assignType(returnType, prevReturnType,
1844
+ /* diag */ undefined,
1845
+ /* constraints */ undefined, 262144 /* AssignTypeFlags.RejectCyclicLowerBound */)) {
1846
+ continue;
1847
+ }
1839
1848
  if (this._isOverlappingOverload(prevOverload, functionType, /* partialOverlap */ true)) {
1840
- const prevReturnType = types_1.FunctionType.getEffectiveReturnType(prevOverload);
1841
- const returnType = types_1.FunctionType.getEffectiveReturnType(functionType);
1842
- if (prevReturnType &&
1843
- returnType &&
1844
- !this._evaluator.assignType(returnType, prevReturnType,
1845
- /* diag */ undefined,
1846
- /* constraints */ undefined, 0 /* AssignTypeFlags.Default */)) {
1847
- const altNode = this._findNodeForOverload(node, prevOverload);
1848
- this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportOverlappingOverload, localize_1.LocMessage.overloadReturnTypeMismatch().format({
1849
- name: node.d.name.d.value,
1850
- newIndex: prevOverloads.length + 1,
1851
- prevIndex: i + 1,
1852
- }), (altNode || node).d.name);
1853
- break;
1854
- }
1849
+ const altNode = this._findNodeForOverload(node, prevOverload);
1850
+ this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportOverlappingOverload, localize_1.LocMessage.overloadReturnTypeMismatch().format({
1851
+ name: node.d.name.d.value,
1852
+ newIndex: prevOverloads.length + 1,
1853
+ prevIndex: i + 1,
1854
+ }), (altNode || node).d.name);
1855
+ break;
1855
1856
  }
1856
1857
  }
1857
1858
  }
@@ -2890,7 +2891,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2890
2891
  // Check for unsafe protocol overlaps.
2891
2892
  classTypeList.forEach((filterType) => {
2892
2893
  if ((0, types_1.isInstantiableClass)(filterType)) {
2893
- this._validateUnsafeProtocolOverlap(node.d.args[0].d.valueExpr, types_1.ClassType.cloneAsInstance(filterType), isInstanceCheck ? arg0Type : (0, typeUtils_1.convertToInstance)(arg0Type));
2894
+ (0, protocols_1.validateProtocolUnsafeOverlap)(this._evaluator, node.d.args[0].d.valueExpr, types_1.ClassType.cloneAsInstance(filterType), isInstanceCheck ? arg0Type : (0, typeUtils_1.convertToInstance)(arg0Type));
2894
2895
  }
2895
2896
  });
2896
2897
  // Check for unnecessary isinstance or issubclass calls.
@@ -2919,29 +2920,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2919
2920
  }
2920
2921
  }
2921
2922
  }
2922
- _validateUnsafeProtocolOverlap(errorNode, protocol, testType) {
2923
- // If this is a protocol class, check for an "unsafe overlap"
2924
- // with the arg0 type.
2925
- if (types_1.ClassType.isProtocolClass(protocol)) {
2926
- let isUnsafeOverlap = false;
2927
- const diag = new diagnostic_1.DiagnosticAddendum();
2928
- (0, typeUtils_1.doForEachSubtype)(testType, (testSubtype) => {
2929
- if ((0, types_1.isClassInstance)(testSubtype)) {
2930
- if ((0, protocols_1.isProtocolUnsafeOverlap)(this._evaluator, protocol, testSubtype)) {
2931
- isUnsafeOverlap = true;
2932
- diag.addMessage(localize_1.LocAddendum.protocolUnsafeOverlap().format({
2933
- name: testSubtype.shared.name,
2934
- }));
2935
- }
2936
- }
2937
- });
2938
- if (isUnsafeOverlap) {
2939
- this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.protocolUnsafeOverlap().format({
2940
- name: protocol.shared.name,
2941
- }) + diag.getString(), errorNode);
2942
- }
2943
- }
2944
- }
2945
2923
  // Determines whether the specified type is allowed as the second argument
2946
2924
  // to an isinstance or issubclass check.
2947
2925
  _isTypeSupportedTypeForIsInstance(type, isInstanceCheck, diag) {