1 use crate::{Diagnostic, DiagnosticsContext};
3 // Diagnostic: break-outside-of-loop
5 // This diagnostic is triggered if the `break` keyword is used outside of a loop.
6 pub(crate) fn break_outside_of_loop(
7 ctx: &DiagnosticsContext<'_>,
8 d: &hir::BreakOutsideOfLoop,
10 let construct = if d.is_break { "break" } else { "continue" };
12 "break-outside-of-loop",
13 format!("{construct} outside of loop"),
14 ctx.sema.diagnostics_display_range(d.expr.clone().map(|it| it.into())).range,
20 use crate::tests::check_diagnostics;
23 fn outside_of_loop() {
28 //^^^^^ error: break outside of loop
30 //^^^^^^^^ error: break outside of loop
32 //^^^^^^^^ error: continue outside of loop
34 //^^^^^^^^^^^ error: continue outside of loop
41 fn async_blocks_are_borders() {
48 //^^^^^ error: break outside of loop
50 //^^^^^^^^ error: break outside of loop
52 //^^^^^^^^ error: continue outside of loop
54 //^^^^^^^^^^^ error: continue outside of loop
63 fn closures_are_borders() {
70 //^^^^^ error: break outside of loop
72 //^^^^^^^^ error: break outside of loop
74 //^^^^^^^^ error: continue outside of loop
76 //^^^^^^^^^^^ error: continue outside of loop
85 fn blocks_pass_through() {
103 fn try_blocks_pass_through() {
127 //^^^^^ error: break outside of loop
130 //^^^^^^^^ error: continue outside of loop
132 //^^^^^^^^^^^ error: continue outside of loop