@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.
- package/dist/analyzer/binder.js +8 -0
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +0 -1
- package/dist/analyzer/checker.js +21 -42
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +75 -28
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +3 -2
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/operations.d.ts +2 -0
- package/dist/analyzer/operations.js +2 -1
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/overloadResultAdmission.js +115 -3
- package/dist/analyzer/overloadResultAdmission.js.map +1 -1
- package/dist/analyzer/overloadResultController.js +36 -10
- package/dist/analyzer/overloadResultController.js.map +1 -1
- package/dist/analyzer/overloadResultSelector.js +32 -12
- package/dist/analyzer/overloadResultSelector.js.map +1 -1
- package/dist/analyzer/parameterUtils.js +2 -1
- package/dist/analyzer/parameterUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -0
- package/dist/analyzer/parseTreeUtils.js +13 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +105 -35
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +3 -0
- package/dist/analyzer/program.js +34 -9
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.d.ts +2 -2
- package/dist/analyzer/properties.js +2 -2
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +3 -1
- package/dist/analyzer/protocols.js +24 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.js +6 -2
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceEnumerator.d.ts +3 -1
- package/dist/analyzer/sourceEnumerator.js +30 -11
- package/dist/analyzer/sourceEnumerator.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +1 -0
- package/dist/analyzer/sourceMapper.js +10 -4
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/tuples.js +17 -6
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +419 -67
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
- package/dist/analyzer/typeEvaluatorTypes.js +4 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +5 -1
- package/dist/analyzer/typeGuards.js +324 -99
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +32 -6
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubRenderer.d.ts +6 -1
- package/dist/analyzer/typeStubRenderer.js +19 -12
- package/dist/analyzer/typeStubRenderer.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +15 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +2 -1
- package/dist/analyzer/typedDicts.js +49 -10
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -1
- package/dist/analyzer/types.js +9 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +9 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/windowsProcessTree.json +252 -33
- package/dist/tests/cacheManager.test.js +19 -15
- package/dist/tests/cacheManager.test.js.map +1 -1
- package/dist/tests/checker.test.js +50 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/config.test.js +126 -0
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/constraintSolver.test.d.ts +1 -0
- package/dist/tests/constraintSolver.test.js +39 -0
- package/dist/tests/constraintSolver.test.js.map +1 -0
- package/dist/tests/fourslash/hover.typedDict.get.fourslash.js +11 -0
- package/dist/tests/fourslash/hover.typedDict.get.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js +16 -0
- package/dist/tests/fourslash/hover.typedDictUnpacking.dictDisplay.fourslash.js.map +1 -0
- package/dist/tests/mypyPrimerAnalysis.test.js +67 -11
- package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
- package/dist/tests/overloadResultController.test.js +379 -1
- package/dist/tests/overloadResultController.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +34 -0
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/sourceEnumeratorSymlink.test.js +98 -13
- package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +143 -0
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/typeEquality.test.js +85 -2
- package/dist/tests/typeEquality.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +47 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +23 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/typeEvaluator6.test.js +83 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +32 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +15 -1
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- 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;
|
package/dist/analyzer/checker.js
CHANGED
|
@@ -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
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
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
|
|
2887
|
-
if (!
|
|
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.
|
|
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,
|
|
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) {
|