From: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

When we tried to insert a shadowable node and another shadowable node has
been inserted before, we didn't emit any error if the node has already
been inserted previously and failed silently.

gcc/rust/ChangeLog:

        * resolve/rust-rib.cc (Rib::insert): Emit an error when trying to
        insert an already inserted node.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
---
 gcc/rust/resolve/rust-rib.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/rust/resolve/rust-rib.cc b/gcc/rust/resolve/rust-rib.cc
index 0a8fce34a1a..714507219e0 100644
--- a/gcc/rust/resolve/rust-rib.cc
+++ b/gcc/rust/resolve/rust-rib.cc
@@ -92,9 +92,9 @@ Rib::insert (std::string name, Definition def)
        {
          if (std::find (current.ids.cbegin (), current.ids.cend (), id)
              == current.ids.cend ())
-           {
-             current.ids.push_back (id);
-           }
+           current.ids.push_back (id);
+         else
+           return tl::make_unexpected (DuplicateNameError (name, id));
        }
     }
   else if (it->second.shadowable)
-- 
2.45.2

Reply via email to