@zzzen/pyright-internal 1.2.0-dev.20240901 → 1.2.0-dev.20240915
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/analysis.d.ts +1 -0
- package/dist/analyzer/analysis.js +2 -0
- package/dist/analyzer/analysis.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +6 -2
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.js +14 -8
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +2 -2
- package/dist/analyzer/cacheManager.js.map +1 -1
- package/dist/analyzer/checker.js +53 -192
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +7 -2
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.d.ts +1 -2
- package/dist/analyzer/constraintSolver.js +2 -2
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.js +7 -1
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/dataClasses.js +6 -1
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/namedTuples.js +4 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +5 -0
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.js +1 -1
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.js +3 -1
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.js +2 -3
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +1 -2
- package/dist/analyzer/protocols.js +5 -8
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.d.ts +1 -1
- package/dist/analyzer/service.d.ts +3 -1
- package/dist/analyzer/service.js +50 -33
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceMapper.js +10 -5
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/tuples.d.ts +1 -2
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +599 -181
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +33 -6
- package/dist/analyzer/typeEvaluatorTypes.js +66 -2
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +3 -12
- package/dist/analyzer/typeGuards.js +286 -461
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +12 -1
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +4 -17
- package/dist/analyzer/typeUtils.js +61 -60
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +1 -2
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +9 -4
- package/dist/analyzer/types.js +80 -26
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +23 -16
- package/dist/backgroundAnalysisBase.js +64 -35
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.js +9 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +0 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +1 -1
- package/dist/common/uri/uriUtils.d.ts +1 -1
- package/dist/common/uri/uriUtils.js +6 -1
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/languageServerBase.d.ts +2 -2
- package/dist/languageServerBase.js +1 -3
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +6 -1
- package/dist/languageService/analyzerServiceExecutor.js +7 -6
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +2 -1
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.js +12 -12
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +6 -6
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.js +9 -9
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.d.ts +5 -1
- package/dist/languageService/fileWatcherDynamicFeature.js +12 -2
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +1 -0
- package/dist/languageService/hoverProvider.js +30 -3
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +2 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +2 -2
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +10 -0
- package/dist/localization/localize.js +4 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +155 -153
- package/dist/localization/package.nls.de.json +128 -126
- package/dist/localization/package.nls.en-us.json +1632 -404
- package/dist/localization/package.nls.es.json +151 -149
- package/dist/localization/package.nls.fr.json +129 -127
- package/dist/localization/package.nls.it.json +143 -141
- package/dist/localization/package.nls.ja.json +142 -140
- package/dist/localization/package.nls.ko.json +155 -153
- package/dist/localization/package.nls.pl.json +178 -176
- package/dist/localization/package.nls.pt-br.json +139 -137
- package/dist/localization/package.nls.qps-ploc.json +392 -390
- package/dist/localization/package.nls.ru.json +170 -168
- package/dist/localization/package.nls.tr.json +153 -151
- package/dist/localization/package.nls.zh-cn.json +149 -147
- package/dist/localization/package.nls.zh-tw.json +133 -131
- package/dist/parser/parseNodes.d.ts +2 -3
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.js +6 -20
- package/dist/parser/parser.js.map +1 -1
- package/dist/tests/checker.test.js +14 -1
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/envVarUtils.test.js +0 -3
- package/dist/tests/envVarUtils.test.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +0 -3
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +2 -5
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/fourslash/testStateUtils.d.ts +1 -0
- package/dist/tests/harness/fourslash/testStateUtils.js +5 -0
- package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.d.ts +3 -2
- package/dist/tests/harness/vfs/filesystem.js +6 -3
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +1 -1
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/service.test.js +31 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +5 -1
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +13 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +5 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +6 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/typeEvaluator6.test.js +5 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +1 -1
- package/dist/tests/typeEvaluator8.test.js +40 -0
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +2 -20
- package/dist/workspaceFactory.js +26 -64
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
@@ -8,7 +8,7 @@
|
|
8
8
|
* Functions that operate on Type objects.
|
9
9
|
*/
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
11
|
-
exports.TypeVarTransformer = exports.UniqueSignatureTracker = exports.
|
11
|
+
exports.TypeVarTransformer = exports.UniqueSignatureTracker = exports.ClassIteratorFlags = exports.MemberAccessFlags = void 0;
|
12
12
|
exports.isOptionalType = isOptionalType;
|
13
13
|
exports.isNoneInstance = isNoneInstance;
|
14
14
|
exports.isNoneTypeClass = isNoneTypeClass;
|
@@ -47,6 +47,8 @@ exports.isLiteralTypeOrUnion = isLiteralTypeOrUnion;
|
|
47
47
|
exports.isLiteralLikeType = isLiteralLikeType;
|
48
48
|
exports.containsLiteralType = containsLiteralType;
|
49
49
|
exports.getLiteralTypeClassName = getLiteralTypeClassName;
|
50
|
+
exports.stripTypeForm = stripTypeForm;
|
51
|
+
exports.stripTypeFormRecursive = stripTypeFormRecursive;
|
50
52
|
exports.getUnionSubtypeCount = getUnionSubtypeCount;
|
51
53
|
exports.isEllipsisType = isEllipsisType;
|
52
54
|
exports.isProperty = isProperty;
|
@@ -72,6 +74,7 @@ exports.getContainerDepth = getContainerDepth;
|
|
72
74
|
exports.lookUpObjectMember = lookUpObjectMember;
|
73
75
|
exports.lookUpClassMember = lookUpClassMember;
|
74
76
|
exports.getClassMemberIterator = getClassMemberIterator;
|
77
|
+
exports.isMemberReadOnly = isMemberReadOnly;
|
75
78
|
exports.getClassIterator = getClassIterator;
|
76
79
|
exports.getClassFieldsRecursive = getClassFieldsRecursive;
|
77
80
|
exports.addTypeVarsToListIfUnique = addTypeVarsToListIfUnique;
|
@@ -172,64 +175,6 @@ var ClassIteratorFlags;
|
|
172
175
|
// Skip the 'type' base class in particular.
|
173
176
|
ClassIteratorFlags[ClassIteratorFlags["SkipTypeBaseClass"] = 4] = "SkipTypeBaseClass";
|
174
177
|
})(ClassIteratorFlags || (exports.ClassIteratorFlags = ClassIteratorFlags = {}));
|
175
|
-
var AssignTypeFlags;
|
176
|
-
(function (AssignTypeFlags) {
|
177
|
-
AssignTypeFlags[AssignTypeFlags["Default"] = 0] = "Default";
|
178
|
-
// Require invariance with respect to class matching? Normally
|
179
|
-
// subclasses are allowed.
|
180
|
-
AssignTypeFlags[AssignTypeFlags["Invariant"] = 1] = "Invariant";
|
181
|
-
// The caller has swapped the source and dest types because
|
182
|
-
// the types are contravariant. Perform type var matching
|
183
|
-
// on dest type vars rather than source type var.
|
184
|
-
AssignTypeFlags[AssignTypeFlags["Contravariant"] = 2] = "Contravariant";
|
185
|
-
// We're comparing type compatibility of two distinct recursive types.
|
186
|
-
// This has the potential of recursing infinitely. This flag allows us
|
187
|
-
// to detect the recursion after the first level of checking.
|
188
|
-
AssignTypeFlags[AssignTypeFlags["SkipRecursiveTypeCheck"] = 4] = "SkipRecursiveTypeCheck";
|
189
|
-
// During TypeVar solving for a function call, this flag is set if
|
190
|
-
// this is the first of multiple passes. It adjusts certain heuristics
|
191
|
-
// for constraint solving.
|
192
|
-
AssignTypeFlags[AssignTypeFlags["ArgAssignmentFirstPass"] = 8] = "ArgAssignmentFirstPass";
|
193
|
-
// If the dest is not Any but the src is Any, treat it
|
194
|
-
// as incompatible. Also, treat all source TypeVars as their
|
195
|
-
// concrete counterparts. This option is used for validating
|
196
|
-
// whether overload signatures overlap.
|
197
|
-
AssignTypeFlags[AssignTypeFlags["OverloadOverlap"] = 16] = "OverloadOverlap";
|
198
|
-
// When used in conjunction with OverloadOverlapCheck, look
|
199
|
-
// for partial overlaps. For example, `int | list` overlaps
|
200
|
-
// partially with `int | str`.
|
201
|
-
AssignTypeFlags[AssignTypeFlags["PartialOverloadOverlap"] = 32] = "PartialOverloadOverlap";
|
202
|
-
// For function types, skip the return type check.
|
203
|
-
AssignTypeFlags[AssignTypeFlags["SkipReturnTypeCheck"] = 64] = "SkipReturnTypeCheck";
|
204
|
-
// In most cases, literals are stripped when assigning to a
|
205
|
-
// type variable. This overrides the standard behavior.
|
206
|
-
AssignTypeFlags[AssignTypeFlags["RetainLiteralsForTypeVar"] = 256] = "RetainLiteralsForTypeVar";
|
207
|
-
// When validating the type of a self or cls parameter, allow
|
208
|
-
// a type mismatch. This is used in overload consistency validation
|
209
|
-
// because overloads can provide explicit type annotations for self
|
210
|
-
// or cls.
|
211
|
-
AssignTypeFlags[AssignTypeFlags["SkipSelfClsTypeCheck"] = 512] = "SkipSelfClsTypeCheck";
|
212
|
-
// We're initially populating the constraints with an expected type,
|
213
|
-
// so TypeVars should match the specified type exactly rather than
|
214
|
-
// employing narrowing or widening. The variance context determines
|
215
|
-
// whether the upper bound, lower bound, or both are established.
|
216
|
-
AssignTypeFlags[AssignTypeFlags["PopulateExpectedType"] = 2048] = "PopulateExpectedType";
|
217
|
-
// Used with PopulatingExpectedType, this flag indicates that a TypeVar
|
218
|
-
// constraint that is Unknown should be ignored.
|
219
|
-
AssignTypeFlags[AssignTypeFlags["SkipPopulateUnknownExpectedType"] = 4096] = "SkipPopulateUnknownExpectedType";
|
220
|
-
// Normally, when a class type is assigned to a TypeVar and that class
|
221
|
-
// hasn't previously been specialized, it will be specialized with
|
222
|
-
// default type arguments (typically "Unknown"). This flag skips
|
223
|
-
// this step.
|
224
|
-
AssignTypeFlags[AssignTypeFlags["AllowUnspecifiedTypeArgs"] = 8192] = "AllowUnspecifiedTypeArgs";
|
225
|
-
// Normally all special form classes are incompatible with type[T],
|
226
|
-
// but a few of them are allowed in the context of an isinstance
|
227
|
-
// or issubclass call.
|
228
|
-
AssignTypeFlags[AssignTypeFlags["AllowIsinstanceSpecialForms"] = 16384] = "AllowIsinstanceSpecialForms";
|
229
|
-
// When comparing two methods, skip the type check for the "self" or "cls"
|
230
|
-
// parameters. This is used for variance inference and validation.
|
231
|
-
AssignTypeFlags[AssignTypeFlags["SkipSelfClsParamCheck"] = 32768] = "SkipSelfClsParamCheck";
|
232
|
-
})(AssignTypeFlags || (exports.AssignTypeFlags = AssignTypeFlags = {}));
|
233
178
|
// Tracks whether a function signature has been seen before within
|
234
179
|
// an expression. For example, in the expression "foo(foo, foo)", the
|
235
180
|
// signature for "foo" will be seen three times at three different
|
@@ -689,6 +634,11 @@ function preserveUnknown(type1, type2) {
|
|
689
634
|
// Determines whether the specified type is a type that can be
|
690
635
|
// combined with other types for a union.
|
691
636
|
function isUnionableType(subtypes) {
|
637
|
+
// If all of the subtypes are TypeForm types, we know that they
|
638
|
+
// are unionable.
|
639
|
+
if (subtypes.every((t) => { var _a; return ((_a = t.props) === null || _a === void 0 ? void 0 : _a.typeForm) !== undefined; })) {
|
640
|
+
return true;
|
641
|
+
}
|
692
642
|
let typeFlags = 2 /* TypeFlags.Instance */ | 1 /* TypeFlags.Instantiable */;
|
693
643
|
for (const subtype of subtypes) {
|
694
644
|
typeFlags &= subtype.flags;
|
@@ -1030,6 +980,24 @@ function getLiteralTypeClassName(type) {
|
|
1030
980
|
}
|
1031
981
|
return undefined;
|
1032
982
|
}
|
983
|
+
function stripTypeForm(type) {
|
984
|
+
var _a;
|
985
|
+
if ((_a = type.props) === null || _a === void 0 ? void 0 : _a.typeForm) {
|
986
|
+
return types_1.TypeBase.cloneWithTypeForm(type, undefined);
|
987
|
+
}
|
988
|
+
return type;
|
989
|
+
}
|
990
|
+
function stripTypeFormRecursive(type, recursionCount = 0) {
|
991
|
+
var _a;
|
992
|
+
if (recursionCount > types_1.maxTypeRecursionCount) {
|
993
|
+
return type;
|
994
|
+
}
|
995
|
+
recursionCount++;
|
996
|
+
if ((_a = type.props) === null || _a === void 0 ? void 0 : _a.typeForm) {
|
997
|
+
type = types_1.TypeBase.cloneWithTypeForm(type, undefined);
|
998
|
+
}
|
999
|
+
return mapSubtypes(type, (subtype) => stripTypeFormRecursive(subtype, recursionCount));
|
1000
|
+
}
|
1033
1001
|
function getUnionSubtypeCount(type) {
|
1034
1002
|
if ((0, types_1.isUnion)(type)) {
|
1035
1003
|
return type.priv.subtypes.length;
|
@@ -1183,10 +1151,16 @@ function makeFunctionTypeVarsBound(type) {
|
|
1183
1151
|
return makeTypeVarsBound(type, scopeIds);
|
1184
1152
|
}
|
1185
1153
|
function makeTypeVarsBound(type, scopeIds) {
|
1154
|
+
if (scopeIds && scopeIds.length === 0) {
|
1155
|
+
return type;
|
1156
|
+
}
|
1186
1157
|
const transformer = new BoundTypeVarTransform(scopeIds);
|
1187
1158
|
return transformer.apply(type, 0);
|
1188
1159
|
}
|
1189
1160
|
function makeTypeVarsFree(type, scopeIds) {
|
1161
|
+
if (scopeIds.length === 0) {
|
1162
|
+
return type;
|
1163
|
+
}
|
1190
1164
|
const transformer = new FreeTypeVarTransform(scopeIds);
|
1191
1165
|
return transformer.apply(type, 0);
|
1192
1166
|
}
|
@@ -1248,6 +1222,7 @@ function getProtocolSymbolsRecursive(classType, symbolMap, classFlags = 512 /* C
|
|
1248
1222
|
isInstanceMember: symbol.isInstanceMember(),
|
1249
1223
|
isClassMember: symbol.isClassMember(),
|
1250
1224
|
isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, /* isDataclass */ false),
|
1225
|
+
isReadOnly: false,
|
1251
1226
|
isTypeDeclared: symbol.hasTypedDeclarations(),
|
1252
1227
|
skippedUndeclaredType: false,
|
1253
1228
|
});
|
@@ -1358,6 +1333,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
|
|
1358
1333
|
isClassVar: false,
|
1359
1334
|
classType,
|
1360
1335
|
unspecializedClassType: classType,
|
1336
|
+
isReadOnly: false,
|
1361
1337
|
isTypeDeclared: false,
|
1362
1338
|
skippedUndeclaredType: false,
|
1363
1339
|
};
|
@@ -1382,6 +1358,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
|
|
1382
1358
|
isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, types_1.ClassType.isDataClass(specializedMroClass)),
|
1383
1359
|
classType: specializedMroClass,
|
1384
1360
|
unspecializedClassType: mroClass,
|
1361
|
+
isReadOnly: isMemberReadOnly(specializedMroClass, memberName),
|
1385
1362
|
isTypeDeclared: hasDeclaredType,
|
1386
1363
|
skippedUndeclaredType,
|
1387
1364
|
};
|
@@ -1421,6 +1398,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
|
|
1421
1398
|
isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, isDataclass),
|
1422
1399
|
classType: specializedMroClass,
|
1423
1400
|
unspecializedClassType: mroClass,
|
1401
|
+
isReadOnly: false,
|
1424
1402
|
isTypeDeclared: hasDeclaredType,
|
1425
1403
|
skippedUndeclaredType,
|
1426
1404
|
};
|
@@ -1443,6 +1421,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
|
|
1443
1421
|
isClassVar: false,
|
1444
1422
|
classType,
|
1445
1423
|
unspecializedClassType: classType,
|
1424
|
+
isReadOnly: false,
|
1446
1425
|
isTypeDeclared: false,
|
1447
1426
|
skippedUndeclaredType: false,
|
1448
1427
|
};
|
@@ -1450,6 +1429,21 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
|
|
1450
1429
|
}
|
1451
1430
|
return undefined;
|
1452
1431
|
}
|
1432
|
+
// Checks for whether the member is effectively read only because it
|
1433
|
+
// belongs to a frozen dataclass or a named tuple.
|
1434
|
+
function isMemberReadOnly(classType, name) {
|
1435
|
+
var _a;
|
1436
|
+
if (types_1.ClassType.hasNamedTupleEntry(classType, name)) {
|
1437
|
+
return true;
|
1438
|
+
}
|
1439
|
+
if (types_1.ClassType.isDataClassFrozen(classType)) {
|
1440
|
+
const dcEntries = (_a = classType.shared) === null || _a === void 0 ? void 0 : _a.dataClassEntries;
|
1441
|
+
if (dcEntries === null || dcEntries === void 0 ? void 0 : dcEntries.some((entry) => entry.name === name)) {
|
1442
|
+
return true;
|
1443
|
+
}
|
1444
|
+
}
|
1445
|
+
return false;
|
1446
|
+
}
|
1453
1447
|
function* getClassIterator(classType, flags = 0 /* ClassIteratorFlags.Default */, skipMroClass) {
|
1454
1448
|
if ((0, types_1.isClass)(classType)) {
|
1455
1449
|
let foundSkipMroClass = skipMroClass === undefined;
|
@@ -1509,6 +1503,7 @@ function getClassFieldsRecursive(classType) {
|
|
1509
1503
|
isInstanceMember: symbol.isInstanceMember(),
|
1510
1504
|
isClassMember: symbol.isClassMember(),
|
1511
1505
|
isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, types_1.ClassType.isDataClass(specializedMroClass)),
|
1506
|
+
isReadOnly: isMemberReadOnly(specializedMroClass, name),
|
1512
1507
|
isTypeDeclared: true,
|
1513
1508
|
skippedUndeclaredType: false,
|
1514
1509
|
});
|
@@ -1680,8 +1675,9 @@ function synthesizeTypeVarForSelfCls(classType, isClsParam) {
|
|
1680
1675
|
const scopeId = (_a = getTypeVarScopeId(classType)) !== null && _a !== void 0 ? _a : '';
|
1681
1676
|
selfType.shared.isSynthesized = true;
|
1682
1677
|
selfType.shared.isSynthesizedSelf = true;
|
1683
|
-
selfType.priv.nameWithScope = types_1.TypeVarType.makeNameWithScope(selfType.shared.name, scopeId);
|
1684
1678
|
selfType.priv.scopeId = scopeId;
|
1679
|
+
selfType.priv.scopeName = '';
|
1680
|
+
selfType.priv.nameWithScope = types_1.TypeVarType.makeNameWithScope(selfType.shared.name, scopeId, selfType.priv.scopeName);
|
1685
1681
|
const boundType = types_1.ClassType.specialize(classType,
|
1686
1682
|
/* typeArgs */ undefined,
|
1687
1683
|
/* isTypeArgExplicit */ false,
|
@@ -3284,6 +3280,11 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer {
|
|
3284
3280
|
if (solutionSets.length <= 1) {
|
3285
3281
|
return callback();
|
3286
3282
|
}
|
3283
|
+
// Handle the case where we're already processing one of the signature contexts
|
3284
|
+
// and are called recursively. Don't loop over all the signature contexts again.
|
3285
|
+
if (this._activeConstraintSetIndex !== undefined) {
|
3286
|
+
return callback();
|
3287
|
+
}
|
3287
3288
|
// Loop through all of the signature contexts in the type var context
|
3288
3289
|
// to create an overload type.
|
3289
3290
|
const overloadTypes = solutionSets.map((_, index) => {
|