Skip to content

Commit 3add462

Browse files
committed
Initial instance methods and field layout; More cleanup
1 parent 2888ba1 commit 3add462

29 files changed

+2195
-621
lines changed

examples/pson/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ To build [assembly/pson.ts](./assembly/pson.ts) to an untouched and an optimized
1212
$> npm run build
1313
```
1414

15-
Afterwards, to run the included test, do:
15+
Afterwards, to run the included [test](./tests/index.js):
1616

1717
```
18+
$> npm install
1819
$> npm test
1920
```

src/ast.ts

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,13 @@ export abstract class Node {
152152
return expr;
153153
}
154154

155-
static createCall(expression: Expression, typeArguments: TypeNode[], args: Expression[], range: Range): CallExpression {
155+
static createCall(expression: Expression, typeArguments: TypeNode[] | null, args: Expression[], range: Range): CallExpression {
156156
var expr = new CallExpression();
157157
expr.range = range;
158158
(expr.expression = expression).parent = expr;
159-
for (var i = 0, k = (expr.typeArguments = typeArguments).length; i < k; ++i)
160-
typeArguments[i].parent = expr;
159+
if (expr.typeArguments = typeArguments)
160+
for (var i = 0, k = (<TypeNode[]>typeArguments).length; i < k; ++i)
161+
(<TypeNode[]>typeArguments)[i].parent = expr;
161162
for (i = 0, k = (expr.arguments = args).length; i < k; ++i)
162163
args[i].parent = expr;
163164
return expr;
@@ -197,12 +198,13 @@ export abstract class Node {
197198
return expr;
198199
}
199200

200-
static createNew(expression: Expression, typeArguments: TypeNode[], args: Expression[], range: Range): NewExpression {
201+
static createNew(expression: Expression, typeArguments: TypeNode[] | null, args: Expression[], range: Range): NewExpression {
201202
var expr = new NewExpression();
202203
expr.range = range;
203204
(expr.expression = expression).parent = expr;
204-
for (var i = 0, k = (expr.typeArguments = typeArguments).length; i < k; ++i)
205-
typeArguments[i].parent = expr;
205+
if (expr.typeArguments = typeArguments)
206+
for (var i = 0, k = (<TypeNode[]>typeArguments).length; i < k; ++i)
207+
(<TypeNode[]>typeArguments)[i].parent = expr;
206208
for (i = 0, k = (expr.arguments = args).length; i < k; ++i)
207209
args[i].parent = expr;
208210
return expr;
@@ -333,12 +335,13 @@ export abstract class Node {
333335
return stmt;
334336
}
335337

336-
static createDecorator(expression: Expression, args: Expression[], range: Range): Decorator {
338+
static createDecorator(expression: Expression, args: Expression[] | null, range: Range): Decorator {
337339
var stmt = new Decorator();
338340
stmt.range = range;
339341
(stmt.name = expression).parent = stmt;
340-
for (var i: i32 = 0, k: i32 = (stmt.arguments = args).length; i < k; ++i)
341-
args[i].parent = stmt;
342+
if (stmt.arguments = args)
343+
for (var i: i32 = 0, k: i32 = (<Expression[]>args).length; i < k; ++i)
344+
(<Expression[]>args)[i].parent = stmt;
342345
return stmt;
343346
}
344347

@@ -857,14 +860,14 @@ export class CallExpression extends Expression {
857860
/** Called expression. Usually an identifier or property access expression. */
858861
expression: Expression;
859862
/** Provided type arguments. */
860-
typeArguments: TypeNode[];
863+
typeArguments: TypeNode[] | null;
861864
/** Provided arguments. */
862865
arguments: Expression[];
863866

864867
serialize(sb: string[]): void {
865868
this.expression.serialize(sb);
866-
var k = this.typeArguments.length;
867-
if (k) {
869+
var k: i32;
870+
if (this.typeArguments && (k = this.typeArguments.length)) {
868871
sb.push("<");
869872
for (var i = 0; i < k; ++i) {
870873
if (i > 0)
@@ -1311,18 +1314,20 @@ export class Decorator extends Statement {
13111314
/** Name expression. */
13121315
name: Expression;
13131316
/** Argument expressions. */
1314-
arguments: Expression[];
1317+
arguments: Expression[] | null;
13151318

13161319
serialize(sb: string[]): void {
13171320
sb.push("@");
13181321
this.name.serialize(sb);
1319-
sb.push("(");
1320-
for (var i = 0, k = this.arguments.length; i < k; ++i) {
1321-
if (i > 0)
1322-
sb.push(", ");
1323-
this.arguments[i].serialize(sb);
1322+
if (this.arguments) {
1323+
sb.push("(");
1324+
for (var i = 0, k = this.arguments.length; i < k; ++i) {
1325+
if (i > 0)
1326+
sb.push(", ");
1327+
this.arguments[i].serialize(sb);
1328+
}
1329+
sb.push(")");
13241330
}
1325-
sb.push(")");
13261331
}
13271332
}
13281333

src/builtins.ts

Lines changed: 114 additions & 112 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)