if let Some(err_code) = &err.code {
if err_code == &rustc_errors::error_code!(E0425) {
for label_rib in &self.label_ribs {
- for (label_ident, _) in &label_rib.bindings {
+ for (label_ident, node_id) in &label_rib.bindings {
if format!("'{}", ident) == label_ident.to_string() {
err.span_label(label_ident.span, "a label with a similar name exists");
if let PathSource::Expr(Some(Expr {
label_ident.name.to_string(),
Applicability::MaybeIncorrect,
);
+ // Do not lint against unused label when we suggest them.
+ self.diagnostic_metadata.unused_labels.remove(node_id);
}
}
}
| ^^^^ not found in this scope
error[E0425]: cannot find value `LOOP` in this scope
- --> $DIR/label_misspelled.rs:29:15
+ --> $DIR/label_misspelled.rs:28:15
|
LL | 'LOOP: loop {
| ----- a label with a similar name exists
-LL |
LL | break LOOP;
| ^^^^
| |
| help: use the similarly named label: `'LOOP`
error[E0425]: cannot find value `while_loop` in this scope
- --> $DIR/label_misspelled.rs:34:15
+ --> $DIR/label_misspelled.rs:32:15
|
LL | 'while_loop: while true {
| ----------- a label with a similar name exists
-LL |
LL | break while_loop;
| ^^^^^^^^^^
| |
| help: use the similarly named label: `'while_loop`
error[E0425]: cannot find value `while_let` in this scope
- --> $DIR/label_misspelled.rs:39:15
+ --> $DIR/label_misspelled.rs:36:15
|
LL | 'while_let: while let Some(_) = Some(()) {
| ---------- a label with a similar name exists
-LL |
LL | break while_let;
| ^^^^^^^^^
| |
| help: use the similarly named label: `'while_let`
error[E0425]: cannot find value `for_loop` in this scope
- --> $DIR/label_misspelled.rs:44:15
+ --> $DIR/label_misspelled.rs:40:15
|
LL | 'for_loop: for _ in 0..3 {
| --------- a label with a similar name exists
-LL |
LL | break for_loop;
| ^^^^^^^^
| |
LL | 'LOOP: loop {
| ^^^^^
-warning: unused label
- --> $DIR/label_misspelled.rs:27:5
- |
-LL | 'LOOP: loop {
- | ^^^^^
-
-warning: unused label
- --> $DIR/label_misspelled.rs:32:5
- |
-LL | 'while_loop: while true {
- | ^^^^^^^^^^^
-
warning: denote infinite loops with `loop { ... }`
- --> $DIR/label_misspelled.rs:32:5
+ --> $DIR/label_misspelled.rs:31:5
|
LL | 'while_loop: while true {
| ^^^^^^^^^^^^^^^^^^^^^^^ help: use `loop`
warning: unused label
- --> $DIR/label_misspelled.rs:37:5
- |
-LL | 'while_let: while let Some(_) = Some(()) {
- | ^^^^^^^^^^
-
-warning: unused label
- --> $DIR/label_misspelled.rs:42:5
- |
-LL | 'for_loop: for _ in 0..3 {
- | ^^^^^^^^^
-
-warning: unused label
- --> $DIR/label_misspelled.rs:51:5
+ --> $DIR/label_misspelled.rs:47:5
|
LL | 'while_loop: while true {
| ^^^^^^^^^^^
warning: denote infinite loops with `loop { ... }`
- --> $DIR/label_misspelled.rs:51:5
+ --> $DIR/label_misspelled.rs:47:5
|
LL | 'while_loop: while true {
| ^^^^^^^^^^^^^^^^^^^^^^^ help: use `loop`
warning: unused label
- --> $DIR/label_misspelled.rs:56:5
+ --> $DIR/label_misspelled.rs:52:5
|
LL | 'while_let: while let Some(_) = Some(()) {
| ^^^^^^^^^^
warning: unused label
- --> $DIR/label_misspelled.rs:61:5
+ --> $DIR/label_misspelled.rs:57:5
|
LL | 'for_loop: for _ in 0..3 {
| ^^^^^^^^^
error[E0571]: `break` with value from a `while` loop
- --> $DIR/label_misspelled.rs:53:9
+ --> $DIR/label_misspelled.rs:49:9
|
LL | 'while_loop: while true {
| ----------------------- you can't `break` with a value in a `while` loop
| ^^^^^^^^^^^
error[E0571]: `break` with value from a `while` loop
- --> $DIR/label_misspelled.rs:58:9
+ --> $DIR/label_misspelled.rs:54:9
|
LL | 'while_let: while let Some(_) = Some(()) {
| ---------------------------------------- you can't `break` with a value in a `while` loop
| ^^^^^^^^^^
error[E0571]: `break` with value from a `for` loop
- --> $DIR/label_misspelled.rs:63:9
+ --> $DIR/label_misspelled.rs:59:9
|
LL | 'for_loop: for _ in 0..3 {
| ------------------------ you can't `break` with a value in a `for` loop
LL | break 'for_loop;
| ^^^^^^^^^
-error: aborting due to 11 previous errors; 14 warnings emitted
+error: aborting due to 11 previous errors; 10 warnings emitted
Some errors have detailed explanations: E0425, E0571.
For more information about an error, try `rustc --explain E0425`.
error: expected identifier, found keyword `for`
- --> $DIR/label_misspelled_2.rs:11:8
+ --> $DIR/label_misspelled_2.rs:10:8
|
LL | c: for _ in 0..1 {
| ^^^ expected identifier, found keyword
error: expected `<`, found reserved identifier `_`
- --> $DIR/label_misspelled_2.rs:11:12
+ --> $DIR/label_misspelled_2.rs:10:12
|
LL | c: for _ in 0..1 {
| - ^ expected `<`
= note: see issue #23416 <https://github.com/rust-lang/rust/issues/23416> for more information
error[E0425]: cannot find value `b` in this scope
- --> $DIR/label_misspelled_2.rs:9:15
+ --> $DIR/label_misspelled_2.rs:8:15
|
LL | 'b: for _ in 0..1 {
| -- a label with a similar name exists
-LL |
LL | break b;
| ^
| |
| not found in this scope
| help: use the similarly named label: `'b`
-warning: unused label
- --> $DIR/label_misspelled_2.rs:7:5
- |
-LL | 'b: for _ in 0..1 {
- | ^^
- |
-note: the lint level is defined here
- --> $DIR/label_misspelled_2.rs:1:9
- |
-LL | #![warn(unused_labels)]
- | ^^^^^^^^^^^^^
-
-error: aborting due to 3 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0425`.