Skip to content

Commit 8001015

Browse files
hazzard993Perryvw
authored andcommitted
Luajit unpack fix (#273)
* LuaJIT uses LuaTranspiler's spread * Added some unit tests for spreading * Stopped using prototype * Removed Transpiler import
1 parent ad5f2e3 commit 8001015

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/targets/Transpiler.JIT.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,9 @@ export class LuaTranspilerJIT extends LuaTranspiler52 {
3939
public transpileDestructingAssignmentValue(node: ts.Expression): string {
4040
return `unpack(${this.transpileExpression(node)})`;
4141
}
42+
43+
/** @override */
44+
public transpileSpreadElement(node: ts.SpreadElement): string {
45+
return "unpack(" + this.transpileExpression(node.expression) + ")";
46+
}
4247
}

test/unit/spreadElement.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,20 @@ export class SpreadElementTest {
2121
const lua = util.transpileString(`[].push(...${JSON.stringify([1, 2, 3])});`, {luaTarget: LuaTarget.Lua51});
2222
Expect(lua).toBe("__TS__ArrayPush({}, unpack({1,2,3}));");
2323
}
24+
25+
@Test("Spread Element Lua 5.2")
26+
public spreadElement52() {
27+
const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.Lua52, luaLibImport: "none"});
28+
Expect(lua).toBe("{table.unpack({0,1,2})};");
29+
}
30+
@Test("Spread Element Lua 5.3")
31+
public spreadElement53() {
32+
const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.Lua53, luaLibImport: "none"});
33+
Expect(lua).toBe("{table.unpack({0,1,2})};");
34+
}
35+
@Test("Spread Element Lua JIT")
36+
public spreadElementJIT() {
37+
const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.LuaJIT, luaLibImport: "none"});
38+
Expect(lua).toBe("{unpack({0,1,2})};");
39+
}
2440
}

0 commit comments

Comments
 (0)