Remove ast::Token::take
.
Instead of replacing `TokenTreesReader::token` in two steps, we can just do it in one, which is both simpler and faster.
This commit is contained in:
parent
5b2075e03d
commit
33ba2776c9
2 changed files with 2 additions and 8 deletions
|
@ -13,7 +13,7 @@ use rustc_span::symbol::{kw, sym};
|
||||||
use rustc_span::symbol::{Ident, Symbol};
|
use rustc_span::symbol::{Ident, Symbol};
|
||||||
use rustc_span::{self, edition::Edition, Span, DUMMY_SP};
|
use rustc_span::{self, edition::Edition, Span, DUMMY_SP};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::{fmt, mem};
|
use std::fmt;
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
|
#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
|
||||||
pub enum CommentKind {
|
pub enum CommentKind {
|
||||||
|
@ -335,11 +335,6 @@ impl Token {
|
||||||
Token::new(Ident(ident.name, ident.is_raw_guess()), ident.span)
|
Token::new(Ident(ident.name, ident.is_raw_guess()), ident.span)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return this token by value and leave a dummy token in its place.
|
|
||||||
pub fn take(&mut self) -> Self {
|
|
||||||
mem::replace(self, Token::dummy())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// For interpolated tokens, returns a span of the fragment to which the interpolated
|
/// For interpolated tokens, returns a span of the fragment to which the interpolated
|
||||||
/// token refers. For all other tokens this is just a regular span.
|
/// token refers. For all other tokens this is just a regular span.
|
||||||
/// It is particularly important to use this for identifiers and lifetimes
|
/// It is particularly important to use this for identifiers and lifetimes
|
||||||
|
|
|
@ -247,14 +247,13 @@ impl<'a> TokenTreesReader<'a> {
|
||||||
fn parse_token_tree_other(&mut self) -> TokenTree {
|
fn parse_token_tree_other(&mut self) -> TokenTree {
|
||||||
// `spacing` for the returned token is determined by the next token:
|
// `spacing` for the returned token is determined by the next token:
|
||||||
// its kind and its `preceded_by_whitespace` status.
|
// its kind and its `preceded_by_whitespace` status.
|
||||||
let this_tok = self.token.take();
|
|
||||||
let (next_tok, is_next_tok_preceded_by_whitespace) = self.string_reader.next_token();
|
let (next_tok, is_next_tok_preceded_by_whitespace) = self.string_reader.next_token();
|
||||||
let this_spacing = if is_next_tok_preceded_by_whitespace || !next_tok.is_op() {
|
let this_spacing = if is_next_tok_preceded_by_whitespace || !next_tok.is_op() {
|
||||||
Spacing::Alone
|
Spacing::Alone
|
||||||
} else {
|
} else {
|
||||||
Spacing::Joint
|
Spacing::Joint
|
||||||
};
|
};
|
||||||
self.token = next_tok;
|
let this_tok = std::mem::replace(&mut self.token, next_tok);
|
||||||
TokenTree::Token(this_tok, this_spacing)
|
TokenTree::Token(this_tok, this_spacing)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue