about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHoLLy <dario.db@hotmail.com>2023-12-31 12:51:43 +0100
committerHoLLy <dario.db@hotmail.com>2023-12-31 12:51:43 +0100
commitc13330971d08fbab855ad51ff691979012af8b82 (patch)
treeba106a64b4a625121375cbae9b44b34466e82fe7
parente872f5085cf5b0e44558442365c1c033d486eff2 (diff)
downloadrust-c13330971d08fbab855ad51ff691979012af8b82.tar.gz
rust-c13330971d08fbab855ad51ff691979012af8b82.zip
Fix out-of-bounds panic in some macros due to unhandled self_ref
-rw-r--r--crates/hir-expand/src/hygiene.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/crates/hir-expand/src/hygiene.rs b/crates/hir-expand/src/hygiene.rs
index 1c84103c7f6..6f3b19c5686 100644
--- a/crates/hir-expand/src/hygiene.rs
+++ b/crates/hir-expand/src/hygiene.rs
@@ -153,7 +153,7 @@ fn apply_mark_internal(
     let mut opaque_and_semitransparent = syntax_context_data.opaque_and_semitransparent;
 
     if transparency >= Transparency::Opaque {
-        let parent = opaque;
+        let parent = handle_self_ref(ctxt, opaque);
         let new_opaque = SyntaxContextId::SELF_REF;
         // But we can't just grab the to be allocated ID either as that would not deduplicate
         // things!
@@ -168,7 +168,7 @@ fn apply_mark_internal(
     }
 
     if transparency >= Transparency::SemiTransparent {
-        let parent = opaque_and_semitransparent;
+        let parent = handle_self_ref(ctxt, opaque_and_semitransparent);
         let new_opaque_and_semitransparent = SyntaxContextId::SELF_REF;
         opaque_and_semitransparent = db.intern_syntax_context(SyntaxContextData {
             outer_expn: call_id,