Add current_def_id_parent to LoweringContext
This is needed to track anon const parents properly once we implement
`ConstArgKind::Path` (which requires moving anon const def-creation
outside of `DefCollector`):
Why do we need this in addition to [`Self::current_hir_id_owner`]?
Currently (as of June 2024), anonymous constants are not HIR owners;
however, they do get their own DefIds. Some of these DefIds have to be
created during AST lowering, rather than def collection, because we
can't tell until after name resolution whether an anonymous constant
will end up instead being a [`rustc_hir::ConstArgKind::Path`]. However,
to compute which generics are available to an anonymous constant nested
inside another, we need to make sure that the parent is recorded as the
parent anon const, not the enclosing item. So we need to track parent
defs differently from HIR owners, since they will be finer-grained in
the case of anon consts.
This commit is contained in:
@@ -222,10 +222,10 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||
};
|
||||
|
||||
// Wrap the expression in an AnonConst.
|
||||
let parent_def_id = self.current_hir_id_owner;
|
||||
let parent_def_id = self.current_def_id_parent;
|
||||
let node_id = self.next_node_id();
|
||||
self.create_def(
|
||||
parent_def_id.def_id,
|
||||
parent_def_id,
|
||||
node_id,
|
||||
kw::Empty,
|
||||
DefKind::AnonConst,
|
||||
|
||||
Reference in New Issue
Block a user