https://gcc.gnu.org/g:d9a02b1f6164428772a2eb8612cffb2eff9829d7

commit r15-8742-gd9a02b1f6164428772a2eb8612cffb2eff9829d7
Author: Arthur Cohen <arthur.co...@embecosm.com>
Date:   Mon Dec 23 16:43:35 2024 +0000

    gccrs: lang-items: Add LangItem::IsEnumVariant
    
    gcc/rust/ChangeLog:
    
            * util/rust-lang-item.cc (LangItem::IsEnumVariant): New function.
            * util/rust-lang-item.h: Declare it.

Diff:
---
 gcc/rust/util/rust-lang-item.cc | 9 +++++++++
 gcc/rust/util/rust-lang-item.h  | 5 ++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/util/rust-lang-item.cc b/gcc/rust/util/rust-lang-item.cc
index ac90f979e834..b37a237c24e6 100644
--- a/gcc/rust/util/rust-lang-item.cc
+++ b/gcc/rust/util/rust-lang-item.cc
@@ -248,4 +248,13 @@ LangItem::NegationOperatorToLangItem (NegationOperator op)
   rust_unreachable ();
 }
 
+bool
+LangItem::IsEnumVariant (LangItem::Kind type)
+{
+  const static std::set<LangItem::Kind> enum_variants
+    = {Kind::OPTION_NONE, Kind::OPTION_SOME, Kind::RESULT_OK, 
Kind::RESULT_ERR};
+
+  return enum_variants.find (type) != enum_variants.end ();
+}
+
 } // namespace Rust
diff --git a/gcc/rust/util/rust-lang-item.h b/gcc/rust/util/rust-lang-item.h
index ad081a7d3fb7..851909d409c0 100644
--- a/gcc/rust/util/rust-lang-item.h
+++ b/gcc/rust/util/rust-lang-item.h
@@ -146,15 +146,18 @@ public:
   static const BiMap<std::string, Kind> lang_items;
 
   static tl::optional<Kind> Parse (const std::string &item);
+
   static std::string ToString (Kind type);
   static std::string PrettyString (Kind type);
+
   static Kind OperatorToLangItem (ArithmeticOrLogicalOperator op);
   static Kind
   CompoundAssignmentOperatorToLangItem (ArithmeticOrLogicalOperator op);
   static Kind NegationOperatorToLangItem (NegationOperator op);
   static Kind ComparisonToLangItem (ComparisonOperator op);
-
   static std::string ComparisonToSegment (ComparisonOperator op);
+
+  static bool IsEnumVariant (Kind type);
 };
 
 } // namespace Rust

Reply via email to