summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Herron <herron.philip@googlemail.com>2023-04-17 21:50:54 +0100
committerPhilip Herron <philip.herron@embecosm.com>2023-04-26 15:02:40 +0000
commitaa67a856e7ed69d595f7cd8dc7a747ec69db6712 (patch)
tree3ad4d7d0667cb66d21f5d098cc49898327197bc3
parentb0f0ed0097416c249c453e0208179f3c438ab685 (diff)
downloadgcc-aa67a856e7ed69d595f7cd8dc7a747ec69db6712.tar.gz
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 <herron.philip@googlemail.com>
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check.h2
-rw-r--r--gcc/rust/typecheck/rust-typecheck-context.cc18
2 files changed, 20 insertions, 0 deletions
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<TyTy::FnType *> (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