aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-10-27 13:32:09 -0400
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-21 12:32:53 +0100
commit2dbdf9b77247fc2813e37c63924c6c8739b4a0a7 (patch)
tree88891f5eac7f5bab3eb22005ec1a274067ce93da /gcc
parentbf1d58686b282f00271e5afeff168ca84abde821 (diff)
downloadgcc-2dbdf9b77247fc2813e37c63924c6c8739b4a0a7.zip
gcc-2dbdf9b77247fc2813e37c63924c6c8739b4a0a7.tar.gz
gcc-2dbdf9b77247fc2813e37c63924c6c8739b4a0a7.tar.bz2
gccrs: Fix variable shadowing in late resolution 2.0
gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Visit the initialization expressions of let statements before visiting their patterns. gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: Remove entries. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-late-name-resolver-2.0.cc10
-rw-r--r--gcc/testsuite/rust/compile/nr2/exclude3
2 files changed, 8 insertions, 5 deletions
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 43f33df..5fd49e7 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -126,8 +126,14 @@ Late::new_label (Identifier name, NodeId id)
void
Late::visit (AST::LetStmt &let)
{
- // so we don't need that method
- DefaultResolver::visit (let);
+ DefaultASTVisitor::visit_outer_attrs (let);
+ if (let.has_type ())
+ visit (let.get_type ());
+ // visit expression before pattern
+ // this makes variable shadowing work properly
+ if (let.has_init_expr ())
+ visit (let.get_init_expr ());
+ visit (let.get_pattern ());
// how do we deal with the fact that `let a = blipbloup` should look for a
// label and cannot go through function ribs, but `let a = blipbloup()` can?
diff --git a/gcc/testsuite/rust/compile/nr2/exclude b/gcc/testsuite/rust/compile/nr2/exclude
index 383950c..c96fde2 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -74,10 +74,8 @@ issue-1589.rs
issue-1725-1.rs
issue-1725-2.rs
issue-1786.rs
-issue-1813.rs
issue-1893.rs
issue-1901.rs
-issue-1930.rs
issue-1981.rs
issue-2019-1.rs
issue-2019-2.rs
@@ -142,7 +140,6 @@ match4.rs
match5.rs
match9.rs
method2.rs
-multi_reference_type.rs
multiple_bindings1.rs
multiple_bindings2.rs
name_resolution2.rs