@@ -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
0 commit comments