@@ -13532,6 +13532,7 @@ namespace ts {
13532
13532
for (let i = 0; i < node.properties.length; i++) {
13533
13533
const memberDecl = node.properties[i];
13534
13534
let member = memberDecl.symbol;
13535
+ let literalName: __String | undefined;
13535
13536
if (memberDecl.kind === SyntaxKind.PropertyAssignment ||
13536
13537
memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment ||
13537
13538
isObjectLiteralMethod(memberDecl)) {
@@ -13542,6 +13543,12 @@ namespace ts {
13542
13543
13543
13544
let type: Type;
13544
13545
if (memberDecl.kind === SyntaxKind.PropertyAssignment) {
13546
+ if (memberDecl.name.kind === SyntaxKind.ComputedPropertyName) {
13547
+ const t = checkComputedPropertyName(<ComputedPropertyName>memberDecl.name);
13548
+ if (t.flags & TypeFlags.Literal) {
13549
+ literalName = escapeLeadingUnderscores("" + (t as LiteralType).value);
13550
+ }
13551
+ }
13545
13552
type = checkPropertyAssignment(<PropertyAssignment>memberDecl, checkMode);
13546
13553
}
13547
13554
else if (memberDecl.kind === SyntaxKind.MethodDeclaration) {
@@ -13558,7 +13565,7 @@ namespace ts {
13558
13565
}
13559
13566
13560
13567
typeFlags |= type.flags;
13561
- const prop = createSymbol(SymbolFlags.Property | member.flags, member.escapedName);
13568
+ const prop = createSymbol(SymbolFlags.Property | member.flags, literalName || member.escapedName);
13562
13569
if (inDestructuringPattern) {
13563
13570
// If object literal is an assignment pattern and if the assignment pattern specifies a default value
13564
13571
// for the property, make the property optional.
@@ -13568,7 +13575,7 @@ namespace ts {
13568
13575
if (isOptional) {
13569
13576
prop.flags |= SymbolFlags.Optional;
13570
13577
}
13571
- if (hasDynamicName(memberDecl)) {
13578
+ if (!literalName && hasDynamicName(memberDecl)) {
13572
13579
patternWithComputedProperties = true;
13573
13580
}
13574
13581
}
@@ -13626,7 +13633,7 @@ namespace ts {
13626
13633
checkNodeDeferred(memberDecl);
13627
13634
}
13628
13635
13629
- if (hasDynamicName(memberDecl)) {
13636
+ if (!literalName && hasDynamicName(memberDecl)) {
13630
13637
if (isNumericName(memberDecl.name)) {
13631
13638
hasComputedNumberProperty = true;
13632
13639
}
0 commit comments