From 3a2e7c9ddbe6ea4137ab04ecb176a8fb70d339fe Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 15 Oct 2018 14:49:48 -0600 Subject: [PATCH 1/2] allowing all strings to be thrown, not just literals; also fixed formatting --- src/Transpiler.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Transpiler.ts b/src/Transpiler.ts index ccafbaf81..a06dd5046 100644 --- a/src/Transpiler.ts +++ b/src/Transpiler.ts @@ -294,7 +294,7 @@ export abstract class LuaTranspiler { case ts.SyntaxKind.TryStatement: return this.transpileTry(node as ts.TryStatement); case ts.SyntaxKind.ThrowStatement: - return this.transpileThrow(node as ts.ThrowStatement); + return this.indent + this.transpileThrow(node as ts.ThrowStatement) + "\n"; case ts.SyntaxKind.ContinueStatement: return this.transpileContinue(node as ts.ContinueStatement); case ts.SyntaxKind.TypeAliasDeclaration: @@ -683,8 +683,9 @@ export abstract class LuaTranspiler { } public transpileThrow(node: ts.ThrowStatement): string { - if (ts.isStringLiteral(node.expression)) { - return `error("${node.expression.text}")`; + const type = this.checker.getTypeAtLocation(node.expression); + if (tsHelper.isStringType(type)) { + return `error(${this.transpileExpression(node.expression)})`; } else { throw TSTLErrors.InvalidThrowExpression(node.expression); } From 30e958386f4ea7cb1b99c07713a48218ba88fca3 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 16 Oct 2018 06:26:15 -0600 Subject: [PATCH 2/2] added semi-colon to throw --- src/Transpiler.ts | 2 +- test/unit/error.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Transpiler.ts b/src/Transpiler.ts index a06dd5046..1bfb9d093 100644 --- a/src/Transpiler.ts +++ b/src/Transpiler.ts @@ -294,7 +294,7 @@ export abstract class LuaTranspiler { case ts.SyntaxKind.TryStatement: return this.transpileTry(node as ts.TryStatement); case ts.SyntaxKind.ThrowStatement: - return this.indent + this.transpileThrow(node as ts.ThrowStatement) + "\n"; + return this.indent + this.transpileThrow(node as ts.ThrowStatement) + ";\n"; case ts.SyntaxKind.ContinueStatement: return this.transpileContinue(node as ts.ContinueStatement); case ts.SyntaxKind.TypeAliasDeclaration: diff --git a/test/unit/error.spec.ts b/test/unit/error.spec.ts index 50709601c..f3f737a09 100644 --- a/test/unit/error.spec.ts +++ b/test/unit/error.spec.ts @@ -12,7 +12,7 @@ export class LuaErrorTests { `throw "Some Error"` ); // Assert - Expect(lua).toBe(`error("Some Error")`); + Expect(lua).toBe(`error("Some Error");`); } @Test("throwError")