Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 0231754

Browse files
committed
Rearrange TokenCursor::inlined_next().
In particular, avoid wrapping a token within `TokenTree::Token` and then immediately matching it and returning the token within. Just return the token immediately.
1 parent b1e6dee commit 0231754

File tree

1 file changed

+20
-17
lines changed
  • compiler/rustc_parse/src/parser

1 file changed

+20
-17
lines changed

compiler/rustc_parse/src/parser/mod.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -262,29 +262,32 @@ impl TokenCursor {
262262
#[inline(always)]
263263
fn inlined_next(&mut self, desugar_doc_comments: bool) -> (Token, Spacing) {
264264
let (token, spacing) = loop {
265-
let (tree, spacing) = if !self.frame.open_delim {
265+
if !self.frame.open_delim {
266266
self.frame.open_delim = true;
267-
TokenTree::token(token::OpenDelim(self.frame.delim), self.frame.span.open).into()
268-
} else if let Some(tree) = self.frame.tree_cursor.next_with_spacing() {
269-
tree
267+
return (
268+
Token::new(token::OpenDelim(self.frame.delim), self.frame.span.open),
269+
Spacing::Alone,
270+
);
271+
} else if let Some((tree, spacing)) = self.frame.tree_cursor.next_with_spacing() {
272+
match tree {
273+
TokenTree::Token(token) => {
274+
break (token, spacing);
275+
}
276+
TokenTree::Delimited(sp, delim, tts) => {
277+
let frame = TokenCursorFrame::new(sp, delim, tts);
278+
self.stack.push(mem::replace(&mut self.frame, frame));
279+
}
280+
}
270281
} else if !self.frame.close_delim {
271282
self.frame.close_delim = true;
272-
TokenTree::token(token::CloseDelim(self.frame.delim), self.frame.span.close).into()
283+
return (
284+
Token::new(token::CloseDelim(self.frame.delim), self.frame.span.close),
285+
Spacing::Alone,
286+
);
273287
} else if let Some(frame) = self.stack.pop() {
274288
self.frame = frame;
275-
continue;
276289
} else {
277-
(TokenTree::Token(Token::new(token::Eof, DUMMY_SP)), Spacing::Alone)
278-
};
279-
280-
match tree {
281-
TokenTree::Token(token) => {
282-
break (token, spacing);
283-
}
284-
TokenTree::Delimited(sp, delim, tts) => {
285-
let frame = TokenCursorFrame::new(sp, delim, tts);
286-
self.stack.push(mem::replace(&mut self.frame, frame));
287-
}
290+
return (Token::new(token::Eof, DUMMY_SP), Spacing::Alone);
288291
}
289292
};
290293

0 commit comments

Comments
 (0)