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

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 (108) hide show
  1. package/dist/analyzer/binder.js +8 -0
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +0 -1
  4. package/dist/analyzer/checker.js +21 -42
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/codeFlowEngine.js +75 -28
  7. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  8. package/dist/analyzer/constraintSolver.js +3 -2
  9. package/dist/analyzer/constraintSolver.js.map +1 -1
  10. package/dist/analyzer/operations.d.ts +2 -0
  11. package/dist/analyzer/operations.js +2 -1
  12. package/dist/analyzer/operations.js.map +1 -1
  13. package/dist/analyzer/overloadResultAdmission.js +115 -3
  14. package/dist/analyzer/overloadResultAdmission.js.map +1 -1
  15. package/dist/analyzer/overloadResultController.js +36 -10
  16. package/dist/analyzer/overloadResultController.js.map +1 -1
  17. package/dist/analyzer/overloadResultSelector.js +32 -12
  18. package/dist/analyzer/overloadResultSelector.js.map +1 -1
  19. package/dist/analyzer/parameterUtils.js +2 -1
  20. package/dist/analyzer/parameterUtils.js.map +1 -1
  21. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  22. package/dist/analyzer/parseTreeUtils.js +13 -0
  23. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  24. package/dist/analyzer/patternMatching.js +105 -35
  25. package/dist/analyzer/patternMatching.js.map +1 -1
  26. package/dist/analyzer/program.d.ts +3 -0
  27. package/dist/analyzer/program.js +34 -9
  28. package/dist/analyzer/program.js.map +1 -1
  29. package/dist/analyzer/properties.d.ts +2 -2
  30. package/dist/analyzer/properties.js +2 -2
  31. package/dist/analyzer/properties.js.map +1 -1
  32. package/dist/analyzer/protocols.d.ts +3 -1
  33. package/dist/analyzer/protocols.js +24 -2
  34. package/dist/analyzer/protocols.js.map +1 -1
  35. package/dist/analyzer/service.js +6 -2
  36. package/dist/analyzer/service.js.map +1 -1
  37. package/dist/analyzer/sourceEnumerator.d.ts +3 -1
  38. package/dist/analyzer/sourceEnumerator.js +30 -11
  39. package/dist/analyzer/sourceEnumerator.js.map +1 -1
  40. package/dist/analyzer/sourceMapper.d.ts +1 -0
  41. package/dist/analyzer/sourceMapper.js +10 -4
  42. package/dist/analyzer/sourceMapper.js.map +1 -1
  43. package/dist/analyzer/tuples.js +17 -6
  44. package/dist/analyzer/tuples.js.map +1 -1
  45. package/dist/analyzer/typeEvaluator.js +419 -67
  46. package/dist/analyzer/typeEvaluator.js.map +1 -1
  47. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  48. package/dist/analyzer/typeEvaluatorTypes.js +4 -0
  49. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  50. package/dist/analyzer/typeGuards.d.ts +5 -1
  51. package/dist/analyzer/typeGuards.js +324 -99
  52. package/dist/analyzer/typeGuards.js.map +1 -1
  53. package/dist/analyzer/typePrinter.js +32 -6
  54. package/dist/analyzer/typePrinter.js.map +1 -1
  55. package/dist/analyzer/typeStubRenderer.d.ts +6 -1
  56. package/dist/analyzer/typeStubRenderer.js +19 -12
  57. package/dist/analyzer/typeStubRenderer.js.map +1 -1
  58. package/dist/analyzer/typeUtils.d.ts +1 -0
  59. package/dist/analyzer/typeUtils.js +15 -1
  60. package/dist/analyzer/typeUtils.js.map +1 -1
  61. package/dist/analyzer/typedDicts.d.ts +2 -1
  62. package/dist/analyzer/typedDicts.js +49 -10
  63. package/dist/analyzer/typedDicts.js.map +1 -1
  64. package/dist/analyzer/types.d.ts +2 -1
  65. package/dist/analyzer/types.js +9 -0
  66. package/dist/analyzer/types.js.map +1 -1
  67. package/dist/common/configOptions.d.ts +1 -0
  68. package/dist/common/configOptions.js +9 -0
  69. package/dist/common/configOptions.js.map +1 -1
  70. package/dist/common/windowsProcessTree.json +252 -33
  71. package/dist/tests/cacheManager.test.js +19 -15
  72. package/dist/tests/cacheManager.test.js.map +1 -1
  73. package/dist/tests/checker.test.js +50 -0
  74. package/dist/tests/checker.test.js.map +1 -1
  75. package/dist/tests/config.test.js +126 -0
  76. package/dist/tests/config.test.js.map +1 -1
  77. package/dist/tests/constraintSolver.test.d.ts +1 -0
  78. package/dist/tests/constraintSolver.test.js +39 -0
  79. package/dist/tests/constraintSolver.test.js.map +1 -0
  80. package/dist/tests/fourslash/hover.typedDict.get.fourslash.js +11 -0
  81. package/dist/tests/fourslash/hover.typedDict.get.fourslash.js.map +1 -1
  82. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.d.ts +1 -0
  83. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js +16 -0
  84. package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js.map +1 -0
  85. package/dist/tests/mypyPrimerAnalysis.test.js +67 -11
  86. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  87. package/dist/tests/overloadResultController.test.js +379 -1
  88. package/dist/tests/overloadResultController.test.js.map +1 -1
  89. package/dist/tests/signatureHelp.test.js +34 -0
  90. package/dist/tests/signatureHelp.test.js.map +1 -1
  91. package/dist/tests/sourceEnumeratorSymlink.test.js +98 -13
  92. package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -1
  93. package/dist/tests/sourceMapperUtils.test.js +143 -0
  94. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  95. package/dist/tests/typeEquality.test.js +85 -2
  96. package/dist/tests/typeEquality.test.js.map +1 -1
  97. package/dist/tests/typeEvaluator1.test.js +47 -3
  98. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  99. package/dist/tests/typeEvaluator3.test.js +23 -0
  100. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  101. package/dist/tests/typeEvaluator5.test.js +1 -1
  102. package/dist/tests/typeEvaluator6.test.js +83 -1
  103. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  104. package/dist/tests/typeEvaluator7.test.js +32 -0
  105. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  106. package/dist/tests/typeEvaluator8.test.js +15 -1
  107. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  108. package/package.json +3 -3
@@ -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
  }
@@ -2883,19 +2884,20 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2883
2884
  if (ParseTreeUtils.isWithinAssertExpression(node)) {
2884
2885
  return;
2885
2886
  }
2886
- const classTypeList = (0, typeGuards_1.getIsInstanceClassTypes)(this._evaluator, arg1Type);
2887
- if (!classTypeList) {
2887
+ const classTypeInfo = (0, typeGuards_1.getIsInstanceClassTypes)(this._evaluator, arg1Type, node.d.args[1].d.valueExpr);
2888
+ if (!classTypeInfo) {
2888
2889
  return;
2889
2890
  }
2891
+ const classTypeList = classTypeInfo.classTypes;
2890
2892
  // Check for unsafe protocol overlaps.
2891
2893
  classTypeList.forEach((filterType) => {
2892
2894
  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));
2895
+ (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
2896
  }
2895
2897
  });
2896
2898
  // Check for unnecessary isinstance or issubclass calls.
2897
2899
  if (this._fileInfo.diagnosticRuleSet.reportUnnecessaryIsInstance !== 'none') {
2898
- const narrowedTypeNegative = (0, typeGuards_1.narrowTypeForInstanceOrSubclass)(this._evaluator, arg0Type, classTypeList, isInstanceCheck,
2900
+ const narrowedTypeNegative = (0, typeGuards_1.narrowTypeForInstanceOrSubclass)(this._evaluator, arg0Type, classTypeInfo.negativeClassTypes, isInstanceCheck,
2899
2901
  /* isTypeIsCheck */ false,
2900
2902
  /* isPositiveTest */ false, node, this._nodeInfo);
2901
2903
  const narrowedTypePositive = (0, typeGuards_1.narrowTypeForInstanceOrSubclass)(this._evaluator, arg0Type, classTypeList, isInstanceCheck,
@@ -2919,29 +2921,6 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2919
2921
  }
2920
2922
  }
2921
2923
  }
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
2924
  // Determines whether the specified type is allowed as the second argument
2946
2925
  // to an isinstance or issubclass check.
2947
2926
  _isTypeSupportedTypeForIsInstance(type, isInstanceCheck, diag) {