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

commit f88db85c0272c3f25d2638565d5f6647b64363e5
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Mon Sep 18 15:34:24 2023 +0200

    Prevent error emission on resolver reentry
    
    The resolver was emitting an error when meeting the same symbol twice.
    What is important here is the origin of the resolved symbol, we should
    emit an error when the name is similar but the symbol isn't be not when
    the resolver is simply meeting the exact same symbol.
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-toplevel-name-resolver-2.0.cc (insert_macros): Add
            constraint over the ast node id.
            (TopLevel::visit): Likewise.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc 
b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
index 72c3560b9daf..3b1ccc1d3c50 100644
--- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
@@ -91,7 +91,7 @@ insert_macros (std::vector<PROC_MACRO> &macros, 
NameResolutionContext &ctx)
     {
       auto res = ctx.macros.insert (macro.get_name (), macro.get_node_id ());
 
-      if (!res)
+      if (!res && res.error ().existing != macro.get_node_id ())
        {
          rust_error_at (UNKNOWN_LOCATION, ErrorCode::E0428,
                         "macro %qs defined multiple times",
@@ -167,7 +167,7 @@ TopLevel::visit (AST::MacroRulesDefinition &macro)
     {
       auto res = ctx.macros.insert_at_root (macro.get_rule_name (),
                                            macro.get_node_id ());
-      if (!res)
+      if (!res && res.error ().existing != macro.get_node_id ())
        {
          // TODO: Factor this
          rich_location rich_loc (line_table, macro.get_locus ());

Reply via email to