https://gcc.gnu.org/g:79ce69f728dfef9b820452f24e6d9c7f4d5301f9

commit r16-2931-g79ce69f728dfef9b820452f24e6d9c7f4d5301f9
Author: Philip Herron <herron.phi...@googlemail.com>
Date:   Thu Jul 10 22:58:21 2025 +0100

    gccrs: Fix ICE when handling bad constructor
    
    We just had a typo returning ok true when it should have been false.
    
    Fixes Rust-GCC#3876
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-type-check-struct.cc 
(TypeCheckStructExpr::visit): fix typo
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/issue-3876.rs: New test.
    
    Signed-off-by: Philip Herron <herron.phi...@googlemail.com>

Diff:
---
 gcc/rust/typecheck/rust-hir-type-check-struct.cc | 2 +-
 gcc/testsuite/rust/compile/issue-3876.rs         | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/typecheck/rust-hir-type-check-struct.cc 
b/gcc/rust/typecheck/rust-hir-type-check-struct.cc
index e3a08e6f044d..4ef83482a536 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-struct.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-struct.cc
@@ -362,7 +362,7 @@ TypeCheckStructExpr::visit (HIR::StructExprFieldIdentifier 
&field)
   if (!ok)
     {
       rust_error_at (field.get_locus (), "unknown field");
-      return true;
+      return false;
     }
 
   auto it = adtFieldIndexToField.find (field_index);
diff --git a/gcc/testsuite/rust/compile/issue-3876.rs 
b/gcc/testsuite/rust/compile/issue-3876.rs
new file mode 100644
index 000000000000..17b1590590e0
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-3876.rs
@@ -0,0 +1,8 @@
+enum test {
+    A(i32),
+}
+
+fn fun(x: i32) {
+    test::A { x }
+    // { dg-error "unknown field" "" { target *-*-* } .-1 }
+}

Reply via email to