fn parse_closure_param_type_or_ellipsis(&mut self) -> S::R {
        let mut parser1 = self.clone();
        let token = parser1.next_token();
        match token.kind() {
            TokenKind::DotDotDot => {
                let missing1 = S!(make_missing, parser1, self.pos());
                let missing2 = S!(make_missing, parser1, self.pos());
                self.continue_from(parser1);
                let token = S!(make_token, self, token);
                S!(make_variadic_parameter, self, missing1, missing2, token)
            }
            _ => {
                let callconv = self.parse_call_convention_opt();
                let ts = self.parse_type_specifier(false);
                let mut parser1 = self.clone();
                let token = parser1.next_token();
                match token.kind() {
                    TokenKind::DotDotDot => {
                        self.continue_from(parser1);
                        let token = S!(make_token, self, token);
                        S!(make_variadic_parameter, self, callconv, ts, token)
                    }
                    _ => S!(make_closure_parameter_type_specifier, self, callconv, ts),
                }
            }
        }
    }
// SPEC
//
// TODO: Add this to the specification.
// (This work is tracked by task T22582676.)
//
// ERROR RECOVERY: Variadic params cannot be declared inout; this error is
// caught in a later pass.
//
// closure-param-type-specifier:
//   call-convention-opt  type-specifier
//   type-specifier  ...
//   ...
SPEC
TODO: Add this to the specification.
(This work is tracked by task T22582676.)

ERROR RECOVERY: Variadic params cannot be declared inout; this error is
caught in a later pass.


SPEC TODO : Add this to the specification . ( This work is tracked by task T22582676 . ) ERROR RECOVERY : Variadic params cannot be declared inout ; this error is caught in a later pass .
fn parse_closure_param_type_or_ellipsis(&mut self) -> S::R {
        let mut parser1 = self.clone();
        let token = parser1.next_token();
        match token.kind() {
            TokenKind::DotDotDot => {
                let missing1 = S!(make_missing, parser1, self.pos());
                let missing2 = S!(make_missing, parser1, self.pos());
                self.continue_from(parser1);
                let token = S!(make_token, self, token);
                S!(make_variadic_parameter, self, missing1, missing2, token)
            }
            _ => {
                let callconv = self.parse_call_convention_opt();
                let ts = self.parse_type_specifier(false);
                let mut parser1 = self.clone();
                let token = parser1.next_token();
                match token.kind() {
                    TokenKind::DotDotDot => {
                        self.continue_from(parser1);
                        let token = S!(make_token, self, token);
                        S!(make_variadic_parameter, self, callconv, ts, token)
                    }
                    _ => S!(make_closure_parameter_type_specifier, self, callconv, ts),
                }
            }
        }
    }
fn parse_closure_param_type_or_ellipsis ( & mut self ) -> S :: R { let mut parser1 = self . clone ( ) ; let token = parser1 . next_token ( ) ; match token . kind ( ) { TokenKind :: DotDotDot => { let missing1 = S ! ( make_missing parser1 self pos ( ) ) ; let missing2 = S ! ( make_missing parser1 self pos ( ) ) ; self . continue_from ( parser1 ) ; let token = S ! ( make_token self token ) ; S ! ( make_variadic_parameter self missing1 missing2 token ) } _ => { let callconv = self . parse_call_convention_opt ( ) ; let ts = self . parse_type_specifier ( false ) ; let mut parser1 = self . clone ( ) ; let token = parser1 . next_token ( ) ; match token . kind ( ) { TokenKind :: DotDotDot => { self . continue_from ( parser1 ) ; let token = S ! ( make_token self token ) ; S ! ( make_variadic_parameter self callconv ts token ) } _ => S ! ( make_closure_parameter_type_specifier self callconv ts ) , } } } }
SPEC
TODO: Add this to the specification.
SPEC TODO : Add this to the specification .
&mut self
&mut self