From 797e68f240731cd805c553d34f79d39d1a36454c Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Mon, 20 Apr 2026 14:45:04 +0200 Subject: [PATCH] Move variant ctor creation into the brg --- compiler/rustc_resolve/src/build_reduced_graph.rs | 8 +++++++- compiler/rustc_resolve/src/def_collector.rs | 14 ++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 4a7237ba192b..64e959265a15 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -1504,7 +1504,13 @@ pub(crate) fn brg_visit_variant(&mut self, variant: &'a ast::Variant) { }; // Define a constructor name in the value namespace. - if let Some(ctor_node_id) = variant.data.ctor_node_id() { + if let Some((ctor_kind, ctor_node_id)) = CtorKind::from_ast(&variant.data) { + self.create_def( + ctor_node_id, + None, + DefKind::Ctor(CtorOf::Variant, ctor_kind), + variant.span, + ); let feed = self.r.feed(ctor_node_id); let ctor_def_id = feed.key(); let ctor_res = self.res(ctor_def_id); diff --git a/compiler/rustc_resolve/src/def_collector.rs b/compiler/rustc_resolve/src/def_collector.rs index 982e92a0c149..f050bc059782 100644 --- a/compiler/rustc_resolve/src/def_collector.rs +++ b/compiler/rustc_resolve/src/def_collector.rs @@ -7,8 +7,8 @@ use rustc_expand::expand::AstFragment; use rustc_hir as hir; use rustc_hir::Target; +use rustc_hir::def::DefKind; use rustc_hir::def::Namespace::{TypeNS, ValueNS}; -use rustc_hir::def::{CtorKind, CtorOf, DefKind}; use rustc_hir::def_id::LocalDefId; use rustc_middle::span_bug; use rustc_span::{Span, Symbol, sym}; @@ -295,17 +295,7 @@ fn visit_variant(&mut self, v: &'a Variant) { return; } let def = self.create_def(v.id, Some(v.ident.name), DefKind::Variant, v.span); - self.with_parent(def, |this| { - if let Some((ctor_kind, ctor_node_id)) = CtorKind::from_ast(&v.data) { - this.create_def( - ctor_node_id, - None, - DefKind::Ctor(CtorOf::Variant, ctor_kind), - v.span, - ); - } - this.brg_visit_variant(v); - }); + self.with_parent(def, |this| this.brg_visit_variant(v)); } fn visit_where_predicate(&mut self, pred: &'a WherePredicate) {