parser: Cleanup LazyTokenStream
and avoid some clones
by using a named struct instead of a closure.
This commit is contained in:
parent
ffe52882ed
commit
d0c63bccc5
4 changed files with 77 additions and 87 deletions
|
@ -4,12 +4,11 @@ use rustc_ast::attr::HasAttrs;
|
|||
use rustc_ast::mut_visit::*;
|
||||
use rustc_ast::ptr::P;
|
||||
use rustc_ast::token::{DelimToken, Token, TokenKind};
|
||||
use rustc_ast::tokenstream::{DelimSpan, LazyTokenStreamInner, Spacing, TokenStream, TokenTree};
|
||||
use rustc_ast::tokenstream::{DelimSpan, LazyTokenStream, Spacing, TokenStream, TokenTree};
|
||||
use rustc_ast::{self as ast, AttrItem, Attribute, MetaItem};
|
||||
use rustc_attr as attr;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_data_structures::map_in_place::MapInPlace;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_errors::{error_code, struct_span_err, Applicability, Handler};
|
||||
use rustc_feature::{Feature, Features, State as FeatureState};
|
||||
use rustc_feature::{
|
||||
|
@ -303,7 +302,7 @@ impl<'a> StripUnconfigured<'a> {
|
|||
|
||||
// Use the `#` in `#[cfg_attr(pred, attr)]` as the `#` token
|
||||
// for `attr` when we expand it to `#[attr]`
|
||||
let pound_token = orig_tokens.into_token_stream().trees().next().unwrap();
|
||||
let pound_token = orig_tokens.create_token_stream().trees().next().unwrap();
|
||||
if !matches!(pound_token, TokenTree::Token(Token { kind: TokenKind::Pound, .. })) {
|
||||
panic!("Bad tokens for attribute {:?}", attr);
|
||||
}
|
||||
|
@ -313,16 +312,16 @@ impl<'a> StripUnconfigured<'a> {
|
|||
DelimSpan::from_single(pound_token.span()),
|
||||
DelimToken::Bracket,
|
||||
item.tokens
|
||||
.clone()
|
||||
.as_ref()
|
||||
.unwrap_or_else(|| panic!("Missing tokens for {:?}", item))
|
||||
.into_token_stream(),
|
||||
.create_token_stream(),
|
||||
);
|
||||
|
||||
let mut attr = attr::mk_attr_from_item(attr.style, item, span);
|
||||
attr.tokens = Some(Lrc::new(LazyTokenStreamInner::Ready(TokenStream::new(vec![
|
||||
attr.tokens = Some(LazyTokenStream::new(TokenStream::new(vec![
|
||||
(pound_token, Spacing::Alone),
|
||||
(bracket_group, Spacing::Alone),
|
||||
]))));
|
||||
])));
|
||||
self.process_cfg_attr(attr)
|
||||
})
|
||||
.collect()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue