Skip to content

Commit 09b4c7c

Browse files
committed
rustc_ast: Support MacArgs::inner_tokens for arbitrary expressions
1 parent 8e8fb4f commit 09b4c7c

File tree

1 file changed

+3
-16
lines changed

1 file changed

+3
-16
lines changed

compiler/rustc_ast/src/ast.rs

+3-16
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ pub use GenericArgs::*;
2323
pub use UnsafeSource::*;
2424

2525
use crate::ptr::P;
26-
use crate::token::{self, CommentKind, Delimiter, Token, TokenKind};
27-
use crate::tokenstream::{DelimSpan, LazyTokenStream, TokenStream, TokenTree};
26+
use crate::token::{self, CommentKind, Delimiter};
27+
use crate::tokenstream::{DelimSpan, LazyTokenStream, TokenStream};
2828

2929
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
3030
use rustc_data_structures::stack::ensure_sufficient_stack;
@@ -1570,20 +1570,7 @@ impl MacArgs {
15701570
match self {
15711571
MacArgs::Empty => TokenStream::default(),
15721572
MacArgs::Delimited(.., tokens) => tokens.clone(),
1573-
MacArgs::Eq(_, MacArgsEq::Ast(expr)) => {
1574-
// Currently only literals are allowed here. If more complex expression kinds are
1575-
// allowed in the future, then `nt_to_tokenstream` should be used to extract the
1576-
// token stream. This will require some cleverness, perhaps with a function
1577-
// pointer, because `nt_to_tokenstream` is not directly usable from this crate.
1578-
// It will also require changing the `parse_expr` call in `parse_mac_args_common`
1579-
// to `parse_expr_force_collect`.
1580-
if let ExprKind::Lit(lit) = &expr.kind {
1581-
let token = Token::new(TokenKind::Literal(lit.token), lit.span);
1582-
TokenTree::Token(token).into()
1583-
} else {
1584-
unreachable!("couldn't extract literal when getting inner tokens: {:?}", expr)
1585-
}
1586-
}
1573+
MacArgs::Eq(_, MacArgsEq::Ast(expr)) => TokenStream::from_ast(expr),
15871574
MacArgs::Eq(_, MacArgsEq::Hir(lit)) => {
15881575
unreachable!("in literal form when getting inner tokens: {:?}", lit)
15891576
}

0 commit comments

Comments
 (0)