Skip to content

Commit 994498a

Browse files
committed
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 <[email protected]>
1 parent dba8bc5 commit 994498a

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

gcc/rust/resolve/rust-ast-resolve-expr.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,9 @@ ResolveExpr::visit (AST::BreakExpr &expr)
451451
label.get_lifetime_name ()),
452452
&resolved_node))
453453
{
454-
rust_error_at (expr.get_label ().get_locus (),
455-
"failed to resolve label");
454+
rust_error_at (expr.get_label ().get_locus (), ErrorCode::E0426,
455+
"use of undeclared label %<%s%> in %<break%>",
456+
label.get_lifetime_name ().c_str ());
456457
return;
457458
}
458459
resolver->insert_resolved_label (label.get_node_id (), resolved_node);
@@ -572,8 +573,9 @@ ResolveExpr::visit (AST::ContinueExpr &expr)
572573
label.get_lifetime_name ()),
573574
&resolved_node))
574575
{
575-
rust_error_at (expr.get_label ().get_locus (),
576-
"failed to resolve label");
576+
rust_error_at (expr.get_label ().get_locus (), ErrorCode::E0426,
577+
"use of undeclared label %<%s%> in %<continue%>",
578+
label.get_lifetime_name ().c_str ());
577579
return;
578580
}
579581
resolver->insert_resolved_label (label.get_node_id (), resolved_node);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// ErrorCode::E0426
2+
#![allow(unused)]
3+
fn resolve_label_continue() -> () {
4+
loop {
5+
continue 'a; // { dg-error "use of undeclared label .a. in .continue." }
6+
}
7+
}
8+
fn resolve_label_break() -> () {
9+
loop {
10+
break 'crabby; // { dg-error "use of undeclared label .crabby. in .break." }
11+
}
12+
}
13+
fn main() {
14+
resolve_label_continue();
15+
resolve_label_break();
16+
}

0 commit comments

Comments
 (0)