From: Muhammad Mahad Date: Tue, 1 Aug 2023 10:00:06 +0000 (+0500) Subject: gccrs: [E0426] Use of undeclared label X-Git-Tag: basepoints/gcc-15~2257 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c10950f544f7972317c848bec284af63981943d;p=thirdparty%2Fgcc.git gccrs: [E0426] Use of undeclared label 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 --- diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc index bb7c5ffa0efb..fefa0f5174fb 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.cc +++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc @@ -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 %", + 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 %", + 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 index 000000000000..6efa2d98dbfb --- /dev/null +++ b/gcc/testsuite/rust/compile/undeclared_label.rs @@ -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(); +}