// In the case of attributes on generics, one could write
// function f<<<__Attr>> reify T, ...>
// The triple left angle is currently lexed as a HeredocStringLiteral,
// but we can get around this by manually advancing the lexer one token
// and returning a LeftAngle. Then, the next token will be a LeftAngleLeftAngle
In the case of attributes on generics, one could write
function f<<<__Attr>> reify T, ...>
The triple left angle is currently lexed as a HeredocStringLiteral,
but we can get around this by manually advancing the lexer one token
and returning a LeftAngle. Then, the next token will be a LeftAngleLeftAngle
In the case of attributes on generics one could write function f<<<__Attr >> reify T ... > The triple left angle is currently lexed as a HeredocStringLiteral but we can get around this by manually advancing the lexer one token and returning a LeftAngle . Then the next token will be a LeftAngleLeftAngle
fn assert_left_angle_in_type_param_list_with_possible_attribute(&mut self) -> S::R {
        let parser1 = self.clone();
        let lexer = self.lexer_mut();
        let tparam_open = lexer.peek_char(0);
        let attr1 = lexer.peek_char(1);
        let attr2 = lexer.peek_char(2);
        if tparam_open == '<' && attr1 == '<' && attr2 == '<' {
            lexer.advance(1);
            let token = S::Token::make(TokenKind::LessThan, lexer.start(), 1, vec![], vec![]);
            S!(make_token, self, token)
        } else {
            self.continue_from(parser1);
            self.assert_token(TokenKind::LessThan)
        }
    }
fn assert_left_angle_in_type_param_list_with_possible_attribute ( & mut self ) -> S :: R { let parser1 = self . clone ( ) ; let lexer = self . lexer_mut ( ) ; let tparam_open = lexer . peek_char ( 0 ) ; let attr1 = lexer . peek_char ( 1 ) ; let attr2 = lexer . peek_char ( 2 ) ; if tparam_open == '<' && attr1 == '<' && attr2 == '<' { lexer . advance ( 1 ) ; let token = S :: Token :: make ( TokenKind :: LessThan , lexer . start ( ) , 1 , vec ! [ ] , vec ! [ ] ) ; S ! ( make_token self token ) } else { self . continue_from ( parser1 ) ; self . assert_token ( TokenKind :: LessThan ) } }
In the case of attributes on generics, one could write
function f<<<__Attr>> reify T, ...>
The triple left angle is currently lexed as a HeredocStringLiteral,
but we can get around this by manually advancing the lexer one token
and returning a LeftAngle.
In the case of attributes on generics one could write function f<<<__Attr >> reify T ... > The triple left angle is currently lexed as a HeredocStringLiteral but we can get around this by manually advancing the lexer one token and returning a LeftAngle .
&mut self