@zzzen/pyright-internal 1.2.0-dev.20240714 → 1.2.0-dev.20240721
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/checker.js +23 -21
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +26 -3
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +2 -2
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.d.ts +1 -2
- package/dist/analyzer/constructorTransform.js +4 -5
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +2 -2
- package/dist/analyzer/constructors.js +49 -147
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +1 -4
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/decorators.js +1 -2
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/operations.js +135 -86
- package/dist/analyzer/operations.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 +27 -4
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +2 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/properties.js +4 -0
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +9 -5
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/testWalker.js +13 -1
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +710 -564
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +7 -4
- package/dist/analyzer/typeEvaluatorTypes.js +3 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +3 -6
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +16 -12
- package/dist/analyzer/typeUtils.js +114 -46
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +1 -1
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +11 -7
- package/dist/analyzer/types.js +40 -9
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
- package/dist/languageService/hoverProvider.js +11 -3
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.d.ts +10 -4
- package/dist/languageService/referencesProvider.js +22 -10
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.js +21 -4
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +4 -3
- package/dist/localization/localize.js +2 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +0 -1
- package/dist/localization/package.nls.de.json +0 -1
- package/dist/localization/package.nls.en-us.json +2 -1
- package/dist/localization/package.nls.es.json +0 -1
- package/dist/localization/package.nls.fr.json +0 -1
- package/dist/localization/package.nls.it.json +0 -1
- package/dist/localization/package.nls.ja.json +0 -1
- package/dist/localization/package.nls.ko.json +0 -1
- package/dist/localization/package.nls.pl.json +0 -1
- package/dist/localization/package.nls.pt-br.json +0 -1
- package/dist/localization/package.nls.qps-ploc.json +0 -1
- package/dist/localization/package.nls.ru.json +0 -1
- package/dist/localization/package.nls.tr.json +0 -1
- package/dist/localization/package.nls.zh-cn.json +0 -1
- package/dist/localization/package.nls.zh-tw.json +0 -1
- package/dist/parser/parseNodes.d.ts +3 -1
- package/dist/parser/parseNodes.js +3 -1
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.js +36 -13
- package/dist/parser/parser.js.map +1 -1
- package/dist/tests/fourslash/rename.args.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/rename.args.fourslash.js +71 -0
- package/dist/tests/fourslash/rename.args.fourslash.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +17 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +10 -6
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +6 -2
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +7 -3
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer/checker.js
CHANGED
@@ -547,7 +547,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
547
547
|
let returnTypeResult;
|
548
548
|
let returnType;
|
549
549
|
const enclosingFunctionNode = ParseTreeUtils.getEnclosingFunction(node);
|
550
|
-
|
550
|
+
let declaredReturnType = enclosingFunctionNode
|
551
551
|
? this._evaluator.getFunctionDeclaredReturnType(enclosingFunctionNode)
|
552
552
|
: undefined;
|
553
553
|
if (node.d.expr) {
|
@@ -577,10 +577,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
577
577
|
this._evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.noReturnContainsReturn(), node);
|
578
578
|
}
|
579
579
|
else {
|
580
|
+
const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node);
|
581
|
+
declaredReturnType = (0, typeUtils_1.updateTypeWithInternalTypeVars)(declaredReturnType, liveScopes);
|
580
582
|
let diagAddendum = new diagnostic_1.DiagnosticAddendum();
|
581
583
|
let returnTypeMatches = false;
|
582
584
|
if (this._evaluator.assignType(declaredReturnType, returnType, diagAddendum,
|
583
|
-
/* destTypeVarContext */
|
585
|
+
/* destTypeVarContext */ new typeVarContext_1.TypeVarContext(),
|
584
586
|
/* srcTypeVarContext */ undefined, 128 /* AssignTypeFlags.AllowBoolTypeGuard */)) {
|
585
587
|
returnTypeMatches = true;
|
586
588
|
}
|
@@ -1851,12 +1853,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1851
1853
|
if (types_1.FunctionType.isInstanceMethod(functionType) && functionType.shared.name === '__get__') {
|
1852
1854
|
return false;
|
1853
1855
|
}
|
1854
|
-
let flags = 64 /* AssignTypeFlags.
|
1856
|
+
let flags = 64 /* AssignTypeFlags.SkipReturnTypeCheck */ | 16 /* AssignTypeFlags.OverloadOverlap */;
|
1855
1857
|
if (partialOverlap) {
|
1856
|
-
flags |= 32 /* AssignTypeFlags.
|
1858
|
+
flags |= 32 /* AssignTypeFlags.PartialOverloadOverlap */;
|
1857
1859
|
}
|
1858
1860
|
return this._evaluator.assignType(functionType, prevOverload,
|
1859
|
-
/* diag */ undefined, new typeVarContext_1.TypeVarContext(
|
1861
|
+
/* diag */ undefined, new typeVarContext_1.TypeVarContext(),
|
1860
1862
|
/* srcTypeVarContext */ undefined, flags);
|
1861
1863
|
}
|
1862
1864
|
_isLegalOverloadImplementation(overload, implementation, diag) {
|
@@ -1864,7 +1866,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1864
1866
|
const implTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(implementation));
|
1865
1867
|
const overloadTypeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(overload));
|
1866
1868
|
// First check the parameters to see if they are assignable.
|
1867
|
-
let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 64 /* AssignTypeFlags.
|
1869
|
+
let isLegal = this._evaluator.assignType(overload, implementation, diag, overloadTypeVarContext, implTypeVarContext, 64 /* AssignTypeFlags.SkipReturnTypeCheck */ |
|
1868
1870
|
2 /* AssignTypeFlags.ReverseTypeVarMatching */ |
|
1869
1871
|
512 /* AssignTypeFlags.SkipSelfClsTypeCheck */);
|
1870
1872
|
// Now check the return types.
|
@@ -3628,15 +3630,13 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3628
3630
|
this._evaluator.validateCallArguments(errorNode, argList, newMemberTypeResult,
|
3629
3631
|
/* typeVarContext */ undefined,
|
3630
3632
|
/* skipUnknownArgCheck */ undefined,
|
3631
|
-
/* inferenceContext */ undefined
|
3632
|
-
/* signatureTracker */ undefined);
|
3633
|
+
/* inferenceContext */ undefined);
|
3633
3634
|
}
|
3634
3635
|
if (initMemberTypeResult) {
|
3635
3636
|
this._evaluator.validateCallArguments(errorNode, argList, initMemberTypeResult,
|
3636
3637
|
/* typeVarContext */ undefined,
|
3637
3638
|
/* skipUnknownArgCheck */ undefined,
|
3638
|
-
/* inferenceContext */ undefined
|
3639
|
-
/* signatureTracker */ undefined);
|
3639
|
+
/* inferenceContext */ undefined);
|
3640
3640
|
}
|
3641
3641
|
}
|
3642
3642
|
}
|
@@ -4047,11 +4047,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4047
4047
|
if (!this._evaluator.assignType(newMemberType, initMemberType,
|
4048
4048
|
/* diag */ undefined,
|
4049
4049
|
/* destTypeVarContext */ undefined,
|
4050
|
-
/* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.
|
4050
|
+
/* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipReturnTypeCheck */) ||
|
4051
4051
|
!this._evaluator.assignType(initMemberType, newMemberType,
|
4052
4052
|
/* diag */ undefined,
|
4053
4053
|
/* destTypeVarContext */ undefined,
|
4054
|
-
/* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.
|
4054
|
+
/* srcTypeVarContext */ undefined, 64 /* AssignTypeFlags.SkipReturnTypeCheck */)) {
|
4055
4055
|
const displayOnInit = types_1.ClassType.isSameGenericClass(initMethodResult.classType, classType);
|
4056
4056
|
const initDecl = initMemberType.shared.declaration;
|
4057
4057
|
const newDecl = newMemberType.shared.declaration;
|
@@ -4208,10 +4208,10 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4208
4208
|
return;
|
4209
4209
|
}
|
4210
4210
|
let overriddenType = this._evaluator.getEffectiveTypeOfSymbol(overriddenClassAndSymbol.symbol);
|
4211
|
-
overriddenType = (0, typeUtils_1.partiallySpecializeType)(overriddenType, overriddenClassAndSymbol.classType);
|
4211
|
+
overriddenType = (0, typeUtils_1.partiallySpecializeType)(overriddenType, overriddenClassAndSymbol.classType, this._evaluator.getTypeClassType());
|
4212
4212
|
const overrideSymbol = overrideClassAndSymbol.symbol;
|
4213
4213
|
let overrideType = this._evaluator.getEffectiveTypeOfSymbol(overrideSymbol);
|
4214
|
-
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType);
|
4214
|
+
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, overrideClassAndSymbol.classType, this._evaluator.getTypeClassType());
|
4215
4215
|
const childOverrideSymbol = types_1.ClassType.getSymbolTable(childClassType).get(memberName);
|
4216
4216
|
const childOverrideType = childOverrideSymbol
|
4217
4217
|
? this._evaluator.getEffectiveTypeOfSymbol(childOverrideSymbol)
|
@@ -4352,7 +4352,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4352
4352
|
const subclassPropMethod = methodAccessor(overrideSymbolType);
|
4353
4353
|
// Is the method present on the base class but missing in the subclass?
|
4354
4354
|
if (baseClassPropMethod) {
|
4355
|
-
const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, overriddenClassType);
|
4355
|
+
const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, overriddenClassType, this._evaluator.getTypeClassType());
|
4356
4356
|
if ((0, types_1.isFunction)(baseClassMethodType)) {
|
4357
4357
|
if (!subclassPropMethod) {
|
4358
4358
|
// The method is missing.
|
@@ -4373,7 +4373,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4373
4373
|
}
|
4374
4374
|
}
|
4375
4375
|
else {
|
4376
|
-
const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, overrideClassType);
|
4376
|
+
const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, overrideClassType, this._evaluator.getTypeClassType());
|
4377
4377
|
if ((0, types_1.isFunction)(subclassMethodType)) {
|
4378
4378
|
if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, overrideClassType, diagAddendum.createAddendum())) {
|
4379
4379
|
diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
|
@@ -4665,8 +4665,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4665
4665
|
}
|
4666
4666
|
const baseClass = baseClassAndSymbol.classType;
|
4667
4667
|
const childClassSelf = types_1.ClassType.cloneAsInstance((0, typeUtils_1.selfSpecializeClass)(childClassType));
|
4668
|
-
const baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, childClassSelf);
|
4669
|
-
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, childClassType, childClassSelf);
|
4668
|
+
const baseType = (0, typeUtils_1.partiallySpecializeType)(this._evaluator.getEffectiveTypeOfSymbol(baseClassAndSymbol.symbol), baseClass, this._evaluator.getTypeClassType(), childClassSelf);
|
4669
|
+
overrideType = (0, typeUtils_1.partiallySpecializeType)(overrideType, childClassType, this._evaluator.getTypeClassType(), childClassSelf);
|
4670
4670
|
if ((0, types_1.isFunction)(baseType) || (0, types_1.isOverloadedFunction)(baseType)) {
|
4671
4671
|
const diagAddendum = new diagnostic_1.DiagnosticAddendum();
|
4672
4672
|
// Determine whether this is an attempt to override a method marked @final.
|
@@ -4912,7 +4912,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4912
4912
|
const subclassPropMethod = methodAccessor(childType);
|
4913
4913
|
// Is the method present on the base class but missing in the subclass?
|
4914
4914
|
if (baseClassPropMethod) {
|
4915
|
-
const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType);
|
4915
|
+
const baseClassMethodType = (0, typeUtils_1.partiallySpecializeType)(baseClassPropMethod, baseClassType, this._evaluator.getTypeClassType());
|
4916
4916
|
if ((0, types_1.isFunction)(baseClassMethodType)) {
|
4917
4917
|
if (!subclassPropMethod) {
|
4918
4918
|
// The method is missing.
|
@@ -4933,7 +4933,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
4933
4933
|
}
|
4934
4934
|
}
|
4935
4935
|
else {
|
4936
|
-
const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType);
|
4936
|
+
const subclassMethodType = (0, typeUtils_1.partiallySpecializeType)(subclassPropMethod, childClassType, this._evaluator.getTypeClassType());
|
4937
4937
|
if ((0, types_1.isFunction)(subclassMethodType)) {
|
4938
4938
|
if (!this._evaluator.validateOverrideMethod(baseClassMethodType, subclassMethodType, childClassType, diagAddendum.createAddendum())) {
|
4939
4939
|
diagAddendum.addMessage(localize_1.LocAddendum.propertyMethodIncompatible().format({
|
@@ -5193,10 +5193,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
5193
5193
|
if (!functionTypeResult) {
|
5194
5194
|
return;
|
5195
5195
|
}
|
5196
|
-
|
5196
|
+
let declaredReturnType = types_1.FunctionType.getEffectiveReturnType(functionTypeResult.functionType);
|
5197
5197
|
if (!declaredReturnType) {
|
5198
5198
|
return;
|
5199
5199
|
}
|
5200
|
+
const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node);
|
5201
|
+
declaredReturnType = (0, typeUtils_1.updateTypeWithInternalTypeVars)(declaredReturnType, liveScopes);
|
5200
5202
|
let generatorType;
|
5201
5203
|
if (!enclosingFunctionNode.d.isAsync &&
|
5202
5204
|
(0, types_1.isClassInstance)(declaredReturnType) &&
|