@@ -608,8 +608,12 @@ module ts {
608608 return node . kind === SyntaxKind . ImportDeclaration && ( < ImportDeclaration > node ) . moduleReference . kind !== SyntaxKind . ExternalModuleReference ;
609609 }
610610
611+ export function hasDotDotDotToken ( node : Node ) {
612+ return node && node . kind === SyntaxKind . Parameter && ( < ParameterDeclaration > node ) . dotDotDotToken !== undefined ;
613+ }
614+
611615 export function hasRestParameters ( s : SignatureDeclaration ) : boolean {
612- return s . parameters . length > 0 && ( s . parameters [ s . parameters . length - 1 ] . flags & NodeFlags . Rest ) !== 0 ;
616+ return s . parameters . length > 0 && s . parameters [ s . parameters . length - 1 ] . dotDotDotToken !== undefined ;
613617 }
614618
615619 export function isLiteralKind ( kind : SyntaxKind ) : boolean {
@@ -1812,11 +1816,8 @@ module ts {
18121816
18131817 function parseParameter ( ) : ParameterDeclaration {
18141818 var node = < ParameterDeclaration > createNode ( SyntaxKind . Parameter ) ;
1815- var modifiers = parseModifiers ( ) ;
1816- setModifiers ( node , modifiers ) ;
1817- if ( parseOptional ( SyntaxKind . DotDotDotToken ) ) {
1818- node . flags |= NodeFlags . Rest ;
1819- }
1819+ setModifiers ( node , parseModifiers ( ) ) ;
1820+ node . dotDotDotToken = token === SyntaxKind . DotDotDotToken ? parseTokenNode ( ) : undefined ;
18201821
18211822 // SingleNameBinding[Yield,GeneratorParameter] : See 13.2.3
18221823 // [+GeneratorParameter]BindingIdentifier[Yield]Initializer[In]opt
@@ -4803,7 +4804,7 @@ module ts {
48034804 return grammarErrorOnNode ( node , Diagnostics . An_index_signature_must_have_exactly_one_parameter ) ;
48044805 }
48054806 }
4806- else if ( parameter . flags & NodeFlags . Rest ) {
4807+ else if ( parameter . dotDotDotToken ) {
48074808 return grammarErrorOnNode ( parameter . name , Diagnostics . An_index_signature_cannot_have_a_rest_parameter ) ;
48084809 }
48094810 else if ( parameter . flags & NodeFlags . Modifier ) {
@@ -5160,7 +5161,7 @@ module ts {
51605161
51615162 for ( var i = 0 ; i < parameterCount ; i ++ ) {
51625163 var parameter = parameters [ i ] ;
5163- if ( parameter . flags & NodeFlags . Rest ) {
5164+ if ( parameter . dotDotDotToken ) {
51645165 if ( i !== ( parameterCount - 1 ) ) {
51655166 return grammarErrorOnNode ( parameter . name , Diagnostics . A_rest_parameter_must_be_last_in_a_parameter_list ) ;
51665167 }
@@ -5298,7 +5299,7 @@ module ts {
52985299 }
52995300 else {
53005301 var parameter = accessor . parameters [ 0 ] ;
5301- if ( parameter . flags & NodeFlags . Rest ) {
5302+ if ( parameter . dotDotDotToken ) {
53025303 return grammarErrorOnNode ( accessor . name , Diagnostics . A_set_accessor_cannot_have_rest_parameter ) ;
53035304 }
53045305 else if ( parameter . flags & NodeFlags . Modifier ) {
0 commit comments