// 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 {
        match self.peek_token_kind() {
            TokenKind::DotDotDot => {
                let missing1 = S!(make_missing, self, self.pos());
                let missing2 = S!(make_missing, self, self.pos());
                let token = self.next_token();
                let token = S!(make_token, self, token);
                S!(make_variadic_parameter, self, missing1, missing2, token)
            }
            _ => {
                let callconv = self.parse_call_convention_opt();
                let readonly = self.parse_readonly_opt();
                let ts = self.parse_type_specifier(false, true);
                match self.peek_token_kind() {
                    TokenKind::DotDotDot => {
                        let token = self.next_token();
                        let token = S!(make_token, self, token);
                        S!(make_variadic_parameter, self, callconv, ts, token)
                    }
                    _ => S!(
                        make_closure_parameter_type_specifier,
                        self,
                        callconv,
                        readonly,
                        ts
                    ),
                }
            }
        }
    }
fn parse_closure_param_type_or_ellipsis ( & mut self ) -> S :: R { match self . peek_token_kind ( ) { TokenKind :: DotDotDot => { let missing1 = S ! ( make_missing self self pos ( ) ) ; let missing2 = S ! ( make_missing self self pos ( ) ) ; let token = self . next_token ( ) ; let token = S ! ( make_token self token ) ; S ! ( make_variadic_parameter self missing1 missing2 token ) } _ => { let callconv = self . parse_call_convention_opt ( ) ; let readonly = self . parse_readonly_opt ( ) ; let ts = self . parse_type_specifier ( false , true ) ; match self . peek_token_kind ( ) { TokenKind :: DotDotDot => { let token = self . next_token ( ) ; let token = S ! ( make_token self token ) ; S ! ( make_variadic_parameter self callconv ts token ) } _ => S ! ( make_closure_parameter_type_specifier self callconv readonly ts ) , } } } }
SPEC
TODO: Add this to the specification.
SPEC TODO : Add this to the specification .
&mut self