diff --git a/src/Transpiler.ts b/src/Transpiler.ts index 6bcae227e..fe6069ca9 100644 --- a/src/Transpiler.ts +++ b/src/Transpiler.ts @@ -1623,7 +1623,7 @@ export abstract class LuaTranspiler { } public transpileDestructingAssignmentValue(node: ts.Expression): string { - throw TSTLErrors.UnsupportedForTarget("Destructing statements", this.options.luaTarget, node); + return `unpack(${this.transpileExpression(node)})`; } public transpileVariableDeclaration(node: ts.VariableDeclaration): string { diff --git a/src/targets/Transpiler.51.ts b/src/targets/Transpiler.51.ts index f84d74fe6..bd4d63359 100644 --- a/src/targets/Transpiler.51.ts +++ b/src/targets/Transpiler.51.ts @@ -4,8 +4,5 @@ import { TSHelper as tsHelper } from "../TSHelper"; import * as ts from "typescript"; export class LuaTranspiler51 extends LuaTranspiler { - /** @override */ - public transpileDestructingAssignmentValue(node: ts.Expression): string { - return `unpack(${this.transpileExpression(node)})`; - } + } diff --git a/src/targets/Transpiler.JIT.ts b/src/targets/Transpiler.JIT.ts index 97173044f..76bf2fac2 100644 --- a/src/targets/Transpiler.JIT.ts +++ b/src/targets/Transpiler.JIT.ts @@ -37,6 +37,6 @@ export class LuaTranspilerJIT extends LuaTranspiler52 { /** @override */ public transpileDestructingAssignmentValue(node: ts.Expression): string { - return `table.unpack(${this.transpileExpression(node)})`; + return `unpack(${this.transpileExpression(node)})`; } } diff --git a/test/unit/assignmentDestructuring.spec.ts b/test/unit/assignmentDestructuring.spec.ts index 994c3f83c..bbe555adb 100644 --- a/test/unit/assignmentDestructuring.spec.ts +++ b/test/unit/assignmentDestructuring.spec.ts @@ -35,6 +35,6 @@ export class AssignmentDestructuringTests { this.assignmentDestruturingTs, {luaTarget: LuaTarget.LuaJIT, luaLibImport: "none"} ); // Assert - Expect(lua).toBe(`local a,b=table.unpack(myFunc());`); + Expect(lua).toBe(`local a,b=unpack(myFunc());`); } }