Skip to content

Commit 710ddfc

Browse files
authored
Always create synthetic enum initializer (#611)
1 parent 2904ecf commit 710ddfc

File tree

2 files changed

+12
-16
lines changed

2 files changed

+12
-16
lines changed

internal/transformers/runtimesyntax.go

+2-6
Original file line numberDiff line numberDiff line change
@@ -438,16 +438,12 @@ func (tx *RuntimeSyntaxTransformer) transformEnumMember(
438438
case jsnum.Number:
439439
hasNumericInitializer = true
440440
*autoValue = value
441-
if !ast.IsNumericLiteral(expression) && !ast.IsSignedNumericLiteral(expression) {
442-
expression = constantExpression(value, tx.factory)
443-
}
441+
expression = constantExpression(value, tx.factory) // TODO: preserve original expression after Strada migration
444442
tx.cacheEnumMemberValue(enum.AsNode(), memberName, result)
445443
case string:
446444
hasStringInitializer = true
447445
*autoValue = jsnum.NaN()
448-
if !ast.IsStringLiteralLike(expression) {
449-
expression = constantExpression(value, tx.factory)
450-
}
446+
expression = constantExpression(value, tx.factory) // TODO: preserve original expression after Strada migration
451447
tx.cacheEnumMemberValue(enum.AsNode(), memberName, result)
452448
default:
453449
*autoValue = jsnum.NaN()

internal/transformers/runtimesyntax_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func TestEnumTransformer(t *testing.T) {
7777
E[E["A"] = 1] = "A";
7878
E[E["B"] = 2] = "B";
7979
E[E["C"] = 3] = "C";
80-
E["D"] = 'x';
80+
E["D"] = "x";
8181
})(E || (E = {}));`},
8282

8383
{title: "autonumber enum #8", input: "enum E {A,B=2,C}", output: `var E;
@@ -89,23 +89,23 @@ func TestEnumTransformer(t *testing.T) {
8989

9090
{title: "autonumber enum #9", input: "enum E {A='x',B=2,C}", output: `var E;
9191
(function (E) {
92-
E["A"] = 'x';
92+
E["A"] = "x";
9393
E[E["B"] = 2] = "B";
9494
E[E["C"] = 3] = "C";
9595
})(E || (E = {}));`},
9696

9797
{title: "autonumber enum #10", input: "enum E {A='x',B=y,C}", output: `var E;
9898
(function (E) {
9999
var auto;
100-
E["A"] = 'x';
100+
E["A"] = "x";
101101
E[E["B"] = auto = y] = "B";
102102
E[E["C"] = ++auto] = "C";
103103
})(E || (E = {}));`},
104104

105105
{title: "autonumber enum #11", input: "enum E {A='x',B=1,C,D=y,E,F=3,G}", output: `var E;
106106
(function (E) {
107107
var auto;
108-
E["A"] = 'x';
108+
E["A"] = "x";
109109
E[E["B"] = 1] = "B";
110110
E[E["C"] = 2] = "C";
111111
E[E["D"] = auto = y] = "D";
@@ -122,7 +122,7 @@ func TestEnumTransformer(t *testing.T) {
122122

123123
{title: "autonumber enum #13", input: "enum E {A='x',B}", output: `var E;
124124
(function (E) {
125-
E["A"] = 'x';
125+
E["A"] = "x";
126126
E["B"] = void 0;
127127
})(E || (E = {}));`},
128128

@@ -136,15 +136,15 @@ func TestEnumTransformer(t *testing.T) {
136136

137137
{title: "string enum #1", input: "enum E {A = 'x',B = 'y',C = 'z'}", output: `var E;
138138
(function (E) {
139-
E["A"] = 'x';
140-
E["B"] = 'y';
141-
E["C"] = 'z';
139+
E["A"] = "x";
140+
E["B"] = "y";
141+
E["C"] = "z";
142142
})(E || (E = {}));`},
143143

144144
{title: "string enum #2", input: "enum E {A = 'x',B = 'y',C = `a${A}b${B}c`}", output: `var E;
145145
(function (E) {
146-
E["A"] = 'x';
147-
E["B"] = 'y';
146+
E["A"] = "x";
147+
E["B"] = "y";
148148
E["C"] = "axbyc";
149149
})(E || (E = {}));`},
150150

0 commit comments

Comments
 (0)