@@ -1276,7 +1276,7 @@ namespace ts {
12761276 //
12771277
12781278 const prefix = getClassMemberPrefix ( node , member ) ;
1279- const memberName = getExpressionForPropertyName ( member ) ;
1279+ const memberName = getExpressionForPropertyName ( member , /*generateNameForComputedPropertyName*/ true ) ;
12801280 const descriptor = languageVersion > ScriptTarget . ES3
12811281 ? member . kind === SyntaxKind . PropertyDeclaration
12821282 // We emit `void 0` here to indicate to `__decorate` that it can invoke `Object.defineProperty` directly, but that it
@@ -1750,10 +1750,12 @@ namespace ts {
17501750 *
17511751 * @param member The member whose name should be converted into an expression.
17521752 */
1753- function getExpressionForPropertyName ( member : ClassElement | EnumMember ) : Expression {
1753+ function getExpressionForPropertyName ( member : ClassElement | EnumMember , generateNameForComputedPropertyName : boolean ) : Expression {
17541754 const name = member . name ;
17551755 if ( isComputedPropertyName ( name ) ) {
1756- return getGeneratedNameForNode ( name ) ;
1756+ return generateNameForComputedPropertyName
1757+ ? getGeneratedNameForNode ( name )
1758+ : ( < ComputedPropertyName > name ) . expression ;
17571759 }
17581760 else if ( isIdentifier ( name ) ) {
17591761 return createLiteral ( name . text ) ;
@@ -2337,7 +2339,10 @@ namespace ts {
23372339 * @param member The enum member node.
23382340 */
23392341 function transformEnumMember ( member : EnumMember ) : Statement {
2340- const name = getExpressionForPropertyName ( member ) ;
2342+ // enums don't support computed properties
2343+ // we pass false as 'generateNameForComputedPropertyName' for a backward compatibility purposes
2344+ // old emitter always generate 'expression' part of the name as-is.
2345+ const name = getExpressionForPropertyName ( member , /*generateNameForComputedPropertyName*/ false ) ;
23412346 return createStatement (
23422347 createAssignment (
23432348 createElementAccess (
0 commit comments