diff --git a/src/targets/Transpiler.JIT.ts b/src/targets/Transpiler.JIT.ts index 76bf2fac2..a23e3a8e2 100644 --- a/src/targets/Transpiler.JIT.ts +++ b/src/targets/Transpiler.JIT.ts @@ -39,4 +39,9 @@ export class LuaTranspilerJIT extends LuaTranspiler52 { public transpileDestructingAssignmentValue(node: ts.Expression): string { return `unpack(${this.transpileExpression(node)})`; } + + /** @override */ + public transpileSpreadElement(node: ts.SpreadElement): string { + return "unpack(" + this.transpileExpression(node.expression) + ")"; + } } diff --git a/test/unit/spreadElement.spec.ts b/test/unit/spreadElement.spec.ts index 50bf8f2dc..effd3d846 100644 --- a/test/unit/spreadElement.spec.ts +++ b/test/unit/spreadElement.spec.ts @@ -21,4 +21,20 @@ export class SpreadElementTest { const lua = util.transpileString(`[].push(...${JSON.stringify([1, 2, 3])});`, {luaTarget: LuaTarget.Lua51}); Expect(lua).toBe("__TS__ArrayPush({}, unpack({1,2,3}));"); } + + @Test("Spread Element Lua 5.2") + public spreadElement52() { + const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.Lua52, luaLibImport: "none"}); + Expect(lua).toBe("{table.unpack({0,1,2})};"); + } + @Test("Spread Element Lua 5.3") + public spreadElement53() { + const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.Lua53, luaLibImport: "none"}); + Expect(lua).toBe("{table.unpack({0,1,2})};"); + } + @Test("Spread Element Lua JIT") + public spreadElementJIT() { + const lua = util.transpileString(`[...[0, 1, 2]]`, {luaTarget: LuaTarget.LuaJIT, luaLibImport: "none"}); + Expect(lua).toBe("{unpack({0,1,2})};"); + } }