1
Fork 0

refactor: use by-ref TokenTree iterator to avoid a few clones

This commit is contained in:
Caleb Cartwright 2023-05-11 21:51:41 -05:00
parent 5b24e12785
commit 05c5df5682
3 changed files with 6 additions and 6 deletions

View file

@ -19,7 +19,7 @@ pub fn expand_concat_idents<'cx>(
} }
let mut res_str = String::new(); let mut res_str = String::new();
for (i, e) in tts.into_trees().enumerate() { for (i, e) in tts.trees().enumerate() {
if i & 1 == 1 { if i & 1 == 1 {
match e { match e {
TokenTree::Token(Token { kind: token::Comma, .. }, _) => {} TokenTree::Token(Token { kind: token::Comma, .. }, _) => {}

View file

@ -8,7 +8,7 @@ pub fn expand_trace_macros(
sp: Span, sp: Span,
tt: TokenStream, tt: TokenStream,
) -> Box<dyn base::MacResult + 'static> { ) -> Box<dyn base::MacResult + 'static> {
let mut cursor = tt.into_trees(); let mut cursor = tt.trees();
let mut err = false; let mut err = false;
let value = match &cursor.next() { let value = match &cursor.next() {
Some(TokenTree::Token(token, _)) if token.is_keyword(kw::True) => true, Some(TokenTree::Token(token, _)) if token.is_keyword(kw::True) => true,

View file

@ -1882,8 +1882,8 @@ declare_lint_pass!(
struct UnderMacro(bool); struct UnderMacro(bool);
impl KeywordIdents { impl KeywordIdents {
fn check_tokens(&mut self, cx: &EarlyContext<'_>, tokens: TokenStream) { fn check_tokens(&mut self, cx: &EarlyContext<'_>, tokens: &TokenStream) {
for tt in tokens.into_trees() { for tt in tokens.trees() {
match tt { match tt {
// Only report non-raw idents. // Only report non-raw idents.
TokenTree::Token(token, _) => { TokenTree::Token(token, _) => {
@ -1944,10 +1944,10 @@ impl KeywordIdents {
impl EarlyLintPass for KeywordIdents { impl EarlyLintPass for KeywordIdents {
fn check_mac_def(&mut self, cx: &EarlyContext<'_>, mac_def: &ast::MacroDef) { fn check_mac_def(&mut self, cx: &EarlyContext<'_>, mac_def: &ast::MacroDef) {
self.check_tokens(cx, mac_def.body.tokens.clone()); self.check_tokens(cx, &mac_def.body.tokens);
} }
fn check_mac(&mut self, cx: &EarlyContext<'_>, mac: &ast::MacCall) { fn check_mac(&mut self, cx: &EarlyContext<'_>, mac: &ast::MacCall) {
self.check_tokens(cx, mac.args.tokens.clone()); self.check_tokens(cx, &mac.args.tokens);
} }
fn check_ident(&mut self, cx: &EarlyContext<'_>, ident: Ident) { fn check_ident(&mut self, cx: &EarlyContext<'_>, ident: Ident) {
self.check_ident_token(cx, UnderMacro(false), ident); self.check_ident_token(cx, UnderMacro(false), ident);