@@ -13526,6 +13526,7 @@ namespace ts {
13526
13526
for (let i = 0; i < node.properties.length; i++) {
13527
13527
const memberDecl = node.properties[i];
13528
13528
let member = memberDecl.symbol;
13529
+ let literalName: __String | undefined;
13529
13530
if (memberDecl.kind === SyntaxKind.PropertyAssignment ||
13530
13531
memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment ||
13531
13532
isObjectLiteralMethod(memberDecl)) {
@@ -13536,6 +13537,12 @@ namespace ts {
13536
13537
13537
13538
let type: Type;
13538
13539
if (memberDecl.kind === SyntaxKind.PropertyAssignment) {
13540
+ if (memberDecl.name.kind === SyntaxKind.ComputedPropertyName) {
13541
+ const t = checkComputedPropertyName(<ComputedPropertyName>memberDecl.name);
13542
+ if (t.flags & TypeFlags.Literal) {
13543
+ literalName = escapeLeadingUnderscores("" + (t as LiteralType).value);
13544
+ }
13545
+ }
13539
13546
type = checkPropertyAssignment(<PropertyAssignment>memberDecl, checkMode);
13540
13547
}
13541
13548
else if (memberDecl.kind === SyntaxKind.MethodDeclaration) {
@@ -13552,7 +13559,7 @@ namespace ts {
13552
13559
}
13553
13560
13554
13561
typeFlags |= type.flags;
13555
- const prop = createSymbol(SymbolFlags.Property | member.flags, member.escapedName);
13562
+ const prop = createSymbol(SymbolFlags.Property | member.flags, literalName || member.escapedName);
13556
13563
if (inDestructuringPattern) {
13557
13564
// If object literal is an assignment pattern and if the assignment pattern specifies a default value
13558
13565
// for the property, make the property optional.
@@ -13562,7 +13569,7 @@ namespace ts {
13562
13569
if (isOptional) {
13563
13570
prop.flags |= SymbolFlags.Optional;
13564
13571
}
13565
- if (hasDynamicName(memberDecl)) {
13572
+ if (!literalName && hasDynamicName(memberDecl)) {
13566
13573
patternWithComputedProperties = true;
13567
13574
}
13568
13575
}
@@ -13620,7 +13627,7 @@ namespace ts {
13620
13627
checkNodeDeferred(memberDecl);
13621
13628
}
13622
13629
13623
- if (hasDynamicName(memberDecl)) {
13630
+ if (!literalName && hasDynamicName(memberDecl)) {
13624
13631
if (isNumericName(memberDecl.name)) {
13625
13632
hasComputedNumberProperty = true;
13626
13633
}
0 commit comments