From 0db1c804562aff23344cd5882db6fc65596e0966 Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Fri, 30 Jul 2021 17:29:04 +0100 Subject: Add missing mappings required for type resolution Add Trait item mappings for trait resolving purposes. This allows us to lookup the trait with a trait item belongs to and vice versa. --- gcc/rust/util/rust-hir-map.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'gcc/rust/util/rust-hir-map.h') diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index 7e5449c..ccc873b 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -148,6 +148,14 @@ public: void insert_hir_expr (CrateNum crateNum, HirId id, HIR::Expr *expr); HIR::Expr *lookup_hir_expr (CrateNum crateNum, HirId id); + void insert_hir_path_expr_seg (CrateNum crateNum, HirId id, + HIR::PathExprSegment *expr); + HIR::PathExprSegment *lookup_hir_path_expr_seg (CrateNum crateNum, HirId id); + + void insert_hir_generic_param (CrateNum crateNum, HirId id, + HIR::GenericParam *expr); + HIR::GenericParam *lookup_hir_generic_param (CrateNum crateNum, HirId id); + void insert_hir_type (CrateNum crateNum, HirId id, HIR::Type *type); HIR::Type *lookup_hir_type (CrateNum crateNum, HirId id); @@ -215,6 +223,20 @@ public: != nullptr; } + void insert_trait_item_mapping (HirId trait_item_id, HIR::Trait *trait) + { + rust_assert (hirTraitItemsToTraitMappings.find (trait_item_id) + == hirTraitItemsToTraitMappings.end ()); + hirTraitItemsToTraitMappings[trait_item_id] = trait; + } + + HIR::Trait *lookup_trait_item_mapping (HirId trait_item_id) + { + auto lookup = hirTraitItemsToTraitMappings.find (trait_item_id); + rust_assert (lookup != hirTraitItemsToTraitMappings.end ()); + return lookup->second; + } + private: Mappings (); @@ -245,6 +267,11 @@ private: std::map > hirTraitItemMappings; std::map > hirExternItemMappings; + std::map > + hirPathSegMappings; + std::map > + hirGenericParamMappings; + std::map hirTraitItemsToTraitMappings; // location info std::map > locations; -- cgit v1.1