about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2018-01-28 11:14:09 -0800
committerEsteban Küber <esteban@kuber.com.ar>2018-01-28 11:14:09 -0800
commitb7437c56f82cfb643a372a7b10c85b4ed183d886 (patch)
tree3cf75ae13cef17bfcfc7c16b8aba43c4b4c97b06
parentbacb5c58dfdde7c35e99b2b0d8171238cc33cf6c (diff)
downloadrust-b7437c56f82cfb643a372a7b10c85b4ed183d886.tar.gz
rust-b7437c56f82cfb643a372a7b10c85b4ed183d886.zip
Suggest removing value from `break` when invalid
-rw-r--r--src/librustc_passes/loops.rs5
-rw-r--r--src/test/ui/loop-break-value-no-repeat.stderr4
2 files changed, 9 insertions, 0 deletions
diff --git a/src/librustc_passes/loops.rs b/src/librustc_passes/loops.rs
index c23f28fe220..008c71cc9ce 100644
--- a/src/librustc_passes/loops.rs
+++ b/src/librustc_passes/loops.rs
@@ -119,6 +119,11 @@ impl<'a, 'hir> Visitor<'hir> for CheckLoopVisitor<'a, 'hir> {
                                              kind.name())
                                 .span_label(e.span,
                                             "can only break with a value inside `loop`")
+                                .span_suggestion(e.span,
+                                                 &format!("instead, use `break` on its own \
+                                                           without a value inside this `{}` loop",
+                                                          kind.name()),
+                                                 "break".to_string())
                                 .emit();
                         }
                     }
diff --git a/src/test/ui/loop-break-value-no-repeat.stderr b/src/test/ui/loop-break-value-no-repeat.stderr
index 296b3b191e3..982de00b4fa 100644
--- a/src/test/ui/loop-break-value-no-repeat.stderr
+++ b/src/test/ui/loop-break-value-no-repeat.stderr
@@ -3,6 +3,10 @@ error[E0571]: `break` with value from a `for` loop
    |
 22 |         break 22 //~ ERROR `break` with value from a `for` loop
    |         ^^^^^^^^ can only break with a value inside `loop`
+help: instead, use `break` on its own without a value inside this `for` loop
+   |
+22 |         break //~ ERROR `break` with value from a `for` loop
+   |         ^^^^^
 
 error: aborting due to previous error