diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-07-15 11:12:57 +0100 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2021-07-15 11:12:57 +0100 |
commit | 73ac7c5a1eca2db1c95ae5b7c3ee9f206ce9aa9d (patch) | |
tree | e63029333495f98b880706aa96cb6d4ca3ec5ce5 | |
parent | 089e62f33c328afea756ec4b92f5823584b08a3a (diff) | |
download | gcc-73ac7c5a1eca2db1c95ae5b7c3ee9f206ce9aa9d.zip gcc-73ac7c5a1eca2db1c95ae5b7c3ee9f206ce9aa9d.tar.gz gcc-73ac7c5a1eca2db1c95ae5b7c3ee9f206ce9aa9d.tar.bz2 |
Impl items should have a DefID
This adds DefId mappings for impl items, this is a building block where
the TyTy::FnType will include the DefId of the respective function, which
will simplify the backend a bit in relation to optional trait functions
with a body.
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-implitem.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/rust/hir/rust-ast-lower-implitem.h b/gcc/rust/hir/rust-ast-lower-implitem.h index b08a166..9fa65a5 100644 --- a/gcc/rust/hir/rust-ast-lower-implitem.h +++ b/gcc/rust/hir/rust-ast-lower-implitem.h @@ -70,13 +70,14 @@ public: mappings->get_next_hir_id (crate_num), mappings->get_next_localdef_id (crate_num)); - translated = new HIR::TypeAlias (mapping, alias.get_new_type_name (), - std::move (generic_params), - std::move (where_clause), - std::unique_ptr<HIR::Type> (existing_type), - std::move (vis), alias.get_outer_attrs (), - alias.get_locus ()); + auto type_alias = new HIR::TypeAlias ( + mapping, alias.get_new_type_name (), std::move (generic_params), + std::move (where_clause), std::unique_ptr<HIR::Type> (existing_type), + std::move (vis), alias.get_outer_attrs (), alias.get_locus ()); + translated = type_alias; + + mappings->insert_defid_mapping (mapping.get_defid (), type_alias); mappings->insert_hir_implitem (mapping.get_crate_num (), mapping.get_hirid (), parent_impl_id, translated); @@ -104,6 +105,7 @@ public: constant.get_locus ()); translated = translated_constant; + mappings->insert_defid_mapping (mapping.get_defid (), translated_constant); mappings->insert_hir_implitem (mapping.get_crate_num (), mapping.get_hirid (), parent_impl_id, translated); @@ -177,6 +179,7 @@ public: std::move (vis), function.get_outer_attrs (), HIR::SelfParam::error (), locus); + mappings->insert_defid_mapping (mapping.get_defid (), fn); mappings->insert_hir_implitem (mapping.get_crate_num (), mapping.get_hirid (), parent_impl_id, fn); mappings->insert_location (crate_num, mapping.get_hirid (), @@ -257,6 +260,7 @@ public: std::move (vis), method.get_outer_attrs (), std::move (self_param), locus); + mappings->insert_defid_mapping (mapping.get_defid (), mth); mappings->insert_hir_implitem (mapping.get_crate_num (), mapping.get_hirid (), parent_impl_id, mth); mappings->insert_location (crate_num, mapping.get_hirid (), |