about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-11-21 23:24:15 +0000
committerbors <bors@rust-lang.org>2018-11-21 23:24:15 +0000
commit6612100de547446f20aa51f5887a8b769078b0fe (patch)
treeb4313ec2f04091a752c4961f8304bb639f260ad0 /src
parent0b9f19dff1347e29bf4362ab5a8fab84b43023b5 (diff)
parent8ee9711a6c00a0994f7fc69586273c86ab45e396 (diff)
Auto merge of #56065 - oli-obk:min_const_fn_loop_ice, r=davidtwco
Replace the ICEing on const fn loops with an error

fixes #56035
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/transform/qualify_min_const_fn.rs8
-rw-r--r--src/test/ui/consts/min_const_fn/loop_ice.rs5
-rw-r--r--src/test/ui/consts/min_const_fn/loop_ice.stderr8
3 files changed, 16 insertions, 5 deletions
diff --git a/src/librustc_mir/transform/qualify_min_const_fn.rs b/src/librustc_mir/transform/qualify_min_const_fn.rs
index ed13063cfdf..958e5efe3ec 100644
--- a/src/librustc_mir/transform/qualify_min_const_fn.rs
+++ b/src/librustc_mir/transform/qualify_min_const_fn.rs
@@ -365,10 +365,8 @@ fn check_terminator(
             cleanup: _,
         } => check_operand(tcx, mir, cond, span),
 
-        | TerminatorKind::FalseUnwind { .. } => span_bug!(
-            terminator.source_info.span,
-            "min_const_fn encountered `{:#?}`",
-            terminator
-        ),
+        TerminatorKind::FalseUnwind { .. } => {
+            Err((span, "loops are not allowed in const fn".into()))
+        },
     }
 }
diff --git a/src/test/ui/consts/min_const_fn/loop_ice.rs b/src/test/ui/consts/min_const_fn/loop_ice.rs
new file mode 100644
index 00000000000..4278a8e2d00
--- /dev/null
+++ b/src/test/ui/consts/min_const_fn/loop_ice.rs
@@ -0,0 +1,5 @@
+const fn foo() {
+    loop {} //~ ERROR loops are not allowed in const fn
+}
+
+fn main() {}
diff --git a/src/test/ui/consts/min_const_fn/loop_ice.stderr b/src/test/ui/consts/min_const_fn/loop_ice.stderr
new file mode 100644
index 00000000000..1424cea65af
--- /dev/null
+++ b/src/test/ui/consts/min_const_fn/loop_ice.stderr
@@ -0,0 +1,8 @@
+error: loops are not allowed in const fn
+  --> $DIR/loop_ice.rs:2:5
+   |
+LL |     loop {} //~ ERROR loops are not allowed in const fn
+   |     ^^^^^^^
+
+error: aborting due to previous error
+