From 68493d55e1ca3541a3c1b171766763e78bbdcb90 Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Sat, 5 Oct 2019 20:00:20 +0200 Subject: [PATCH 1/5] fix valueToString for undefined values --- test/util.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/test/util.ts b/test/util.ts index 8abc0dbc6..b133b0203 100644 --- a/test/util.ts +++ b/test/util.ts @@ -49,10 +49,15 @@ export function expectToBeDefined(subject: T | null | undefined): subject is return true; // If this was false the expect would have thrown an error } -export const valueToString = (value: unknown) => - (typeof value === "number" && (!Number.isFinite(value) || Number.isNaN(value))) || typeof value === "function" - ? String(value) - : JSON.stringify(value); +export function valueToString(value: unknown): string { + if (typeof value === "number" && (!Number.isFinite(value) || Number.isNaN(value))) { + return String(value); + } else if (typeof value === "function" || value === undefined) { + return String(value); + } else { + return JSON.stringify(value); + } +} export const valuesToString = (values: unknown[]) => values.map(valueToString).join(", "); From 81b42593cb890b2a8da3c309726c2ddc55f081ba Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Sat, 5 Oct 2019 20:34:17 +0200 Subject: [PATCH 2/5] fix splice test --- test/unit/builtins/array.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/unit/builtins/array.spec.ts b/test/unit/builtins/array.spec.ts index edac44090..e1791e214 100644 --- a/test/unit/builtins/array.spec.ts +++ b/test/unit/builtins/array.spec.ts @@ -337,7 +337,9 @@ test.each([ ])("array.splice (%p)", ({ array, start, deleteCount, newElements = [] }) => { util.testFunction` const array = ${util.valueToString(array)}; - array.splice(${util.valuesToString([start, deleteCount, ...newElements])}); + array.splice(${util.valuesToString( + deleteCount ? [start, deleteCount, ...newElements] : [start, ...newElements] + )}); return array; `.expectToMatchJsResult(); }); From bf755d5870da55bea5089fc828fb4126e6f27666 Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Sat, 5 Oct 2019 20:34:34 +0200 Subject: [PATCH 3/5] add default join parameter --- src/LuaTransformer.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/LuaTransformer.ts b/src/LuaTransformer.ts index 43111e5d1..b1c7e259a 100644 --- a/src/LuaTransformer.ts +++ b/src/LuaTransformer.ts @@ -5132,8 +5132,11 @@ export class LuaTransformer { case "splice": return this.transformLuaLibFunction(LuaLibFeature.ArraySplice, node, caller, ...params); case "join": + const colonString = tstl.createStringLiteral(","); const parameters = - node.arguments.length === 0 ? [caller, tstl.createStringLiteral(",")] : [caller].concat(params); + node.arguments.length === 0 + ? [caller, colonString] + : [caller, tstl.createBinaryExpression(params[0], colonString, tstl.SyntaxKind.OrOperator)]; return tstl.createCallExpression( tstl.createTableIndexExpression(tstl.createIdentifier("table"), tstl.createStringLiteral("concat")), From 40f9b3ff41570c08f17b081ea3548528d9164747 Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Wed, 9 Oct 2019 11:52:14 +0200 Subject: [PATCH 4/5] Update src/LuaTransformer.ts Co-Authored-By: ark120202 --- src/LuaTransformer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/LuaTransformer.ts b/src/LuaTransformer.ts index b1c7e259a..f019563d2 100644 --- a/src/LuaTransformer.ts +++ b/src/LuaTransformer.ts @@ -5132,7 +5132,7 @@ export class LuaTransformer { case "splice": return this.transformLuaLibFunction(LuaLibFeature.ArraySplice, node, caller, ...params); case "join": - const colonString = tstl.createStringLiteral(","); + const commaLiteral = tstl.createStringLiteral(","); const parameters = node.arguments.length === 0 ? [caller, colonString] From 3a0d6c36123dbce8226fa84e198791bf02dbddc7 Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Wed, 9 Oct 2019 11:59:47 +0200 Subject: [PATCH 5/5] style changes --- src/LuaTransformer.ts | 4 ++-- test/util.ts | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/LuaTransformer.ts b/src/LuaTransformer.ts index f019563d2..4c51a1649 100644 --- a/src/LuaTransformer.ts +++ b/src/LuaTransformer.ts @@ -5135,8 +5135,8 @@ export class LuaTransformer { const commaLiteral = tstl.createStringLiteral(","); const parameters = node.arguments.length === 0 - ? [caller, colonString] - : [caller, tstl.createBinaryExpression(params[0], colonString, tstl.SyntaxKind.OrOperator)]; + ? [caller, commaLiteral] + : [caller, tstl.createBinaryExpression(params[0], commaLiteral, tstl.SyntaxKind.OrOperator)]; return tstl.createCallExpression( tstl.createTableIndexExpression(tstl.createIdentifier("table"), tstl.createStringLiteral("concat")), diff --git a/test/util.ts b/test/util.ts index b133b0203..cae7809d7 100644 --- a/test/util.ts +++ b/test/util.ts @@ -50,9 +50,11 @@ export function expectToBeDefined(subject: T | null | undefined): subject is } export function valueToString(value: unknown): string { - if (typeof value === "number" && (!Number.isFinite(value) || Number.isNaN(value))) { - return String(value); - } else if (typeof value === "function" || value === undefined) { + if ( + (typeof value === "number" && (!Number.isFinite(value) || Number.isNaN(value))) || + typeof value === "function" || + value === undefined + ) { return String(value); } else { return JSON.stringify(value);