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

commit r16-234-gdc351dac40989afbc0601e5156017528aa905837
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Fri Apr 25 16:02:12 2025 +0200

    gccrs: Completely duplicate path node
    
    Both nodes had the same id, this led to a resolution conflict.
    
    gcc/rust/ChangeLog:
    
            * expand/rust-derive-clone.cc (DeriveClone::clone_enum_struct): 
Clone
            path to avoid using the same nodeid.
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/nr2/exclude: Remove now passing test from exclusion
            list.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/expand/rust-derive-clone.cc   | 8 +++++++-
 gcc/testsuite/rust/compile/nr2/exclude | 1 -
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gcc/rust/expand/rust-derive-clone.cc 
b/gcc/rust/expand/rust-derive-clone.cc
index a955b581acd5..321fa00d2ec8 100644
--- a/gcc/rust/expand/rust-derive-clone.cc
+++ b/gcc/rust/expand/rust-derive-clone.cc
@@ -293,8 +293,14 @@ DeriveClone::clone_enum_struct (PathInExpression 
variant_path,
     new ReferencePattern (std::unique_ptr<Pattern> (new StructPattern (
                            variant_path, loc, pattern_elts)),
                          false, false, loc));
+
+  PathInExpression new_path (variant_path.get_segments (),
+                            variant_path.get_outer_attrs (),
+                            variant_path.get_locus (),
+                            variant_path.opening_scope_resolution ());
+
   auto expr = std::unique_ptr<Expr> (
-    new StructExprStructFields (variant_path, std::move (cloned_fields), loc));
+    new StructExprStructFields (new_path, std::move (cloned_fields), loc));
 
   return builder.match_case (std::move (pattern), std::move (expr));
 }
diff --git a/gcc/testsuite/rust/compile/nr2/exclude 
b/gcc/testsuite/rust/compile/nr2/exclude
index fac66a7de2c1..c020e36fba4a 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -6,7 +6,6 @@ pub_restricted_1.rs
 pub_restricted_2.rs
 pub_restricted_3.rs
 issue-2905-2.rs
-derive_clone_enum3.rs
 derive-default1.rs
 derive-eq-invalid.rs
 torture/alt_patterns1.rs

Reply via email to