https://gcc.gnu.org/g:5a2d06037c7e0b0f06543db17b8376b6a6fceeb3

commit 5a2d06037c7e0b0f06543db17b8376b6a6fceeb3
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Thu Apr 17 14:02:45 2025 -0400

    nr2.0: Handle StructPatternFieldIdent
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-late-name-resolver-2.0.cc
            (Late::visit): Handle StructPatternFieldIdent.
            * resolve/rust-late-name-resolver-2.0.h
            (Late::visit): Likewise.
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/nr2/exclude: Remove entry.
    
    Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com>

Diff:
---
 gcc/rust/resolve/rust-late-name-resolver-2.0.cc | 8 ++++++++
 gcc/rust/resolve/rust-late-name-resolver-2.0.h  | 1 +
 gcc/testsuite/rust/compile/nr2/exclude          | 1 -
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc 
b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
index c140fa07f9b8..6ac249b4cf22 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -172,6 +172,14 @@ Late::visit (AST::IdentifierPattern &identifier)
                                              identifier.get_node_id ());
 }
 
+void
+Late::visit (AST::StructPatternFieldIdent &field)
+{
+  // We do want to ignore duplicated data because some situations rely on it.
+  std::ignore = ctx.values.insert_shadowable (field.get_identifier (),
+                                             field.get_node_id ());
+}
+
 void
 Late::visit (AST::SelfParam &param)
 {
diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.h 
b/gcc/rust/resolve/rust-late-name-resolver-2.0.h
index 52079cc42c9e..34f3c28fee4f 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.h
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.h
@@ -42,6 +42,7 @@ public:
   // TODO: Do we need this?
   // void visit (AST::Method &) override;
   void visit (AST::IdentifierPattern &) override;
+  void visit (AST::StructPatternFieldIdent &) override;
   void visit (AST::SelfParam &) override;
 
   // resolutions
diff --git a/gcc/testsuite/rust/compile/nr2/exclude 
b/gcc/testsuite/rust/compile/nr2/exclude
index 4772517c47e4..5c52a3cababa 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -16,7 +16,6 @@ derive_clone_enum3.rs
 derive-debug1.rs
 derive-default1.rs
 derive-eq-invalid.rs
-derive-hash1.rs
 torture/alt_patterns1.rs
 torture/name_resolve1.rs
 issue-3568.rs

Reply via email to