Skip to content

Commit 59419c9

Browse files
committed
Fixed many minor misstakes
1 parent 862c1f8 commit 59419c9

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

src/LuaAST.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ export enum SyntaxKind {
4040
Identifier,
4141
TableIndexExpression,
4242
// Operators
43+
AssignmentOperator, // TODO maybe remove this once we figure out the correct way to transform a assignment in a binary expression
44+
// or maybe move change Assignment statement to contain a binaryExpression with an AssignmentOperator somehow?
4345
// Arithmetic
4446
AdditionOperator, // Maybe use abreviations for those add, sub, mul ...
4547
SubractionOperator,
@@ -80,6 +82,7 @@ export type UnaryOperator = SyntaxKind.NegationOperator | SyntaxKind.LengthOpera
8082
SyntaxKind.NotOperator | SyntaxKind.BitwiseNotOperator;
8183

8284
export type BinaryOperator =
85+
SyntaxKind.AssignmentOperator | // TODO @see above
8386
// Arithmetic
8487
SyntaxKind.AdditionOperator | SyntaxKind.SubractionOperator | SyntaxKind.MultiplicationOperator |
8588
SyntaxKind.DivisionOperator | SyntaxKind.FloorDivisionOperator |
@@ -204,7 +207,7 @@ export function createVariableDeclarationStatement(
204207
setParent(right, statement);
205208
if (Array.isArray(right)) {
206209
statement.right = right;
207-
} else {
210+
} else if (right) {
208211
statement.right = [right];
209212
}
210213
return statement;

src/LuaPrinter.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export class LuaPrinter {
44

55
/* tslint:disable:object-literal-sort-keys */
66
private static operatorMap: {[key in tstl.Operator]: string} = {
7+
[tstl.SyntaxKind.AssignmentOperator]: "=",
78
[tstl.SyntaxKind.AdditionOperator]: "+",
89
[tstl.SyntaxKind.SubractionOperator]: "-",
910
[tstl.SyntaxKind.MultiplicationOperator]: "*",
@@ -55,7 +56,7 @@ export class LuaPrinter {
5556
}
5657

5758
private printBlock(block: tstl.Block): string {
58-
return block.statements.map(s => this.printStatement(s)).join();
59+
return block.statements.map(s => this.printStatement(s)).join("");
5960
}
6061

6162
private printStatement(statement: tstl.Statement): string {
@@ -92,7 +93,7 @@ export class LuaPrinter {
9293
private printDoStatement(statement: tstl.DoStatement): string {
9394
let result = this.indent("do\n");
9495
this.pushIndent();
95-
result += statement.statements.map(s => this.printStatement(s)).join();
96+
result += statement.statements.map(s => this.printStatement(s)).join("");
9697
this.popIndent();
9798
result += this.indent("end\n");
9899

@@ -296,7 +297,11 @@ export class LuaPrinter {
296297
}
297298

298299
private printTableExpression(expression: tstl.TableExpression): string {
299-
return `{${expression.fields.map(f => this.printTableFieldExpression(f)).join(", ")}}`;
300+
let fields = "";
301+
if (expression.fields) {
302+
fields = expression.fields.map(f => this.printTableFieldExpression(f)).join(", ");
303+
}
304+
return `{${fields}}`;
300305
}
301306

302307
private printUnaryExpression(expression: tstl.UnaryExpression): string {
@@ -316,7 +321,7 @@ export class LuaPrinter {
316321

317322
private printCallExpression(expression: tstl.CallExpression): string {
318323
const params = expression.params.map(e => this.printExpression(e)).join(", ");
319-
return `${this.printExpression(expression.expression)}(${params}))`;
324+
return `${this.printExpression(expression.expression)}(${params})`;
320325
}
321326

322327
private printMethodCallExpression(expression: tstl.MethodCallExpression): string {

src/LuaTransformer.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ export class LuaTransformer {
326326
if (!isExtension && !isMetaExtension) {
327327
const classCreationMethods =
328328
this.createClassCreationMethods(statement, className, instanceFields, extendsType);
329-
result.concat(classCreationMethods);
329+
result.push(...classCreationMethods);
330330
} else {
331331
for (const f of instanceFields) {
332332
// Get identifier
@@ -587,15 +587,15 @@ export class LuaTransformer {
587587
const [params, dotsLiteral, restParamName] =
588588
this.transformParameters(statement.parameters, this.selfIdentifier);
589589

590-
bodyStatements.concat(this.transformFunctionBody(statement.parameters, statement.body, restParamName));
590+
bodyStatements.push(...this.transformFunctionBody(statement.parameters, statement.body, restParamName));
591591

592592
const body: tstl.Block = tstl.createBlock(bodyStatements);
593593

594594
const result =
595595
tstl.createVariableAssignmentStatement(
596596
tstl.createTableIndexExpression(
597-
this.selfIdentifier,
598-
className
597+
className,
598+
tstl.createIdentifier("constructor")
599599
),
600600
tstl.createFunctionExpression(
601601
body,
@@ -1091,6 +1091,8 @@ export class LuaTransformer {
10911091

10921092
public transformBinaryExpression(expression: ts.BinaryExpression): ExpressionVisitResult {
10931093
// Check if this is an assignment token, then handle accordingly
1094+
1095+
// TODO NYI @tomb
10941096
/*const [isAssignment, operator] = tsHelper.isBinaryAssignmentToken(expression.operatorToken.kind);
10951097
if (isAssignment) {
10961098
return this.transpileAssignmentExpression(
@@ -1150,12 +1152,8 @@ export class LuaTransformer {
11501152
case ts.SyntaxKind.LessThanEqualsToken:
11511153
return tstl.createBinaryExpression(lhs, rhs, tstl.SyntaxKind.LessEqualOperator);
11521154
case ts.SyntaxKind.EqualsToken:
1153-
const assignment = tstl.createVariableAssignmentStatement(
1154-
lhs as tstl.IdentifierOrTableIndexExpression,
1155-
rhs
1156-
);
1157-
const returnStatement = tstl.createReturnStatement([this.transformExpression(expression.right)]);
1158-
return tstl.createFunctionExpression(tstl.createBlock([assignment, returnStatement]));
1155+
// TODO rework this @see tstl.SyntaxKind.AssignmentOperator declaration
1156+
return tstl.createBinaryExpression(lhs, rhs, tstl.SyntaxKind.AssignmentOperator);
11591157
case ts.SyntaxKind.EqualsEqualsToken:
11601158
case ts.SyntaxKind.EqualsEqualsEqualsToken:
11611159
return tstl.createBinaryExpression(lhs, rhs, tstl.SyntaxKind.EqualityOperator);

test/unit/class.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Expect, Test, TestCase } from "alsatian";
1+
import { Expect, Test } from "alsatian";
22

33
import * as ts from "typescript";
44
import * as util from "../src/util";
@@ -34,7 +34,6 @@ export class ClassTests {
3434
}
3535
return new a(4).field;`
3636
);
37-
3837
// Execute
3938
const result = util.executeLua(lua);
4039

0 commit comments

Comments
 (0)