From: Philip Herron <herron.phi...@googlemail.com>

gcc/rust/ChangeLog:

        * typecheck/rust-tyty-subst.cc: track the const generic
        * typecheck/rust-tyty.cc (ConstType::is_equal): finish the is_equal

Signed-off-by: Philip Herron <herron.phi...@googlemail.com>
---
 gcc/rust/typecheck/rust-tyty-subst.cc |  7 +++++--
 gcc/rust/typecheck/rust-tyty.cc       | 10 ++++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/gcc/rust/typecheck/rust-tyty-subst.cc 
b/gcc/rust/typecheck/rust-tyty-subst.cc
index 45c8cd638eb..64791097b18 100644
--- a/gcc/rust/typecheck/rust-tyty-subst.cc
+++ b/gcc/rust/typecheck/rust-tyty-subst.cc
@@ -163,8 +163,11 @@ SubstitutionParamMapping::fill_param_ty (
 
   if (type.get_kind () == TypeKind::PARAM)
     {
-      // delete param;
-      param = static_cast<ParamType *> (type.clone ());
+      param = static_cast<BaseGeneric *> (type.clone ());
+    }
+  else if (type.get_kind () == TyTy::TypeKind::CONST)
+    {
+      param = static_cast<BaseGeneric *> (type.clone ());
     }
   else if (param->get_kind () == TypeKind::PARAM)
     {
diff --git a/gcc/rust/typecheck/rust-tyty.cc b/gcc/rust/typecheck/rust-tyty.cc
index c5488fca500..d25f524a6cc 100644
--- a/gcc/rust/typecheck/rust-tyty.cc
+++ b/gcc/rust/typecheck/rust-tyty.cc
@@ -37,6 +37,7 @@
 #include "options.h"
 #include "rust-system.h"
 #include "tree.h"
+#include "fold-const.h"
 #include <string>
 
 namespace Rust {
@@ -3712,9 +3713,14 @@ ConstType::is_equal (const BaseType &other) const
       return false;
     }
 
-  // TODO
+  const ConstType &rhs = static_cast<const ConstType &> (other);
+  if (!get_ty ()->is_equal (*rhs.get_ty ()))
+    return false;
 
-  return false;
+  tree lv = get_value ();
+  tree rv = rhs.get_value ();
+
+  return operand_equal_p (lv, rv, 0);
 }
 
 ConstType *
-- 
2.49.0

Reply via email to