From 77b50f9b1c142c0480f17df569fbe84914356e56 Mon Sep 17 00:00:00 2001 From: hazzard993 Date: Thu, 8 Nov 2018 13:28:49 +1000 Subject: [PATCH 1/4] LuaJIT uses LuaTranspiler's spread --- src/targets/Transpiler.JIT.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/targets/Transpiler.JIT.ts b/src/targets/Transpiler.JIT.ts index 76bf2fac2..09a6fa894 100644 --- a/src/targets/Transpiler.JIT.ts +++ b/src/targets/Transpiler.JIT.ts @@ -1,4 +1,5 @@ import { TSTLErrors } from "../Errors"; +import { LuaTranspiler } from "../Transpiler"; import { TSHelper as tsHelper } from "../TSHelper"; import { LuaTranspiler52 } from "./Transpiler.52"; @@ -39,4 +40,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 LuaTranspiler.prototype.transpileSpreadElement(node); + } } From 011a4c0a05e23ea23e3eb25f8e3a711ab94cbde9 Mon Sep 17 00:00:00 2001 From: hazzard993 Date: Thu, 8 Nov 2018 13:29:23 +1000 Subject: [PATCH 2/4] Added some unit tests for spreading --- test/unit/spreadElement.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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})};"); + } } From b17b3efc0443518521d5ae9118d965030f59db98 Mon Sep 17 00:00:00 2001 From: hazzard993 Date: Thu, 8 Nov 2018 19:21:32 +1000 Subject: [PATCH 3/4] Stopped using prototype --- src/targets/Transpiler.JIT.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/targets/Transpiler.JIT.ts b/src/targets/Transpiler.JIT.ts index 09a6fa894..3c8b8c26d 100644 --- a/src/targets/Transpiler.JIT.ts +++ b/src/targets/Transpiler.JIT.ts @@ -43,6 +43,6 @@ export class LuaTranspilerJIT extends LuaTranspiler52 { /** @override */ public transpileSpreadElement(node: ts.SpreadElement): string { - return LuaTranspiler.prototype.transpileSpreadElement(node); + return "unpack(" + this.transpileExpression(node.expression) + ")"; } } From 034f44881fcf4a2e5d1eb9a55b20bf9b6f21cf4d Mon Sep 17 00:00:00 2001 From: hazzard993 Date: Thu, 8 Nov 2018 19:27:02 +1000 Subject: [PATCH 4/4] Removed Transpiler import --- src/targets/Transpiler.JIT.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/targets/Transpiler.JIT.ts b/src/targets/Transpiler.JIT.ts index 3c8b8c26d..a23e3a8e2 100644 --- a/src/targets/Transpiler.JIT.ts +++ b/src/targets/Transpiler.JIT.ts @@ -1,5 +1,4 @@ import { TSTLErrors } from "../Errors"; -import { LuaTranspiler } from "../Transpiler"; import { TSHelper as tsHelper } from "../TSHelper"; import { LuaTranspiler52 } from "./Transpiler.52";