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.
This commit is contained in:
parent
b1e6dee596
commit
02317542eb
1 changed files with 20 additions and 17 deletions
|
@ -262,21 +262,13 @@ impl TokenCursor {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn inlined_next(&mut self, desugar_doc_comments: bool) -> (Token, Spacing) {
|
fn inlined_next(&mut self, desugar_doc_comments: bool) -> (Token, Spacing) {
|
||||||
let (token, spacing) = loop {
|
let (token, spacing) = loop {
|
||||||
let (tree, spacing) = if !self.frame.open_delim {
|
if !self.frame.open_delim {
|
||||||
self.frame.open_delim = true;
|
self.frame.open_delim = true;
|
||||||
TokenTree::token(token::OpenDelim(self.frame.delim), self.frame.span.open).into()
|
return (
|
||||||
} else if let Some(tree) = self.frame.tree_cursor.next_with_spacing() {
|
Token::new(token::OpenDelim(self.frame.delim), self.frame.span.open),
|
||||||
tree
|
Spacing::Alone,
|
||||||
} else if !self.frame.close_delim {
|
);
|
||||||
self.frame.close_delim = true;
|
} else if let Some((tree, spacing)) = self.frame.tree_cursor.next_with_spacing() {
|
||||||
TokenTree::token(token::CloseDelim(self.frame.delim), self.frame.span.close).into()
|
|
||||||
} else if let Some(frame) = self.stack.pop() {
|
|
||||||
self.frame = frame;
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
(TokenTree::Token(Token::new(token::Eof, DUMMY_SP)), Spacing::Alone)
|
|
||||||
};
|
|
||||||
|
|
||||||
match tree {
|
match tree {
|
||||||
TokenTree::Token(token) => {
|
TokenTree::Token(token) => {
|
||||||
break (token, spacing);
|
break (token, spacing);
|
||||||
|
@ -286,6 +278,17 @@ impl TokenCursor {
|
||||||
self.stack.push(mem::replace(&mut self.frame, frame));
|
self.stack.push(mem::replace(&mut self.frame, frame));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if !self.frame.close_delim {
|
||||||
|
self.frame.close_delim = true;
|
||||||
|
return (
|
||||||
|
Token::new(token::CloseDelim(self.frame.delim), self.frame.span.close),
|
||||||
|
Spacing::Alone,
|
||||||
|
);
|
||||||
|
} else if let Some(frame) = self.stack.pop() {
|
||||||
|
self.frame = frame;
|
||||||
|
} else {
|
||||||
|
return (Token::new(token::Eof, DUMMY_SP), Spacing::Alone);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
match (desugar_doc_comments, &token) {
|
match (desugar_doc_comments, &token) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue