]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc_passes/loops.rs
Fix an ICE using break and continue as array lengths
[rust.git] / src / librustc_passes / loops.rs
index c99f1e9da439f04ce9b3133814123ed977511745..898acf48d3df82a28d29f7f31c7197bc71d2ca48 100644 (file)
@@ -40,6 +40,7 @@ enum Context {
     Loop(LoopKind),
     Closure,
     LabeledBlock,
+    AnonConst,
 }
 
 #[derive(Copy, Clone)]
@@ -71,6 +72,10 @@ fn visit_impl_item(&mut self, i: &'hir hir::ImplItem) {
         self.with_context(Normal, |v| intravisit::walk_impl_item(v, i));
     }
 
+    fn visit_anon_const(&mut self, c: &'hir hir::AnonConst) {
+        self.with_context(AnonConst, |v| intravisit::walk_anon_const(v, c));
+    }
+
     fn visit_expr(&mut self, e: &'hir hir::Expr) {
         match e.node {
             hir::ExprWhile(ref e, ref b, _) => {
@@ -194,7 +199,7 @@ fn require_break_cx(&self, name: &str, span: Span) {
                 .span_label(span, "cannot break inside of a closure")
                 .emit();
             }
-            Normal => {
+            Normal | AnonConst => {
                 struct_span_err!(self.sess, span, E0268, "`{}` outside of loop", name)
                 .span_label(span, "cannot break outside of a loop")
                 .emit();