Skip to content

Commit 2c811ea

Browse files
committed
moved isSimpleExpression to tsHelper
1 parent 5ba6436 commit 2c811ea

2 files changed

Lines changed: 38 additions & 38 deletions

File tree

src/LuaPrinter.ts

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -709,47 +709,10 @@ export class LuaPrinter {
709709
return result;
710710
}
711711

712-
protected isSimpleExpression(expression: tstl.Expression): boolean {
713-
switch (expression.kind) {
714-
case tstl.SyntaxKind.CallExpression:
715-
case tstl.SyntaxKind.MethodCallExpression:
716-
case tstl.SyntaxKind.FunctionExpression:
717-
return false;
718-
719-
case tstl.SyntaxKind.TableExpression:
720-
const tableExpression = expression as tstl.TableExpression;
721-
return !tableExpression.fields || tableExpression.fields.every(e => this.isSimpleExpression(e));
722-
723-
case tstl.SyntaxKind.TableFieldExpression:
724-
const fieldExpression = expression as tstl.TableFieldExpression;
725-
return (
726-
(!fieldExpression.key || this.isSimpleExpression(fieldExpression.key)) &&
727-
this.isSimpleExpression(fieldExpression.value)
728-
);
729-
730-
case tstl.SyntaxKind.TableIndexExpression:
731-
const indexExpression = expression as tstl.TableIndexExpression;
732-
return this.isSimpleExpression(indexExpression.table) && this.isSimpleExpression(indexExpression.index);
733-
734-
case tstl.SyntaxKind.UnaryExpression:
735-
return this.isSimpleExpression((expression as tstl.UnaryExpression).operand);
736-
737-
case tstl.SyntaxKind.BinaryExpression:
738-
const binaryExpression = expression as tstl.BinaryExpression;
739-
return (
740-
this.isSimpleExpression(binaryExpression.left) && this.isSimpleExpression(binaryExpression.right)
741-
);
742-
743-
case tstl.SyntaxKind.ParenthesizedExpression:
744-
return this.isSimpleExpression((expression as tstl.ParenthesizedExpression).innerExpression);
745-
}
746-
return true;
747-
}
748-
749712
protected printExpressionList(expressions: tstl.Expression[]): SourceChunk[] {
750713
const chunks: SourceChunk[] = [];
751714

752-
if (expressions.every(e => this.isSimpleExpression(e))) {
715+
if (expressions.every(e => tsHelper.isSimpleExpression(e))) {
753716
chunks.push(...this.joinChunks(", ", expressions.map(e => this.printExpression(e))));
754717
} else {
755718
chunks.push("\n");

src/TSHelper.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as ts from "typescript";
22
import { Decorator, DecoratorKind } from "./Decorator";
3+
import * as tstl from "./LuaAST";
34

45
export enum ContextType {
56
None,
@@ -835,3 +836,39 @@ export function isArrayLengthAssignment(
835836

836837
return name === "length";
837838
}
839+
840+
// Returns true if expression contains no function calls
841+
export function isSimpleExpression(expression: tstl.Expression): boolean {
842+
switch (expression.kind) {
843+
case tstl.SyntaxKind.CallExpression:
844+
case tstl.SyntaxKind.MethodCallExpression:
845+
case tstl.SyntaxKind.FunctionExpression:
846+
return false;
847+
848+
case tstl.SyntaxKind.TableExpression:
849+
const tableExpression = expression as tstl.TableExpression;
850+
return !tableExpression.fields || tableExpression.fields.every(e => isSimpleExpression(e));
851+
852+
case tstl.SyntaxKind.TableFieldExpression:
853+
const fieldExpression = expression as tstl.TableFieldExpression;
854+
return (
855+
(!fieldExpression.key || isSimpleExpression(fieldExpression.key)) &&
856+
isSimpleExpression(fieldExpression.value)
857+
);
858+
859+
case tstl.SyntaxKind.TableIndexExpression:
860+
const indexExpression = expression as tstl.TableIndexExpression;
861+
return isSimpleExpression(indexExpression.table) && isSimpleExpression(indexExpression.index);
862+
863+
case tstl.SyntaxKind.UnaryExpression:
864+
return isSimpleExpression((expression as tstl.UnaryExpression).operand);
865+
866+
case tstl.SyntaxKind.BinaryExpression:
867+
const binaryExpression = expression as tstl.BinaryExpression;
868+
return isSimpleExpression(binaryExpression.left) && isSimpleExpression(binaryExpression.right);
869+
870+
case tstl.SyntaxKind.ParenthesizedExpression:
871+
return isSimpleExpression((expression as tstl.ParenthesizedExpression).innerExpression);
872+
}
873+
return true;
874+
}

0 commit comments

Comments
 (0)