Accept arbitrary expressions in key-value attributes at parse time
This commit is contained in:
parent
fa55f668e5
commit
31d72c2658
24 changed files with 145 additions and 210 deletions
|
@ -24,7 +24,7 @@ pub use UnsafeSource::*;
|
|||
|
||||
use crate::ptr::P;
|
||||
use crate::token::{self, CommentKind, DelimToken};
|
||||
use crate::tokenstream::{DelimSpan, LazyTokenStream, TokenStream, TokenTree};
|
||||
use crate::tokenstream::{DelimSpan, LazyTokenStream, TokenStream};
|
||||
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||
|
@ -39,7 +39,6 @@ use rustc_span::{Span, DUMMY_SP};
|
|||
use std::cmp::Ordering;
|
||||
use std::convert::TryFrom;
|
||||
use std::fmt;
|
||||
use std::iter;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
@ -1514,20 +1513,6 @@ impl MacArgs {
|
|||
}
|
||||
}
|
||||
|
||||
/// Tokens together with the delimiters or `=`.
|
||||
/// Use of this method generally means that something suboptimal or hacky is happening.
|
||||
pub fn outer_tokens(&self) -> TokenStream {
|
||||
match *self {
|
||||
MacArgs::Empty => TokenStream::default(),
|
||||
MacArgs::Delimited(dspan, delim, ref tokens) => {
|
||||
TokenTree::Delimited(dspan, delim.to_token(), tokens.clone()).into()
|
||||
}
|
||||
MacArgs::Eq(eq_span, ref tokens) => {
|
||||
iter::once(TokenTree::token(token::Eq, eq_span)).chain(tokens.trees()).collect()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether a macro with these arguments needs a semicolon
|
||||
/// when used as a standalone item or statement.
|
||||
pub fn need_semicolon(&self) -> bool {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue