diff --git a/src/LuaTransformer.ts b/src/LuaTransformer.ts index 8ddaa24d3..4d43d0348 100644 --- a/src/LuaTransformer.ts +++ b/src/LuaTransformer.ts @@ -3971,10 +3971,6 @@ export class LuaTransformer { ); } else { const parameters = this.transformArguments(node.arguments, signature); - let table = this.transformExpression(node.expression.expression); - if (tstl.isTableExpression(table)) { - table = tstl.createParenthesizedExpression(table); - } const signatureDeclaration = signature && signature.getDeclaration(); if ( !signatureDeclaration || @@ -3983,6 +3979,11 @@ export class LuaTransformer { // table:name() return this.transformContextualCallExpression(node, parameters); } else { + let table = this.transformExpression(node.expression.expression); + if (tstl.isTableExpression(table)) { + table = tstl.createParenthesizedExpression(table); + } + // table.name() const callPath = tstl.createTableIndexExpression( table, @@ -4024,7 +4025,6 @@ export class LuaTransformer { transformedArguments: tstl.Expression[] ): ExpressionVisitResult { const left = ts.isCallExpression(node) ? node.expression : node.tag; - const leftHandSideExpression = this.transformExpression(left); if ( ts.isPropertyAccessExpression(left) && !luaKeywords.has(left.name.text) && @@ -4064,7 +4064,8 @@ export class LuaTransformer { } else if (ts.isIdentifier(left)) { const context = this.isStrict ? tstl.createNilLiteral() : tstl.createIdentifier("_G"); transformedArguments.unshift(context); - return tstl.createCallExpression(leftHandSideExpression, transformedArguments, node); + const expression = this.transformExpression(left); + return tstl.createCallExpression(expression, transformedArguments, node); } else { throw TSTLErrors.UnsupportedKind("Left Hand Side Call Expression", left.kind, left); }