@zzzen/pyright-internal 1.2.0-dev.20240324 → 1.2.0-dev.20240331
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 +4 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +1 -0
- package/dist/analyzer/cacheManager.js +4 -1
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -2
- package/dist/analyzer/checker.js +10 -5
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constructors.d.ts +3 -2
- package/dist/analyzer/constructors.js +76 -54
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +2 -0
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declaration.js +1 -1
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/enums.js +1 -0
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.js +19 -17
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/namedTuples.js +2 -0
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +1 -1
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +1 -1
- package/dist/analyzer/patternMatching.js +14 -3
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +1 -7
- package/dist/analyzer/program.js +15 -19
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/programTypes.d.ts +11 -0
- package/dist/analyzer/programTypes.js +11 -0
- package/dist/analyzer/programTypes.js.map +1 -0
- package/dist/analyzer/service.d.ts +2 -2
- package/dist/analyzer/service.js +20 -14
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +4 -4
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.js +3 -3
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +2 -2
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +53 -24
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +14 -7
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +2 -2
- package/dist/analyzer/typeUtils.js +20 -4
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +3 -0
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/backgroundAnalysis.js +1 -1
- package/dist/backgroundAnalysis.js.map +1 -1
- package/dist/backgroundAnalysisBase.js +1 -1
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.js +15 -10
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/commandController.d.ts +2 -1
- package/dist/commands/commandController.js +3 -0
- package/dist/commands/commandController.js.map +1 -1
- package/dist/commands/createTypeStub.d.ts +1 -1
- package/dist/commands/createTypeStub.js +3 -3
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.d.ts +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/commands/quickActionCommand.d.ts +1 -1
- package/dist/commands/quickActionCommand.js +2 -2
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/commands/restartServer.d.ts +1 -1
- package/dist/common/cancellationUtils.js +2 -2
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/caseSensitivityDetector.d.ts +6 -0
- package/dist/common/caseSensitivityDetector.js +18 -0
- package/dist/common/caseSensitivityDetector.js.map +1 -0
- package/dist/common/commandLineOptions.d.ts +3 -2
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/commandUtils.js +1 -1
- package/dist/common/commandUtils.js.map +1 -1
- package/dist/common/configOptions.js +3 -3
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +42 -7
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +1 -1
- package/dist/common/fileBasedCancellationUtils.js +2 -2
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/fileSystem.d.ts +0 -1
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/fullAccessHost.js +4 -3
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +62 -0
- package/dist/common/languageServerInterface.js +10 -0
- package/dist/common/languageServerInterface.js.map +1 -0
- package/dist/common/realFileSystem.d.ts +8 -4
- package/dist/common/realFileSystem.js +56 -17
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceKeys.d.ts +21 -0
- package/dist/common/serviceKeys.js +26 -0
- package/dist/common/serviceKeys.js.map +1 -0
- package/dist/common/serviceProviderExtensions.d.ts +2 -16
- package/dist/common/serviceProviderExtensions.js +19 -27
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/common/textEditTracker.js +2 -2
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/uri/constantUri.d.ts +36 -0
- package/dist/common/uri/constantUri.js +112 -0
- package/dist/common/uri/constantUri.js.map +1 -0
- package/dist/common/uri/emptyUri.d.ts +3 -31
- package/dist/common/uri/emptyUri.js +3 -84
- package/dist/common/uri/emptyUri.js.map +1 -1
- package/dist/common/uri/fileUri.d.ts +1 -0
- package/dist/common/uri/fileUri.js +3 -2
- package/dist/common/uri/fileUri.js.map +1 -1
- package/dist/common/uri/uri.d.ts +11 -3
- package/dist/common/uri/uri.js +31 -20
- package/dist/common/uri/uri.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +11 -5
- package/dist/common/uri/uriUtils.js +31 -53
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/common/workspaceEditUtils.js +4 -4
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +9 -57
- package/dist/languageServerBase.js +18 -8
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +4 -5
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +6 -6
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +43 -42
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.js +2 -2
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +2 -2
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +2 -2
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.d.ts +3 -2
- package/dist/languageService/documentSymbolProvider.js +3 -2
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.js +2 -2
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +2 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +4 -1
- package/dist/languageService/symbolIndexer.js +21 -11
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +1 -1
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.js +21 -16
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +1 -0
- package/dist/localization/package.nls.de.json +1 -0
- package/dist/localization/package.nls.es.json +1 -0
- package/dist/localization/package.nls.fr.json +1 -0
- package/dist/localization/package.nls.it.json +1 -0
- package/dist/localization/package.nls.ja.json +1 -0
- package/dist/localization/package.nls.ko.json +1 -0
- package/dist/localization/package.nls.pl.json +1 -0
- package/dist/localization/package.nls.pt-br.json +1 -0
- package/dist/localization/package.nls.qps-ploc.json +1 -0
- package/dist/localization/package.nls.ru.json +1 -0
- package/dist/localization/package.nls.tr.json +1 -0
- package/dist/localization/package.nls.zh-cn.json +1 -0
- package/dist/localization/package.nls.zh-tw.json +1 -0
- package/dist/pyright.js +6 -6
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +3 -1
- package/dist/pyrightFileSystem.js +14 -9
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +0 -1
- package/dist/readonlyAugmentedFileSystem.js +0 -3
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.d.ts +3 -1
- package/dist/server.js +14 -10
- package/dist/server.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +12 -12
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/completions.test.js +4 -4
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +19 -14
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/documentSymbolCollector.test.js +2 -3
- package/dist/tests/documentSymbolCollector.test.js.map +1 -1
- package/dist/tests/envVarUtils.test.js +77 -2
- package/dist/tests/envVarUtils.test.js.map +1 -1
- package/dist/tests/filesystem.test.js +13 -13
- package/dist/tests/filesystem.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +10 -10
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +12 -10
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashTypes.d.ts +1 -0
- package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -2
- package/dist/tests/harness/fourslash/testLanguageService.js +2 -2
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +3 -3
- package/dist/tests/harness/fourslash/testState.js +36 -32
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +1 -1
- package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
- package/dist/tests/harness/testHost.d.ts +7 -0
- package/dist/tests/harness/testHost.js +33 -14
- package/dist/tests/harness/testHost.js.map +1 -1
- package/dist/tests/harness/vfs/factory.d.ts +3 -4
- package/dist/tests/harness/vfs/factory.js +7 -6
- package/dist/tests/harness/vfs/factory.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +5 -3
- package/dist/tests/harness/vfs/filesystem.js +22 -15
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +35 -34
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +5 -6
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/logger.test.js +1 -1
- package/dist/tests/logger.test.js.map +1 -1
- package/dist/tests/lsp/languageServer.js +5 -4
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js +15 -10
- package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +1 -2
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/pyrightFileSystem.test.js +6 -5
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/serialization.test.js +5 -5
- package/dist/tests/serialization.test.js.map +1 -1
- package/dist/tests/service.test.js +16 -25
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +8 -5
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +4 -4
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/testState.test.js +5 -5
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testStateUtils.js +6 -6
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/testUtils.js +6 -4
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +1 -1
- package/dist/tests/typePrinter.test.js.map +1 -1
- package/dist/tests/uri.test.js +220 -199
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +7 -7
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/tests/zipfs.test.js +7 -5
- package/dist/tests/zipfs.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +15 -6
- package/dist/workspaceFactory.js +16 -10
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +5 -5
@@ -1421,13 +1421,17 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
1421
1421
|
subDiag = metaclassDiag;
|
1422
1422
|
}
|
1423
1423
|
}
|
1424
|
-
if (memberInfo
|
1424
|
+
if (memberInfo) {
|
1425
|
+
if (memberInfo.isDescriptorError && diag && subDiag) {
|
1426
|
+
diag.addAddendum(subDiag);
|
1427
|
+
}
|
1425
1428
|
return {
|
1426
1429
|
type: memberInfo.type,
|
1427
1430
|
classType: memberInfo.classType,
|
1428
1431
|
isIncomplete: !!memberInfo.isTypeIncomplete,
|
1429
1432
|
isAsymmetricAccessor: memberInfo.isAsymmetricAccessor,
|
1430
1433
|
memberAccessDeprecationInfo: memberInfo.memberAccessDeprecationInfo,
|
1434
|
+
typeErrors: memberInfo.isDescriptorError,
|
1431
1435
|
};
|
1432
1436
|
}
|
1433
1437
|
// If this is a type[Any] or type[Unknown], allow any other members.
|
@@ -1545,7 +1549,8 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
1545
1549
|
let constructorType;
|
1546
1550
|
// Try to get the `__init__` method first because it typically has more
|
1547
1551
|
// type information than `__new__`.
|
1548
|
-
const initMethodResult = (0, constructors_1.getBoundInitMethod)(evaluatorInterface, callNode, types_1.ClassType.cloneAsInstance(subtype),
|
1552
|
+
const initMethodResult = (0, constructors_1.getBoundInitMethod)(evaluatorInterface, callNode, types_1.ClassType.cloneAsInstance(subtype),
|
1553
|
+
/* diag */ undefined, 0 /* MemberAccessFlags.Default */);
|
1549
1554
|
if (initMethodResult && !initMethodResult.typeErrors) {
|
1550
1555
|
if ((0, types_1.isFunction)(initMethodResult.type) || (0, types_1.isOverloadedFunction)(initMethodResult.type)) {
|
1551
1556
|
constructorType = initMethodResult.type;
|
@@ -1561,7 +1566,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
1561
1566
|
// the `object` class or accepts only default parameters(* args, ** kwargs),
|
1562
1567
|
// see if we can find a better signature from the `__new__` method.
|
1563
1568
|
if (!constructorType || isObjectInit || isDefaultParams) {
|
1564
|
-
const newMethodResult = (0, constructors_1.getBoundNewMethod)(evaluatorInterface, callNode, subtype
|
1569
|
+
const newMethodResult = (0, constructors_1.getBoundNewMethod)(evaluatorInterface, callNode, subtype);
|
1565
1570
|
if (newMethodResult && !newMethodResult.typeErrors) {
|
1566
1571
|
if ((0, types_1.isFunction)(newMethodResult.type) &&
|
1567
1572
|
newMethodResult.type.details.fullName !== 'builtins.object.__new__') {
|
@@ -3611,18 +3616,18 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
3611
3616
|
typeResult = getTypeOfBoundMember(node.memberName, baseType, memberName, usage, diag,
|
3612
3617
|
/* memberAccessFlags */ undefined, baseTypeResult.bindToSelfType);
|
3613
3618
|
}
|
3614
|
-
if (typeResult) {
|
3619
|
+
if (typeResult && !typeResult.typeErrors) {
|
3615
3620
|
type = (0, typeUtils_1.addConditionToType)(typeResult.type, (0, typeUtils_1.getTypeCondition)(baseType),
|
3616
3621
|
/* skipSelfCondition */ true);
|
3617
|
-
|
3618
|
-
|
3619
|
-
|
3620
|
-
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
3624
|
-
|
3625
|
-
|
3622
|
+
if (typeResult.isIncomplete) {
|
3623
|
+
isIncomplete = true;
|
3624
|
+
}
|
3625
|
+
if (typeResult.isAsymmetricAccessor) {
|
3626
|
+
isAsymmetricAccessor = true;
|
3627
|
+
}
|
3628
|
+
if (typeResult.memberAccessDeprecationInfo) {
|
3629
|
+
memberAccessDeprecationInfo = typeResult.memberAccessDeprecationInfo;
|
3630
|
+
}
|
3626
3631
|
}
|
3627
3632
|
break;
|
3628
3633
|
}
|
@@ -3701,7 +3706,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
3701
3706
|
}
|
3702
3707
|
if ((0, typeUtils_1.isNoneInstance)(subtype) && noneType && (0, types_1.isClassInstance)(noneType)) {
|
3703
3708
|
const typeResult = getTypeOfBoundMember(node.memberName, noneType, memberName, usage, diag);
|
3704
|
-
if (typeResult) {
|
3709
|
+
if (typeResult && !typeResult.typeErrors) {
|
3705
3710
|
type = (0, typeUtils_1.addConditionToType)(typeResult.type, (0, typeUtils_1.getTypeCondition)(baseType));
|
3706
3711
|
if (typeResult.isIncomplete) {
|
3707
3712
|
isIncomplete = true;
|
@@ -4015,7 +4020,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
4015
4020
|
}
|
4016
4021
|
const methodTypeResult = getTypeOfBoundMember(errorNode, concreteMemberType, accessMethodName,
|
4017
4022
|
/* usage */ undefined, diag === null || diag === void 0 ? void 0 : diag.createAddendum(), 16 /* MemberAccessFlags.SkipInstanceMembers */ | 512 /* MemberAccessFlags.SkipAttributeAccessOverride */);
|
4018
|
-
if (!methodTypeResult) {
|
4023
|
+
if (!methodTypeResult || methodTypeResult.typeErrors) {
|
4019
4024
|
// Provide special error messages for properties.
|
4020
4025
|
if (types_1.ClassType.isPropertyClass(concreteMemberType)) {
|
4021
4026
|
if (usage.method !== 'get') {
|
@@ -6792,7 +6797,8 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
6792
6797
|
const result = {
|
6793
6798
|
returnType: (0, namedTuples_1.createNamedTupleType)(evaluatorInterface, errorNode, argList, /* includesTypes */ true),
|
6794
6799
|
};
|
6795
|
-
const initTypeResult = (0, constructors_1.getBoundInitMethod)(evaluatorInterface, errorNode, types_1.ClassType.cloneAsInstance(expandedCallType),
|
6800
|
+
const initTypeResult = (0, constructors_1.getBoundInitMethod)(evaluatorInterface, errorNode, types_1.ClassType.cloneAsInstance(expandedCallType),
|
6801
|
+
/* diag */ undefined, 0 /* MemberAccessFlags.Default */);
|
6796
6802
|
if (initTypeResult && (0, types_1.isOverloadedFunction)(initTypeResult.type)) {
|
6797
6803
|
validateOverloadedFunctionArguments(errorNode, argList, { type: initTypeResult.type },
|
6798
6804
|
/* typeVarContext */ undefined, skipUnknownArgCheck,
|
@@ -6895,15 +6901,15 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
6895
6901
|
}
|
6896
6902
|
function validateCallForClassInstance(errorNode, argList, expandedCallType, unexpandedCallType, typeVarContext, skipUnknownArgCheck, inferenceContext, recursionCount) {
|
6897
6903
|
var _a;
|
6904
|
+
const callDiag = new diagnostic_1.DiagnosticAddendum();
|
6898
6905
|
const callMethodResult = getTypeOfBoundMember(errorNode, expandedCallType, '__call__',
|
6899
|
-
/* usage */ undefined,
|
6900
|
-
/* diag */ undefined, 16 /* MemberAccessFlags.SkipInstanceMembers */ | 512 /* MemberAccessFlags.SkipAttributeAccessOverride */,
|
6906
|
+
/* usage */ undefined, callDiag, 16 /* MemberAccessFlags.SkipInstanceMembers */ | 512 /* MemberAccessFlags.SkipAttributeAccessOverride */,
|
6901
6907
|
/* selfType */ undefined, recursionCount);
|
6902
6908
|
const callMethodType = callMethodResult === null || callMethodResult === void 0 ? void 0 : callMethodResult.type;
|
6903
|
-
if (!callMethodType) {
|
6909
|
+
if (!callMethodType || callMethodResult.typeErrors) {
|
6904
6910
|
addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.objectNotCallable().format({
|
6905
6911
|
type: printType(expandedCallType),
|
6906
|
-
}), errorNode);
|
6912
|
+
}) + callDiag.getString(), errorNode);
|
6907
6913
|
return { returnType: types_1.UnknownType.create(), argumentErrors: true };
|
6908
6914
|
}
|
6909
6915
|
const callResult = validateCallArguments(errorNode, argList, { type: callMethodType }, typeVarContext, skipUnknownArgCheck, inferenceContext, recursionCount);
|
@@ -9114,6 +9120,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9114
9120
|
});
|
9115
9121
|
types_1.FunctionType.addDefaultParameters(newType);
|
9116
9122
|
newType.details.declaredReturnType = types_1.ClassType.cloneAsInstance(classType);
|
9123
|
+
newType.details.constructorTypeVarScopeId = classType.details.typeVarScopeId;
|
9117
9124
|
classType.details.fields.set('__new__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, newType));
|
9118
9125
|
}
|
9119
9126
|
return classType;
|
@@ -9420,7 +9427,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9420
9427
|
let isIncomplete = false;
|
9421
9428
|
// Infer the key and value types if possible.
|
9422
9429
|
node.entries.forEach((entryNode, index) => {
|
9423
|
-
var _a;
|
9430
|
+
var _a, _b, _c, _d;
|
9424
9431
|
let addUnknown = true;
|
9425
9432
|
if (entryNode.nodeType === 17 /* ParseNodeType.DictionaryKeyEntry */) {
|
9426
9433
|
const keyTypeResult = getTypeOfExpression(entryNode.keyExpression,
|
@@ -9467,6 +9474,15 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9467
9474
|
isIncomplete = true;
|
9468
9475
|
}
|
9469
9476
|
if (forceStrictInference || index < maxEntriesToUseForInference) {
|
9477
|
+
// If an existing key has the same literal type, delete the previous
|
9478
|
+
// key since we're overwriting it here.
|
9479
|
+
if ((0, types_1.isClass)(keyType) && (0, typeUtils_1.isLiteralType)(keyType)) {
|
9480
|
+
const existingIndex = keyTypes.findIndex((kt) => (0, types_1.isTypeSame)(keyType, kt.type));
|
9481
|
+
if (existingIndex >= 0) {
|
9482
|
+
keyTypes.splice(existingIndex, 1);
|
9483
|
+
valueTypes.splice(existingIndex, 1);
|
9484
|
+
}
|
9485
|
+
}
|
9470
9486
|
keyTypes.push({ node: entryNode.keyExpression, type: keyType });
|
9471
9487
|
valueTypes.push({ node: entryNode.valueExpression, type: valueType });
|
9472
9488
|
}
|
@@ -9504,10 +9520,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9504
9520
|
/* allowNarrowed */ true);
|
9505
9521
|
tdEntries.knownItems.forEach((entry, name) => {
|
9506
9522
|
if (entry.isRequired || entry.isProvided) {
|
9507
|
-
keyTypes.push({
|
9523
|
+
keyTypes.push({
|
9524
|
+
node: entryNode,
|
9525
|
+
type: types_1.ClassType.cloneWithLiteral(strObject, name),
|
9526
|
+
});
|
9508
9527
|
valueTypes.push({ node: entryNode, type: entry.valueType });
|
9509
9528
|
}
|
9510
9529
|
});
|
9530
|
+
if (!expectedTypedDictEntries) {
|
9531
|
+
keyTypes.push({ node: entryNode, type: types_1.ClassType.cloneAsInstance(strObject) });
|
9532
|
+
valueTypes.push({
|
9533
|
+
node: entryNode,
|
9534
|
+
type: (_c = (_b = (_a = tdEntries.extraItems) === null || _a === void 0 ? void 0 : _a.valueType) !== null && _b !== void 0 ? _b : objectType) !== null && _c !== void 0 ? _c : types_1.UnknownType.create(),
|
9535
|
+
});
|
9536
|
+
}
|
9511
9537
|
addUnknown = false;
|
9512
9538
|
}
|
9513
9539
|
}
|
@@ -9541,7 +9567,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9541
9567
|
}
|
9542
9568
|
// The result should be a tuple.
|
9543
9569
|
if ((0, types_1.isClassInstance)(dictEntryType) && (0, typeUtils_1.isTupleClass)(dictEntryType)) {
|
9544
|
-
const typeArgs = (
|
9570
|
+
const typeArgs = (_d = dictEntryType.tupleTypeArguments) === null || _d === void 0 ? void 0 : _d.map((t) => t.type);
|
9545
9571
|
if (typeArgs && typeArgs.length === 2) {
|
9546
9572
|
if (forceStrictInference || index < maxEntriesToUseForInference) {
|
9547
9573
|
keyTypes.push({ node: entryNode, type: typeArgs[0] });
|
@@ -12526,6 +12552,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12526
12552
|
else {
|
12527
12553
|
annotatedType = getTypeOfParameterAnnotation(paramTypeNode, param.category);
|
12528
12554
|
}
|
12555
|
+
if (annotatedType) {
|
12556
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersSeen, (0, typeUtils_1.getTypeVarArgumentsRecursive)(annotatedType), functionType.details.typeVarScopeId);
|
12557
|
+
}
|
12529
12558
|
if ((0, types_1.isVariadicTypeVar)(annotatedType) && !annotatedType.isVariadicUnpacked) {
|
12530
12559
|
addError(localize_1.LocMessage.unpackedTypeVarTupleExpected().format({
|
12531
12560
|
name1: annotatedType.details.name,
|
@@ -12631,7 +12660,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12631
12660
|
};
|
12632
12661
|
types_1.FunctionType.addParameter(functionType, functionParam);
|
12633
12662
|
if (functionParam.hasDeclaredType) {
|
12634
|
-
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersSeen, (0, typeUtils_1.getTypeVarArgumentsRecursive)(functionParam.type));
|
12663
|
+
(0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersSeen, (0, typeUtils_1.getTypeVarArgumentsRecursive)(functionParam.type), functionType.details.typeVarScopeId);
|
12635
12664
|
}
|
12636
12665
|
if (param.name) {
|
12637
12666
|
const variadicParamType = transformVariadicParamType(node, param.category, functionParam.type);
|