https://gcc.gnu.org/g:5989e3d614b1919bc9299383bb147cc6a14dec4b

commit 5989e3d614b1919bc9299383bb147cc6a14dec4b
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Sun Feb 18 00:19:25 2024 -0500

    Fix false positive for top-level AltPattern
    
    gcc/rust/ChangeLog:
    
            * hir/rust-ast-lower-pattern.cc
            (ASTLoweringPattern::visit):
            Reset is_let_top_level while visiting GroupedPattern.
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/let_alt.rs: Check for false positive.
    
    Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com>

Diff:
---
 gcc/rust/hir/rust-ast-lower-pattern.cc | 1 +
 gcc/testsuite/rust/compile/let_alt.rs  | 1 +
 2 files changed, 2 insertions(+)

diff --git a/gcc/rust/hir/rust-ast-lower-pattern.cc 
b/gcc/rust/hir/rust-ast-lower-pattern.cc
index a2228488ad2a..d534b8295176 100644
--- a/gcc/rust/hir/rust-ast-lower-pattern.cc
+++ b/gcc/rust/hir/rust-ast-lower-pattern.cc
@@ -276,6 +276,7 @@ ASTLoweringPattern::visit (AST::RangePattern &pattern)
 void
 ASTLoweringPattern::visit (AST::GroupedPattern &pattern)
 {
+  is_let_top_level = false;
   pattern.get_pattern_in_parens ()->accept_vis (*this);
 }
 
diff --git a/gcc/testsuite/rust/compile/let_alt.rs 
b/gcc/testsuite/rust/compile/let_alt.rs
index a2735bdbe770..ff16e6428ff1 100644
--- a/gcc/testsuite/rust/compile/let_alt.rs
+++ b/gcc/testsuite/rust/compile/let_alt.rs
@@ -1,4 +1,5 @@
 fn main() {
     let _a | _a = 12;
     // { dg-error "top level or-patterns are not allowed for .let. bindings" 
"" { target *-*-* } .-1 }
+    let (_b | _b) = 12;
 }

Reply via email to