Skip to content

Commit 2b76593

Browse files
committed
Add more test cases for enums.
1 parent 9e4f9db commit 2b76593

6 files changed

Lines changed: 28 additions & 6 deletions

File tree

src/Transpiler.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,19 @@ export abstract class LuaTranspiler {
294294
result += this.makeExport(name, node);
295295
}
296296

297+
let hasStringInitializers = false;
297298
node.members.forEach(member => {
298299
if (member.initializer) {
299300
if (ts.isNumericLiteral(member.initializer)) {
300301
val = parseInt(member.initializer.text);
301302
} else if (ts.isStringLiteral(member.initializer)) {
303+
hasStringInitializers = true;
302304
val = `"${member.initializer.text}"`;
303305
} else {
304306
throw new TranspileError("Only numeric or string initializers allowed for enums.", node);
305307
}
308+
} else if (hasStringInitializers) {
309+
throw new TranspileError("Invalid heterogeneous enum.", node);
306310
}
307311

308312
if (membersOnly) {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
TestEnum={}
2+
TestEnum.val1=0
3+
TestEnum.val2=3
4+
TestEnum.val3="baz"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
TestEnum={}
2+
TestEnum.val1="foo"
3+
TestEnum.val2="bar"
4+
TestEnum.val3="baz"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
enum TestEnum {
2+
val1,
3+
val2 = 3,
4+
val3 = "baz",
5+
}

test/translation/ts/enumString.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
enum TestEnum {
2+
val1 = "foo",
3+
val2 = "bar",
4+
val3 = "baz",
5+
}

test/unit/enum.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ import { Expect, Test, TestCase } from "alsatian";
22
import * as util from "../src/util"
33

44
export class EnumTests {
5-
@Test("String enum")
6-
public stringEnum() {
5+
@Test("Invalid heterogeneous enum")
6+
public invalidHeterogeneousEnum() {
77
// Transpile & Assert
88
Expect(() => {
99
let lua = util.transpileString(
1010
`enum TestEnum {
11-
val1 = "test",
12-
val2 = "ok",
13-
val3 = "bye"
11+
a,
12+
b = "ok",
13+
c,
1414
}`
1515
);
16-
}).not.toThrow();
16+
}).toThrowError(Error, "Invalid heterogeneous enum.");
1717
}
1818

1919
@Test("Unsuported enum")

0 commit comments

Comments
 (0)