@@ -701,6 +701,7 @@ namespace ts {
701701 return updateParameter ( < ParameterDeclaration > node ,
702702 visitNodes ( ( < ParameterDeclaration > node ) . decorators , visitor , isDecorator ) ,
703703 visitNodes ( ( < ParameterDeclaration > node ) . modifiers , visitor , isModifier ) ,
704+ ( < ParameterDeclaration > node ) . dotDotDotToken ,
704705 visitNode ( ( < ParameterDeclaration > node ) . name , visitor , isBindingName ) ,
705706 visitNode ( ( < ParameterDeclaration > node ) . type , visitor , isTypeNode , /*optional*/ true ) ,
706707 visitNode ( ( < ParameterDeclaration > node ) . initializer , visitor , isExpression , /*optional*/ true ) ) ;
@@ -767,6 +768,7 @@ namespace ts {
767768
768769 case SyntaxKind . BindingElement :
769770 return updateBindingElement ( < BindingElement > node ,
771+ ( < BindingElement > node ) . dotDotDotToken ,
770772 visitNode ( ( < BindingElement > node ) . propertyName , visitor , isPropertyName , /*optional*/ true ) ,
771773 visitNode ( ( < BindingElement > node ) . name , visitor , isBindingName ) ,
772774 visitNode ( ( < BindingElement > node ) . initializer , visitor , isExpression , /*optional*/ true ) ) ;
@@ -1287,13 +1289,41 @@ namespace ts {
12871289 ? ( node : Node , message ?: string ) => assert ( false , message || "Unexpected node." , ( ) => `Node ${ formatSyntaxKind ( node . kind ) } was unexpected.` )
12881290 : noop ;
12891291
1292+ export const assertEachNode = shouldAssert ( AssertionLevel . Normal )
1293+ ? ( nodes : Node [ ] , test : ( node : Node ) => boolean , message ?: string ) => assert (
1294+ test === undefined || every ( nodes , test ) ,
1295+ message || "Unexpected node." ,
1296+ ( ) => `Node array did not pass test '${ getFunctionName ( test ) } '.` )
1297+ : noop ;
1298+
12901299 export const assertNode = shouldAssert ( AssertionLevel . Normal )
12911300 ? ( node : Node , test : ( node : Node ) => boolean , message ?: string ) => assert (
12921301 test === undefined || test ( node ) ,
12931302 message || "Unexpected node." ,
12941303 ( ) => `Node ${ formatSyntaxKind ( node . kind ) } did not pass test '${ getFunctionName ( test ) } '.` )
12951304 : noop ;
12961305
1306+ export const assertOptionalNode = shouldAssert ( AssertionLevel . Normal )
1307+ ? ( node : Node , test : ( node : Node ) => boolean , message ?: string ) => assert (
1308+ test === undefined || node === undefined || test ( node ) ,
1309+ message || "Unexpected node." ,
1310+ ( ) => `Node ${ formatSyntaxKind ( node . kind ) } did not pass test '${ getFunctionName ( test ) } '.` )
1311+ : noop ;
1312+
1313+ export const assertOptionalToken = shouldAssert ( AssertionLevel . Normal )
1314+ ? ( node : Node , kind : SyntaxKind , message ?: string ) => assert (
1315+ kind === undefined || node === undefined || node . kind === kind ,
1316+ message || "Unexpected node." ,
1317+ ( ) => `Node ${ formatSyntaxKind ( node . kind ) } was not a '${ formatSyntaxKind ( kind ) } ' token.` )
1318+ : noop ;
1319+
1320+ export const assertMissingNode = shouldAssert ( AssertionLevel . Normal )
1321+ ? ( node : Node , message ?: string ) => assert (
1322+ node === undefined ,
1323+ message || "Unexpected node." ,
1324+ ( ) => `Node ${ formatSyntaxKind ( node . kind ) } was unexpected'.` )
1325+ : noop ;
1326+
12971327 function getFunctionName ( func : Function ) {
12981328 if ( typeof func !== "function" ) {
12991329 return "" ;
0 commit comments