@@ -23836,10 +23836,15 @@ namespace ts {
23836
23836
return links.resolvedType;
23837
23837
}
23838
23838
23839
+ function isSymbolWithNumericName(symbol: Symbol) {
23840
+ const firstDecl = symbol.declarations?.[0];
23841
+ return isNumericLiteralName(symbol.escapedName) || (firstDecl && isNamedDeclaration(firstDecl) && isNumericName(firstDecl.name));
23842
+ }
23843
+
23839
23844
function getObjectLiteralIndexInfo(node: ObjectLiteralExpression, offset: number, properties: Symbol[], kind: IndexKind): IndexInfo {
23840
23845
const propTypes: Type[] = [];
23841
23846
for (let i = offset; i < properties.length; i++) {
23842
- if (kind === IndexKind.String || isNumericName(node. properties[i].name! )) {
23847
+ if (kind === IndexKind.String || isSymbolWithNumericName( properties[i])) {
23843
23848
propTypes.push(getTypeOfSymbol(properties[i]));
23844
23849
}
23845
23850
}
@@ -23892,8 +23897,7 @@ namespace ts {
23892
23897
}
23893
23898
23894
23899
let offset = 0;
23895
- for (let i = 0; i < node.properties.length; i++) {
23896
- const memberDecl = node.properties[i];
23900
+ for (const memberDecl of node.properties) {
23897
23901
let member = getSymbolOfNode(memberDecl);
23898
23902
const computedNameType = memberDecl.name && memberDecl.name.kind === SyntaxKind.ComputedPropertyName && !isWellKnownSymbolSyntactically(memberDecl.name.expression) ?
23899
23903
checkComputedPropertyName(memberDecl.name) : undefined;
@@ -23980,7 +23984,7 @@ namespace ts {
23980
23984
checkSpreadPropOverrides(type, allPropertiesTable, memberDecl);
23981
23985
}
23982
23986
spread = getSpreadType(spread, type, node.symbol, objectFlags, inConstContext);
23983
- offset = i + 1 ;
23987
+ offset = propertiesArray.length ;
23984
23988
continue;
23985
23989
}
23986
23990
else {
0 commit comments