aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-07-15 11:12:57 +0100
committerPhilip Herron <philip.herron@embecosm.com>2021-07-15 11:12:57 +0100
commit73ac7c5a1eca2db1c95ae5b7c3ee9f206ce9aa9d (patch)
treee63029333495f98b880706aa96cb6d4ca3ec5ce5
parent089e62f33c328afea756ec4b92f5823584b08a3a (diff)
downloadgcc-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.h16
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 (),