From aa67a856e7ed69d595f7cd8dc7a747ec69db6712 Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Mon, 17 Apr 2023 21:50:54 +0100 Subject: gccrs: Add get_defid helper to TypeCheckContextItem gcc/rust/ChangeLog: * typecheck/rust-hir-type-check.h: Add prototype * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_defid): implementation Signed-off-by: Philip Herron --- gcc/rust/typecheck/rust-hir-type-check.h | 2 ++ gcc/rust/typecheck/rust-typecheck-context.cc | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/rust/typecheck/rust-hir-type-check.h b/gcc/rust/typecheck/rust-hir-type-check.h index ec63657aaa6..538dcaefc12 100644 --- a/gcc/rust/typecheck/rust-hir-type-check.h +++ b/gcc/rust/typecheck/rust-hir-type-check.h @@ -51,6 +51,8 @@ public: TyTy::FnType *get_context_type (); + DefId get_defid () const; + private: union Item { diff --git a/gcc/rust/typecheck/rust-typecheck-context.cc b/gcc/rust/typecheck/rust-typecheck-context.cc index 7a40fc8313b..c041b153b4e 100644 --- a/gcc/rust/typecheck/rust-typecheck-context.cc +++ b/gcc/rust/typecheck/rust-typecheck-context.cc @@ -576,5 +576,23 @@ TypeCheckContextItem::get_context_type () return static_cast (lookup); } +DefId +TypeCheckContextItem::get_defid () const +{ + switch (get_type ()) + { + case ITEM: + return item.item->get_mappings ().get_defid (); + + case IMPL_ITEM: + return item.impl_item.second->get_mappings ().get_defid (); + + case TRAIT_ITEM: + return item.trait_item->get_mappings ().get_defid (); + } + + return UNKNOWN_DEFID; +} + } // namespace Resolver } // namespace Rust -- cgit v1.2.1