Skip to content

Commit 7c38093

Browse files
authored
Rollup merge of rust-lang#95188 - c410-f3r:aqui-vamos-nos, r=petrochenkov
[`macro-metavar-expr`] Fix generated tokens hygiene Only uses `Marker` on generated tokens -> rust-lang#83527 (comment)) I really don't know how to test this PR r? `@petrochenkov`
2 parents 3ea4493 + 74e7313 commit 7c38093

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

compiler/rustc_expand/src/mbe/transcribe.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ pub(super) fn transcribe<'a>(
257257

258258
// Replace meta-variable expressions with the result of their expansion.
259259
mbe::TokenTree::MetaVarExpr(sp, expr) => {
260-
transcribe_metavar_expr(cx, expr, interp, &repeats, &mut result, &sp)?;
260+
transcribe_metavar_expr(cx, expr, interp, &mut marker, &repeats, &mut result, &sp)?;
261261
}
262262

263263
// If we are entering a new delimiter, we push its contents to the `stack` to be
@@ -513,17 +513,23 @@ fn transcribe_metavar_expr<'a>(
513513
cx: &ExtCtxt<'a>,
514514
expr: MetaVarExpr,
515515
interp: &FxHashMap<MacroRulesNormalizedIdent, NamedMatch>,
516+
marker: &mut Marker,
516517
repeats: &[(usize, usize)],
517518
result: &mut Vec<TreeAndSpacing>,
518519
sp: &DelimSpan,
519520
) -> PResult<'a, ()> {
521+
let mut visited_span = || {
522+
let mut span = sp.entire();
523+
marker.visit_span(&mut span);
524+
span
525+
};
520526
match expr {
521527
MetaVarExpr::Count(original_ident, depth_opt) => {
522528
let matched = matched_from_ident(cx, original_ident, interp)?;
523529
let count = count_repetitions(cx, depth_opt, matched, &repeats, sp)?;
524530
let tt = TokenTree::token(
525531
TokenKind::lit(token::Integer, sym::integer(count), None),
526-
sp.entire(),
532+
visited_span(),
527533
);
528534
result.push(tt.into());
529535
}
@@ -536,7 +542,7 @@ fn transcribe_metavar_expr<'a>(
536542
result.push(
537543
TokenTree::token(
538544
TokenKind::lit(token::Integer, sym::integer(*index), None),
539-
sp.entire(),
545+
visited_span(),
540546
)
541547
.into(),
542548
);
@@ -548,7 +554,7 @@ fn transcribe_metavar_expr<'a>(
548554
result.push(
549555
TokenTree::token(
550556
TokenKind::lit(token::Integer, sym::integer(*length), None),
551-
sp.entire(),
557+
visited_span(),
552558
)
553559
.into(),
554560
);

0 commit comments

Comments
 (0)