diff options
| author | Aleksey Kladov <aleksey.kladov@gmail.com> | 2020-09-03 23:26:59 +0200 |
|---|---|---|
| committer | Aleksey Kladov <aleksey.kladov@gmail.com> | 2020-09-03 23:28:22 +0200 |
| commit | 09d3db2e590030de8ae7d00589f8a174e5f51f03 (patch) | |
| tree | cc54fc9fa0bf826c873c3fb060069fd45cfeb58e /compiler/rustc_parse/src | |
| parent | 850c3219fb8659608eb62cd43eaee29e9e354379 (diff) | |
| download | rust-09d3db2e590030de8ae7d00589f8a174e5f51f03.tar.gz rust-09d3db2e590030de8ae7d00589f8a174e5f51f03.zip | |
Optimize Cursor::look_ahead
Cloning a tt is cheap, but not free (there's Arc inside).
Diffstat (limited to 'compiler/rustc_parse/src')
| -rw-r--r-- | compiler/rustc_parse/src/parser/mod.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 84edfecad19..1b2067f8f25 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -822,15 +822,15 @@ impl<'a> Parser<'a> { } let frame = &self.token_cursor.frame; - looker(&match frame.tree_cursor.look_ahead(dist - 1) { + match frame.tree_cursor.look_ahead(dist - 1) { Some(tree) => match tree { - TokenTree::Token(token) => token, + TokenTree::Token(token) => looker(token), TokenTree::Delimited(dspan, delim, _) => { - Token::new(token::OpenDelim(delim), dspan.open) + looker(&Token::new(token::OpenDelim(delim.clone()), dspan.open)) } }, - None => Token::new(token::CloseDelim(frame.delim), frame.span.close), - }) + None => looker(&Token::new(token::CloseDelim(frame.delim), frame.span.close)), + } } /// Returns whether any of the given keywords are `dist` tokens ahead of the current one. |
