]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: [E0426] Use of undeclared label
authorMuhammad Mahad <mahadtxt@gmail.com>
Tue, 1 Aug 2023 10:00:06 +0000 (15:00 +0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:00:26 +0000 (19:00 +0100)
Refactored error message to print more
userfriendly message and added error
code.

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
refactored message and called error function.

gcc/testsuite/ChangeLog:

* rust/compile/undeclared_label.rs: New test for E0426.

Signed-off-by: Muhammad Mahad <mahadtxt@gmail.com>
gcc/rust/resolve/rust-ast-resolve-expr.cc
gcc/testsuite/rust/compile/undeclared_label.rs [new file with mode: 0644]

index bb7c5ffa0efbede0838ca4af98e8ba64ec2b7282..fefa0f5174fbc07aca74497fdead9bbd1eaefe14 100644 (file)
@@ -451,8 +451,9 @@ ResolveExpr::visit (AST::BreakExpr &expr)
                                    label.get_lifetime_name ()),
            &resolved_node))
        {
-         rust_error_at (expr.get_label ().get_locus (),
-                        "failed to resolve label");
+         rust_error_at (expr.get_label ().get_locus (), ErrorCode::E0426,
+                        "use of undeclared label %qs in %<break%>",
+                        label.get_lifetime_name ().c_str ());
          return;
        }
       resolver->insert_resolved_label (label.get_node_id (), resolved_node);
@@ -572,8 +573,9 @@ ResolveExpr::visit (AST::ContinueExpr &expr)
                                    label.get_lifetime_name ()),
            &resolved_node))
        {
-         rust_error_at (expr.get_label ().get_locus (),
-                        "failed to resolve label");
+         rust_error_at (expr.get_label ().get_locus (), ErrorCode::E0426,
+                        "use of undeclared label %qs in %<continue%>",
+                        label.get_lifetime_name ().c_str ());
          return;
        }
       resolver->insert_resolved_label (label.get_node_id (), resolved_node);
diff --git a/gcc/testsuite/rust/compile/undeclared_label.rs b/gcc/testsuite/rust/compile/undeclared_label.rs
new file mode 100644 (file)
index 0000000..6efa2d9
--- /dev/null
@@ -0,0 +1,16 @@
+// ErrorCode::E0426
+#![allow(unused)]
+fn resolve_label_continue() -> () {
+    loop {
+        continue 'a; // { dg-error "use of undeclared label .a. in .continue." }
+    }
+}
+fn resolve_label_break() -> () {
+    loop {
+        break 'crabby; // { dg-error "use of undeclared label .crabby. in .break." }
+    }
+}
+fn main() {
+    resolve_label_continue();
+    resolve_label_break();
+}