Skip to content

Commit 244cda9

Browse files
Copilotjakebailey
andauthored
Fix enum member emit for escaped identifiers (#4107)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
1 parent 433bc1e commit 244cda9

5 files changed

Lines changed: 52 additions & 1 deletion

File tree

internal/transformers/tstransforms/runtimesyntax.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func (tx *RuntimeSyntaxTransformer) getExpressionForPropertyName(member *ast.Enu
196196
// enums don't support computed properties so we always generate the 'expression' part of the name as-is.
197197
return tx.Visitor().VisitNode(n.Expression)
198198
case ast.KindIdentifier:
199-
return tx.Factory().NewStringLiteralFromNode(name)
199+
return tx.Factory().NewStringLiteral(name.Text(), ast.TokenFlagsNone)
200200
case ast.KindStringLiteral: // !!! propagate token flags (will produce new diffs)
201201
return tx.Factory().NewStringLiteral(name.Text(), ast.TokenFlagsNone)
202202
case ast.KindNumericLiteral:
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//// [tests/cases/compiler/enumUnicodeEscapeMemberName.ts] ////
2+
3+
//// [enumUnicodeEscapeMemberName.ts]
4+
enum E {
5+
\u0041 = 1,
6+
}
7+
const a = E.A;
8+
9+
10+
//// [enumUnicodeEscapeMemberName.js]
11+
"use strict";
12+
var E;
13+
(function (E) {
14+
E[E["A"] = 1] = "A";
15+
})(E || (E = {}));
16+
const a = E.A;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//// [tests/cases/compiler/enumUnicodeEscapeMemberName.ts] ////
2+
3+
=== enumUnicodeEscapeMemberName.ts ===
4+
enum E {
5+
>E : Symbol(E, Decl(enumUnicodeEscapeMemberName.ts, 0, 0))
6+
7+
\u0041 = 1,
8+
>\u0041 : Symbol(E[\u0041], Decl(enumUnicodeEscapeMemberName.ts, 0, 8))
9+
}
10+
const a = E.A;
11+
>a : Symbol(a, Decl(enumUnicodeEscapeMemberName.ts, 3, 5))
12+
>E.A : Symbol(E[\u0041], Decl(enumUnicodeEscapeMemberName.ts, 0, 8))
13+
>E : Symbol(E, Decl(enumUnicodeEscapeMemberName.ts, 0, 0))
14+
>A : Symbol(E[\u0041], Decl(enumUnicodeEscapeMemberName.ts, 0, 8))
15+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//// [tests/cases/compiler/enumUnicodeEscapeMemberName.ts] ////
2+
3+
=== enumUnicodeEscapeMemberName.ts ===
4+
enum E {
5+
>E : E
6+
7+
\u0041 = 1,
8+
>\u0041 : E.A
9+
>1 : 1
10+
}
11+
const a = E.A;
12+
>a : E.A
13+
>E.A : E
14+
>E : typeof E
15+
>A : E
16+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
enum E {
2+
\u0041 = 1,
3+
}
4+
const a = E.A;

0 commit comments

Comments
 (0)