Closed
Description
Both definitions and HIR owners are represented by a LocalDefId,
but they don't have the same semantics.
HIR owners are the owner
field of a HirId
,
and the argument passed to the hir_owner*
queries.
HIR owners contain the following HIR nodes: Item, TraitItem, ImplItem, ForeignItem, MacroDef,
and GenericParam
s which come from impl Trait
desugaring.
LocalDefId enumerate definitions in the local crate.
Definitions are a broader concept than HIR owners.
For instance, closures are definitions but not HIR owners.
On the other hand, all HIR owners are definitions.
We need to introduce a new type HirOwner
type (name to bikeshed),
whose usage will be the following:
HirOwner
is defined asstruct HirOwner { def_id: LocalDefId }
;HirId
becomes{ owner: HirOwner, local_id: ItemLocalId }
;- Item, TraitItem, ImplItem, ForeignItem, MacroDef have a
HirOwner
as theirdef_id
field; hir_owner*
queries take aHirOwner
as argument;- the passage between
HirOwner
andLocalDefId
happens through
thelocal_def_id_to_hir_id: LocalDefId -> HirId
andlocal_def_id: HirId -> LocalDefId
methods.
I am available on Zulip for further information.
Metadata
Metadata
Assignees
Labels
Area: The high-level intermediate representation (HIR)Call for participation: Help is requested to fix this issue.Call for participation: Medium difficulty. Experience needed to fix: Intermediate.Call for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.Relevant to the compiler team, which will review and decide on the PR/issue.