expand: Tweak a comment in implementation of macro_rules
This commit is contained in:
parent
3478d7c360
commit
7652bc3f68
@ -232,17 +232,19 @@ pub(super) fn transcribe<'a>(
|
||||
// the meta-var.
|
||||
let ident = MacroRulesNormalizedIdent::new(orignal_ident);
|
||||
if let Some(cur_matched) = lookup_cur_matched(ident, interp, &repeats) {
|
||||
if let MatchedNonterminal(ref nt) = cur_matched {
|
||||
// FIXME #2887: why do we apply a mark when matching a token tree meta-var
|
||||
// (e.g. `$x:tt`), but not when we are matching any other type of token
|
||||
// tree?
|
||||
if let NtTT(ref tt) = **nt {
|
||||
result.push(tt.clone().into());
|
||||
if let MatchedNonterminal(nt) = cur_matched {
|
||||
let token = if let NtTT(tt) = &**nt {
|
||||
// `tt`s are emitted into the output stream directly as "raw tokens",
|
||||
// without wrapping them into groups.
|
||||
tt.clone()
|
||||
} else {
|
||||
// Other variables are emitted into the output stream as groups with
|
||||
// `Delimiter::None` to maintain parsing priorities.
|
||||
// `Interpolated` is currenty used for such groups in rustc parser.
|
||||
marker.visit_span(&mut sp);
|
||||
let token = TokenTree::token(token::Interpolated(nt.clone()), sp);
|
||||
TokenTree::token(token::Interpolated(nt.clone()), sp)
|
||||
};
|
||||
result.push(token.into());
|
||||
}
|
||||
} else {
|
||||
// We were unable to descend far enough. This is an error.
|
||||
return Err(cx.struct_span_err(
|
||||
|
Loading…
Reference in New Issue
Block a user