Skip to content

Commit c6d67f8

Browse files
committed
Add fast path when None delimiters are not involved
1 parent eb7b1a1 commit c6d67f8

File tree

1 file changed

+19
-0
lines changed
  • compiler/rustc_parse/src/parser

1 file changed

+19
-0
lines changed

compiler/rustc_parse/src/parser/mod.rs

+19
Original file line numberDiff line numberDiff line change
@@ -929,6 +929,25 @@ impl<'a> Parser<'a> {
929929
return looker(&self.token);
930930
}
931931

932+
let frame = &self.token_cursor.frame;
933+
if frame.delim != DelimToken::NoDelim {
934+
let all_normal = (0..dist).all(|i| {
935+
let token = frame.tree_cursor.look_ahead(i);
936+
!matches!(token, Some(TokenTree::Delimited(_, DelimToken::NoDelim, _)))
937+
});
938+
if all_normal {
939+
return match frame.tree_cursor.look_ahead(dist - 1) {
940+
Some(tree) => match tree {
941+
TokenTree::Token(token) => looker(token),
942+
TokenTree::Delimited(dspan, delim, _) => {
943+
looker(&Token::new(token::OpenDelim(*delim), dspan.open))
944+
}
945+
},
946+
None => looker(&Token::new(token::CloseDelim(frame.delim), frame.span.close)),
947+
};
948+
}
949+
}
950+
932951
let mut cursor = self.token_cursor.clone();
933952
let mut i = 0;
934953
let mut token = Token::dummy();

0 commit comments

Comments
 (0)