summary refs log tree commit diff
path: root/compiler/rustc_ast_lowering/src
diff options
context:
space:
mode:
authorBryanskiy <ivakin.kir@gmail.com>2024-06-10 21:21:46 +0300
committerBryanskiy <ivakin.kir@gmail.com>2024-06-10 21:27:25 +0300
commit6f78e6265a6b43ea53abf048efa688fa0cdb33d9 (patch)
treed1cc0f1301365e147670e4d8a63ff4b52703911c /compiler/rustc_ast_lowering/src
parent06194cadcd0948a7100b46737f61e82b8c00d632 (diff)
downloadrust-6f78e6265a6b43ea53abf048efa688fa0cdb33d9.tar.gz
rust-6f78e6265a6b43ea53abf048efa688fa0cdb33d9.zip
Delegation: fix ICE on recursive delegation
Diffstat (limited to 'compiler/rustc_ast_lowering/src')
-rw-r--r--compiler/rustc_ast_lowering/src/delegation.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_ast_lowering/src/delegation.rs b/compiler/rustc_ast_lowering/src/delegation.rs
index 27f8a6eae02..d9dd0b3bca5 100644
--- a/compiler/rustc_ast_lowering/src/delegation.rs
+++ b/compiler/rustc_ast_lowering/src/delegation.rs
@@ -67,7 +67,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
             return false;
         };
         if let Some(local_sig_id) = sig_id.as_local() {
-            self.resolver.delegation_fn_sigs[&local_sig_id].has_self
+            // The value may be missing due to recursive delegation.
+            // Error will be emmited later during HIR ty lowering.
+            self.resolver.delegation_fn_sigs.get(&local_sig_id).map_or(false, |sig| sig.has_self)
         } else {
             match self.tcx.def_kind(sig_id) {
                 DefKind::Fn => false,