about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/const-call.rs1
-rw-r--r--src/test/compile-fail/const-err-early.rs13
-rw-r--r--src/test/compile-fail/const-err-multi.rs5
-rw-r--r--src/test/compile-fail/const-err.rs21
-rw-r--r--src/test/compile-fail/const-err2.rs6
-rw-r--r--src/test/compile-fail/const-err3.rs28
-rw-r--r--src/test/compile-fail/const-eval-overflow.rs154
-rw-r--r--src/test/compile-fail/const-eval-overflow2.rs91
-rw-r--r--src/test/compile-fail/const-eval-overflow2b.rs91
-rw-r--r--src/test/compile-fail/const-eval-overflow2c.rs91
-rw-r--r--src/test/compile-fail/const-integer-bool-ops.rs10
-rw-r--r--src/test/compile-fail/const-len-underflow-subspans.rs2
-rw-r--r--src/test/compile-fail/const-slice-oob.rs2
-rw-r--r--src/test/compile-fail/const-tup-index-span.rs1
-rw-r--r--src/test/compile-fail/eval-enum.rs15
-rw-r--r--src/test/compile-fail/float-int-invalid-const-cast.rs61
-rw-r--r--src/test/compile-fail/issue-27895.rs3
-rw-r--r--src/test/compile-fail/issue-41255.rs18
-rw-r--r--src/test/compile-fail/issue-44578.rs4
-rw-r--r--src/test/compile-fail/issue-6804.rs7
-rw-r--r--src/test/compile-fail/issue-8460-const.rs20
-rw-r--r--src/test/compile-fail/lint-exceeding-bitshifts.rs18
-rw-r--r--src/test/compile-fail/lint-exceeding-bitshifts2.rs27
-rw-r--r--src/test/compile-fail/lint-type-overflow2.rs1
-rw-r--r--src/test/compile-fail/non-constant-in-const-path.rs3
-rw-r--r--src/test/compile-fail/rfc1445/match-forbidden-without-eq.rs2
-rw-r--r--src/test/run-pass/const-index-feature-gate.rs (renamed from src/test/compile-fail/const-index-feature-gate.rs)3
-rw-r--r--src/test/run-pass/float-int-invalid-const-cast.rs61
-rw-r--r--src/test/ui/const-eval/issue-43197.rs2
-rw-r--r--src/test/ui/const-len-underflow-separate-spans.rs1
-rw-r--r--src/test/ui/error-codes/E0030.rs2
-rw-r--r--src/test/ui/error-codes/E0080.rs5
32 files changed, 476 insertions, 293 deletions
diff --git a/src/test/compile-fail/const-call.rs b/src/test/compile-fail/const-call.rs
index 18476494300..02264228a6b 100644
--- a/src/test/compile-fail/const-call.rs
+++ b/src/test/compile-fail/const-call.rs
@@ -15,4 +15,5 @@ fn f(x: usize) -> usize {
 fn main() {
     let _ = [0; f(2)];
     //~^ ERROR calls in constants are limited to constant functions
+    //~| E0080
 }
diff --git a/src/test/compile-fail/const-err-early.rs b/src/test/compile-fail/const-err-early.rs
index 42fb40394fb..8c2e6233abf 100644
--- a/src/test/compile-fail/const-err-early.rs
+++ b/src/test/compile-fail/const-err-early.rs
@@ -11,14 +11,15 @@
 #![feature(const_indexing)]
 #![deny(const_err)]
 
-pub const A: i8 = -std::i8::MIN; //~ ERROR attempt to negate with overflow
-pub const B: u8 = 200u8 + 200u8; //~ ERROR attempt to add with overflow
-pub const C: u8 = 200u8 * 4; //~ ERROR attempt to multiply with overflow
-pub const D: u8 = 42u8 - (42u8 + 1); //~ ERROR attempt to subtract with overflow
+pub const A: i8 = -std::i8::MIN; //~ ERROR E0080
+//~^ ERROR attempt to negate with overflow
+//~| ERROR const_err
+pub const B: u8 = 200u8 + 200u8; //~ ERROR E0080
+pub const C: u8 = 200u8 * 4; //~ ERROR E0080
+pub const D: u8 = 42u8 - (42u8 + 1); //~ ERROR E0080
 pub const E: u8 = [5u8][1];
-//~^ ERROR index out of bounds: the len is 1 but the index is 1
+//~^ ERROR E0080
 
 fn main() {
     let _e = [6u8][1];
-    //~^ ERROR index out of bounds: the len is 1 but the index is 1
 }
diff --git a/src/test/compile-fail/const-err-multi.rs b/src/test/compile-fail/const-err-multi.rs
index d4f9c0fe56d..668f95f2c8d 100644
--- a/src/test/compile-fail/const-err-multi.rs
+++ b/src/test/compile-fail/const-err-multi.rs
@@ -11,9 +11,14 @@
 #![deny(const_err)]
 
 pub const A: i8 = -std::i8::MIN; //~ ERROR attempt to negate with overflow
+//~^ ERROR E0080
+//~| ERROR const_err
 pub const B: i8 = A;
+//~^ ERROR E0080
 pub const C: u8 = A as u8;
+//~^ ERROR E0080
 pub const D: i8 = 50 - A;
+//~^ ERROR E0080
 
 fn main() {
 }
diff --git a/src/test/compile-fail/const-err.rs b/src/test/compile-fail/const-err.rs
index e65194ab56f..8bd759b6d37 100644
--- a/src/test/compile-fail/const-err.rs
+++ b/src/test/compile-fail/const-err.rs
@@ -26,26 +26,5 @@ const FOO: u8 = [5u8][1];
 //~| index out of bounds: the len is 1 but the index is 1
 
 fn main() {
-    let a = -std::i8::MIN;
-    //~^ WARN this expression will panic at run-time
-    //~| attempt to negate with overflow
-    let b = 200u8 + 200u8 + 200u8;
-    //~^ WARN this expression will panic at run-time
-    //~^^ WARN this expression will panic at run-time
-    //~| attempt to add with overflow
-    let c = 200u8 * 4;
-    //~^ WARN this expression will panic at run-time
-    //~| attempt to multiply with overflow
-    let d = 42u8 - (42u8 + 1);
-    //~^ WARN this expression will panic at run-time
-    //~| attempt to subtract with overflow
-    let _e = [5u8][1];
-    //~^ WARN this expression will panic at run-time
-    //~| index out of bounds: the len is 1 but the index is 1
-    black_box(a);
-    black_box(b);
-    black_box(c);
-    black_box(d);
-
     black_box((FOO, FOO));
 }
diff --git a/src/test/compile-fail/const-err2.rs b/src/test/compile-fail/const-err2.rs
index 9889ca1392a..a0648993aac 100644
--- a/src/test/compile-fail/const-err2.rs
+++ b/src/test/compile-fail/const-err2.rs
@@ -18,13 +18,11 @@ fn black_box<T>(_: T) {
 
 fn main() {
     let a = -std::i8::MIN;
-    //~^ ERROR attempt to negate with overflow
+    //~^ ERROR const_err
+    //~| ERROR const_err
     let b = 200u8 + 200u8 + 200u8;
-    //~^ ERROR attempt to add with overflow
     let c = 200u8 * 4;
-    //~^ ERROR attempt to multiply with overflow
     let d = 42u8 - (42u8 + 1);
-    //~^ ERROR attempt to subtract with overflow
     let _e = [5u8][1];
     black_box(a);
     black_box(b);
diff --git a/src/test/compile-fail/const-err3.rs b/src/test/compile-fail/const-err3.rs
new file mode 100644
index 00000000000..636537d1df2
--- /dev/null
+++ b/src/test/compile-fail/const-err3.rs
@@ -0,0 +1,28 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(rustc_attrs)]
+#![deny(const_err)]
+
+fn black_box<T>(_: T) {
+    unimplemented!()
+}
+
+fn main() {
+    let b = 200u8 + 200u8 + 200u8;
+    //~^ ERROR const_err
+    //~| ERROR const_err
+    let c = 200u8 * 4;
+    let d = 42u8 - (42u8 + 1);
+    let _e = [5u8][1];
+    black_box(b);
+    black_box(c);
+    black_box(d);
+}
diff --git a/src/test/compile-fail/const-eval-overflow.rs b/src/test/compile-fail/const-eval-overflow.rs
deleted file mode 100644
index 058a8d0a1bd..00000000000
--- a/src/test/compile-fail/const-eval-overflow.rs
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-#![allow(unused_imports)]
-
-// Note: the relevant lint pass here runs before some of the constant
-// evaluation below (e.g. that performed by trans and llvm), so if you
-// change this warn to a deny, then the compiler will exit before
-// those errors are detected.
-
-#![warn(const_err)]
-
-use std::fmt;
-use std::{i8, i16, i32, i64, isize};
-use std::{u8, u16, u32, u64, usize};
-
-const VALS_I8: (i8, i8, i8, i8) =
-    (-i8::MIN,
-     //~^ ERROR constant evaluation error
-     //~| attempt to negate with overflow
-     i8::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     i8::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     i8::MIN * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_I16: (i16, i16, i16, i16) =
-    (-i16::MIN,
-     //~^ ERROR constant evaluation error
-     //~| attempt to negate with overflow
-     i16::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     i16::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     i16::MIN * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_I32: (i32, i32, i32, i32) =
-    (-i32::MIN,
-     //~^ ERROR constant evaluation error
-     //~| attempt to negate with overflow
-     i32::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     i32::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     i32::MIN * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_I64: (i64, i64, i64, i64) =
-    (-i64::MIN,
-     //~^ ERROR constant evaluation error
-     //~| attempt to negate with overflow
-     i64::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     i64::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     i64::MAX * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_U8: (u8, u8, u8, u8) =
-    ( //~ WARN constant evaluation error: attempt to subtract with overflow
-     -(u8::MIN as i8) as u8,
-     u8::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     u8::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     u8::MAX * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_U16: (u16, u16, u16, u16) =
-    ( //~ WARN constant evaluation error: attempt to subtract with overflow
-     -(u16::MIN as i16) as u16,
-     u16::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     u16::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     u16::MAX * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_U32: (u32, u32, u32, u32) =
-    ( //~ WARN constant evaluation error: attempt to subtract with overflow
-     -(u32::MIN as i32) as u32,
-     u32::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     u32::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     u32::MAX * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-const VALS_U64: (u64, u64, u64, u64) =
-    ( //~ WARN constant evaluation error: attempt to subtract with overflow
-     -(u64::MIN as i64) as u64,
-     u64::MIN - 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to subtract with overflow
-     u64::MAX + 1,
-     //~^ ERROR constant evaluation error
-     //~| attempt to add with overflow
-     u64::MAX * 2,
-     //~^ ERROR constant evaluation error
-     //~| attempt to multiply with overflow
-     );
-
-fn main() {
-    foo(VALS_I8);
-    foo(VALS_I16);
-    foo(VALS_I32);
-    foo(VALS_I64);
-
-    foo(VALS_U8);
-    foo(VALS_U16);
-    foo(VALS_U32);
-    foo(VALS_U64);
-}
-
-fn foo<T:fmt::Debug>(x: T) {
-    println!("{:?}", x);
-}
diff --git a/src/test/compile-fail/const-eval-overflow2.rs b/src/test/compile-fail/const-eval-overflow2.rs
new file mode 100644
index 00000000000..61a653589ff
--- /dev/null
+++ b/src/test/compile-fail/const-eval-overflow2.rs
@@ -0,0 +1,91 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(unused_imports)]
+
+// Note: the relevant lint pass here runs before some of the constant
+// evaluation below (e.g. that performed by trans and llvm), so if you
+// change this warn to a deny, then the compiler will exit before
+// those errors are detected.
+
+#![deny(const_err)]
+
+use std::fmt;
+use std::{i8, i16, i32, i64, isize};
+use std::{u8, u16, u32, u64, usize};
+
+const VALS_I8: (i8,) =
+    (
+     i8::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_I16: (i16,) =
+    (
+     i16::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_I32: (i32,) =
+    (
+     i32::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_I64: (i64,) =
+    (
+     i64::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_U8: (u8,) =
+    (
+     u8::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_U16: (u16,) = (
+     u16::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_U32: (u32,) = (
+     u32::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+const VALS_U64: (u64,) =
+    (
+     u64::MIN - 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to subtract with overflow
+     );
+
+fn main() {
+    foo(VALS_I8);
+    foo(VALS_I16);
+    foo(VALS_I32);
+    foo(VALS_I64);
+
+    foo(VALS_U8);
+    foo(VALS_U16);
+    foo(VALS_U32);
+    foo(VALS_U64);
+}
+
+fn foo<T>(_: T) {
+}
diff --git a/src/test/compile-fail/const-eval-overflow2b.rs b/src/test/compile-fail/const-eval-overflow2b.rs
new file mode 100644
index 00000000000..b2e84486101
--- /dev/null
+++ b/src/test/compile-fail/const-eval-overflow2b.rs
@@ -0,0 +1,91 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(unused_imports)]
+
+// Note: the relevant lint pass here runs before some of the constant
+// evaluation below (e.g. that performed by trans and llvm), so if you
+// change this warn to a deny, then the compiler will exit before
+// those errors are detected.
+
+#![deny(const_err)]
+
+use std::fmt;
+use std::{i8, i16, i32, i64, isize};
+use std::{u8, u16, u32, u64, usize};
+
+const VALS_I8: (i8,) =
+    (
+     i8::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_I16: (i16,) =
+    (
+     i16::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_I32: (i32,) =
+    (
+     i32::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_I64: (i64,) =
+    (
+     i64::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_U8: (u8,) =
+    (
+     u8::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_U16: (u16,) = (
+     u16::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_U32: (u32,) = (
+     u32::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+const VALS_U64: (u64,) =
+    (
+     u64::MAX + 1,
+     //~^ ERROR constant evaluation error
+     //~| attempt to add with overflow
+     );
+
+fn main() {
+    foo(VALS_I8);
+    foo(VALS_I16);
+    foo(VALS_I32);
+    foo(VALS_I64);
+
+    foo(VALS_U8);
+    foo(VALS_U16);
+    foo(VALS_U32);
+    foo(VALS_U64);
+}
+
+fn foo<T>(_: T) {
+}
diff --git a/src/test/compile-fail/const-eval-overflow2c.rs b/src/test/compile-fail/const-eval-overflow2c.rs
new file mode 100644
index 00000000000..c4a8beaf0f0
--- /dev/null
+++ b/src/test/compile-fail/const-eval-overflow2c.rs
@@ -0,0 +1,91 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(unused_imports)]
+
+// Note: the relevant lint pass here runs before some of the constant
+// evaluation below (e.g. that performed by trans and llvm), so if you
+// change this warn to a deny, then the compiler will exit before
+// those errors are detected.
+
+#![deny(const_err)]
+
+use std::fmt;
+use std::{i8, i16, i32, i64, isize};
+use std::{u8, u16, u32, u64, usize};
+
+const VALS_I8: (i8,) =
+    (
+     i8::MIN * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_I16: (i16,) =
+    (
+     i16::MIN * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_I32: (i32,) =
+    (
+     i32::MIN * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_I64: (i64,) =
+    (
+     i64::MIN * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_U8: (u8,) =
+    (
+     u8::MAX * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_U16: (u16,) = (
+     u16::MAX * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_U32: (u32,) = (
+     u32::MAX * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+const VALS_U64: (u64,) =
+    (
+     u64::MAX * 2,
+     //~^ ERROR constant evaluation error
+     //~| attempt to multiply with overflow
+     );
+
+fn main() {
+    foo(VALS_I8);
+    foo(VALS_I16);
+    foo(VALS_I32);
+    foo(VALS_I64);
+
+    foo(VALS_U8);
+    foo(VALS_U16);
+    foo(VALS_U32);
+    foo(VALS_U64);
+}
+
+fn foo<T>(_: T) {
+}
diff --git a/src/test/compile-fail/const-integer-bool-ops.rs b/src/test/compile-fail/const-integer-bool-ops.rs
index 29bc665a22e..3065122af6a 100644
--- a/src/test/compile-fail/const-integer-bool-ops.rs
+++ b/src/test/compile-fail/const-integer-bool-ops.rs
@@ -16,6 +16,7 @@ const X: usize = 42 && 39;
 //~| ERROR mismatched types
 //~| expected usize, found bool
 const ARR: [i32; X] = [99; 34];
+//~^ ERROR constant evaluation error
 
 const X1: usize = 42 || 39;
 //~^ ERROR mismatched types
@@ -25,6 +26,7 @@ const X1: usize = 42 || 39;
 //~| ERROR mismatched types
 //~| expected usize, found bool
 const ARR1: [i32; X1] = [99; 47];
+//~^ ERROR constant evaluation error
 
 const X2: usize = -42 || -39;
 //~^ ERROR mismatched types
@@ -34,6 +36,7 @@ const X2: usize = -42 || -39;
 //~| ERROR mismatched types
 //~| expected usize, found bool
 const ARR2: [i32; X2] = [99; 18446744073709551607];
+//~^ ERROR constant evaluation error
 
 const X3: usize = -42 && -39;
 //~^ ERROR mismatched types
@@ -43,36 +46,43 @@ const X3: usize = -42 && -39;
 //~| ERROR mismatched types
 //~| expected usize, found bool
 const ARR3: [i32; X3] = [99; 6];
+//~^ ERROR constant evaluation error
 
 const Y: usize = 42.0 == 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR: [i32; Y] = [99; 1];
+//~^ ERROR constant evaluation error
 
 const Y1: usize = 42.0 >= 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR1: [i32; Y1] = [99; 1];
+//~^ ERROR constant evaluation error
 
 const Y2: usize = 42.0 <= 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR2: [i32; Y2] = [99; 1];
+//~^ ERROR constant evaluation error
 
 const Y3: usize = 42.0 > 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR3: [i32; Y3] = [99; 0];
+//~^ ERROR constant evaluation error
 
 const Y4: usize = 42.0 < 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR4: [i32; Y4] = [99; 0];
+//~^ ERROR constant evaluation error
 
 const Y5: usize = 42.0 != 42.0;
 //~^ ERROR mismatched types
 //~| expected usize, found bool
 const ARRR5: [i32; Y5] = [99; 0];
+//~^ ERROR constant evaluation error
 
 fn main() {
     let _ = ARR;
diff --git a/src/test/compile-fail/const-len-underflow-subspans.rs b/src/test/compile-fail/const-len-underflow-subspans.rs
index 7f2229b5a65..85cc893aa13 100644
--- a/src/test/compile-fail/const-len-underflow-subspans.rs
+++ b/src/test/compile-fail/const-len-underflow-subspans.rs
@@ -16,6 +16,6 @@ const TWO: usize = 2;
 
 fn main() {
     let a: [i8; ONE - TWO] = unimplemented!();
-    //~^ ERROR constant evaluation error [E0080]
+    //~^ ERROR constant evaluation error
     //~| attempt to subtract with overflow
 }
diff --git a/src/test/compile-fail/const-slice-oob.rs b/src/test/compile-fail/const-slice-oob.rs
index b1b4bfe2d1c..179ea9e853f 100644
--- a/src/test/compile-fail/const-slice-oob.rs
+++ b/src/test/compile-fail/const-slice-oob.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[deny(const_err)]
+
 const FOO: &'static[u32] = &[1, 2, 3];
 const BAR: u32 = FOO[5];
 //~^ ERROR constant evaluation error [E0080]
diff --git a/src/test/compile-fail/const-tup-index-span.rs b/src/test/compile-fail/const-tup-index-span.rs
index b42c440f87d..7596881ef9b 100644
--- a/src/test/compile-fail/const-tup-index-span.rs
+++ b/src/test/compile-fail/const-tup-index-span.rs
@@ -14,6 +14,7 @@ const TUP: (usize,) = 5usize << 64;
 //~^ ERROR mismatched types
 //~| expected tuple, found usize
 const ARR: [i32; TUP.0] = [];
+//~^ ERROR constant evaluation error
 
 fn main() {
 }
diff --git a/src/test/compile-fail/eval-enum.rs b/src/test/compile-fail/eval-enum.rs
index 86cc2c144ac..49f76c532df 100644
--- a/src/test/compile-fail/eval-enum.rs
+++ b/src/test/compile-fail/eval-enum.rs
@@ -8,12 +8,15 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-enum test {
-    div_zero = 1/0, //~ ERROR E0080
-                    //~| attempt to divide by zero
-    rem_zero = 1%0,
-    //~^ ERROR E0080
-    //~| attempt to calculate the remainder with a divisor of zero
+enum Test {
+    DivZero = 1/0,
+    //~^ attempt to divide by zero
+    //~| ERROR constant evaluation error
+    //~| WARN constant evaluation error
+    RemZero = 1%0,
+    //~^ attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
+    //~| WARN constant evaluation error
 }
 
 fn main() {}
diff --git a/src/test/compile-fail/float-int-invalid-const-cast.rs b/src/test/compile-fail/float-int-invalid-const-cast.rs
deleted file mode 100644
index 1f07422e21b..00000000000
--- a/src/test/compile-fail/float-int-invalid-const-cast.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-#![feature(i128_type)]
-#![allow(const_err)] // this test is only about hard errors
-
-use std::{f32, f64};
-
-// Forces evaluation of constants, triggering hard error
-fn force<T>(_: T) {}
-
-fn main() {
-    { const X: u16 = -1. as u16; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = -100. as u128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: i8 = f32::NAN as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: i32 = f32::NAN as i32; force(X); } //~ ERROR constant evaluation error
-    { const X: u64 = f32::NAN as u64; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = f32::NAN as u128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: i8 = f32::INFINITY as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: u32 = f32::INFINITY as u32; force(X); } //~ ERROR constant evaluation error
-    { const X: i128 = f32::INFINITY as i128; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = f32::INFINITY as u128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: u8 = f32::NEG_INFINITY as u8; force(X); } //~ ERROR constant evaluation error
-    { const X: u16 = f32::NEG_INFINITY as u16; force(X); } //~ ERROR constant evaluation error
-    { const X: i64 = f32::NEG_INFINITY as i64; force(X); } //~ ERROR constant evaluation error
-    { const X: i128 = f32::NEG_INFINITY as i128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: i8 = f64::NAN as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: i32 = f64::NAN as i32; force(X); } //~ ERROR constant evaluation error
-    { const X: u64 = f64::NAN as u64; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = f64::NAN as u128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: i8 = f64::INFINITY as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: u32 = f64::INFINITY as u32; force(X); } //~ ERROR constant evaluation error
-    { const X: i128 = f64::INFINITY as i128; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = f64::INFINITY as u128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: u8 = f64::NEG_INFINITY as u8; force(X); } //~ ERROR constant evaluation error
-    { const X: u16 = f64::NEG_INFINITY as u16; force(X); } //~ ERROR constant evaluation error
-    { const X: i64 = f64::NEG_INFINITY as i64; force(X); } //~ ERROR constant evaluation error
-    { const X: i128 = f64::NEG_INFINITY as i128; force(X); } //~ ERROR constant evaluation error
-
-    { const X: u8 = 256. as u8; force(X); } //~ ERROR constant evaluation error
-    { const X: i8 = -129. as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: i8 = 128. as i8; force(X); } //~ ERROR constant evaluation error
-    { const X: i32 = 2147483648. as i32; force(X); } //~ ERROR constant evaluation error
-    { const X: i32 = -2147483904. as i32; force(X); } //~ ERROR constant evaluation error
-    { const X: u32 = 4294967296. as u32; force(X); } //~ ERROR constant evaluation error
-    { const X: u128 = 1e40 as u128; force(X); } //~ ERROR constant evaluation error
-    { const X: i128 = 1e40 as i128; force(X); } //~ ERROR constant evaluation error
-}
diff --git a/src/test/compile-fail/issue-27895.rs b/src/test/compile-fail/issue-27895.rs
index ca8d5a1f704..be76796c5c4 100644
--- a/src/test/compile-fail/issue-27895.rs
+++ b/src/test/compile-fail/issue-27895.rs
@@ -14,8 +14,7 @@ fn main() {
 
     match i {
         0...index => println!("winner"),
-        //~^ ERROR constant evaluation error
-        //~| non-constant path in constant expression
+        //~^ ERROR runtime values cannot be referenced in patterns
         _ => println!("hello"),
     }
 }
diff --git a/src/test/compile-fail/issue-41255.rs b/src/test/compile-fail/issue-41255.rs
index 823ece2bdca..ac85e43cf4f 100644
--- a/src/test/compile-fail/issue-41255.rs
+++ b/src/test/compile-fail/issue-41255.rs
@@ -18,33 +18,33 @@
 fn main() {
     let x = 42.0;
     match x {
-        5.0 => {}, //~ ERROR floating-point cannot be used
+        5.0 => {}, //~ ERROR floating-point types cannot be used in patterns
                    //~| WARNING hard error
-        5.0f32 => {}, //~ ERROR floating-point cannot be used
+        5.0f32 => {}, //~ ERROR floating-point types cannot be used in patterns
                       //~| WARNING hard error
-        -5.0 => {}, //~ ERROR floating-point cannot be used
+        -5.0 => {}, //~ ERROR floating-point types cannot be used in patterns
                     //~| WARNING hard error
-        1.0 .. 33.0 => {}, //~ ERROR floating-point cannot be used
+        1.0 .. 33.0 => {}, //~ ERROR floating-point types cannot be used in patterns
                            //~| WARNING hard error
-                           //~| ERROR floating-point cannot be used
+                           //~| ERROR floating-point types cannot be used in patterns
                            //~| WARNING hard error
-        39.0 ... 70.0 => {}, //~ ERROR floating-point cannot be used
+        39.0 ... 70.0 => {}, //~ ERROR floating-point types cannot be used in patterns
                              //~| WARNING hard error
-                             //~| ERROR floating-point cannot be used
+                             //~| ERROR floating-point types cannot be used in patterns
                              //~| WARNING hard error
         _ => {},
     };
     let y = 5.0;
     // Same for tuples
     match (x, 5) {
-        (3.14, 1) => {}, //~ ERROR floating-point cannot be used
+        (3.14, 1) => {}, //~ ERROR floating-point types cannot be used
                          //~| WARNING hard error
         _ => {},
     }
     // Or structs
     struct Foo { x: f32 };
     match (Foo { x }) {
-        Foo { x: 2.0 } => {}, //~ ERROR floating-point cannot be used
+        Foo { x: 2.0 } => {}, //~ ERROR floating-point types cannot be used
                               //~| WARNING hard error
         _ => {},
     }
diff --git a/src/test/compile-fail/issue-44578.rs b/src/test/compile-fail/issue-44578.rs
index a6ae21c3b54..9efe3d90a93 100644
--- a/src/test/compile-fail/issue-44578.rs
+++ b/src/test/compile-fail/issue-44578.rs
@@ -18,7 +18,7 @@ enum Bar<A, B> {
 }
 
 impl<A: Foo, B: Foo> Foo for Bar<A, B> {
-    const AMT: usize = [A::AMT][(A::AMT > B::AMT) as usize]; //~ ERROR constant evaluation
+    const AMT: usize = [A::AMT][(A::AMT > B::AMT) as usize]; //~ E0080
 }
 
 impl Foo for u8 {
@@ -30,5 +30,5 @@ impl Foo for u16 {
 }
 
 fn main() {
-    println!("{}", <Bar<u16, u8> as Foo>::AMT);
+    println!("{}", <Bar<u16, u8> as Foo>::AMT); //~ E0080
 }
diff --git a/src/test/compile-fail/issue-6804.rs b/src/test/compile-fail/issue-6804.rs
index 2a97945f266..9191dfa155c 100644
--- a/src/test/compile-fail/issue-6804.rs
+++ b/src/test/compile-fail/issue-6804.rs
@@ -12,18 +12,21 @@
 
 #![feature(slice_patterns)]
 #![allow(unused)]
+#![deny(illegal_floating_point_literal_pattern)]
 
 use std::f64::NAN;
 
 fn main() {
     let x = NAN;
     match x {
-        NAN => {}, //~ ERROR floating point constants cannot be used
+        NAN => {}, //~ ERROR floating-point types cannot be used
+        //~^ WARN this was previously accepted by the compiler but is being phased out
         _ => {},
     };
 
     match [x, 1.0] {
-        [NAN, _] => {}, //~ ERROR floating point constants cannot be used
+        [NAN, _] => {}, //~ ERROR floating-point types cannot be used
+        //~^ WARN this was previously accepted by the compiler but is being phased out
         _ => {},
     };
 }
diff --git a/src/test/compile-fail/issue-8460-const.rs b/src/test/compile-fail/issue-8460-const.rs
index d8ab48d1ec3..1d59e75a0f0 100644
--- a/src/test/compile-fail/issue-8460-const.rs
+++ b/src/test/compile-fail/issue-8460-const.rs
@@ -16,42 +16,62 @@ use std::thread;
 fn main() {
     assert!(thread::spawn(move|| { isize::MIN / -1; }).join().is_err());
     //~^ ERROR attempt to divide with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i8::MIN / -1; }).join().is_err());
     //~^ ERROR attempt to divide with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i16::MIN / -1; }).join().is_err());
     //~^ ERROR attempt to divide with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i32::MIN / -1; }).join().is_err());
     //~^ ERROR attempt to divide with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i64::MIN / -1; }).join().is_err());
     //~^ ERROR attempt to divide with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1isize / 0; }).join().is_err());
     //~^ ERROR attempt to divide by zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i8 / 0; }).join().is_err());
     //~^ ERROR attempt to divide by zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i16 / 0; }).join().is_err());
     //~^ ERROR attempt to divide by zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i32 / 0; }).join().is_err());
     //~^ ERROR attempt to divide by zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i64 / 0; }).join().is_err());
     //~^ ERROR attempt to divide by zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { isize::MIN % -1; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i8::MIN % -1; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i16::MIN % -1; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i32::MIN % -1; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { i64::MIN % -1; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with overflow
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1isize % 0; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i8 % 0; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i16 % 0; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i32 % 0; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
     assert!(thread::spawn(move|| { 1i64 % 0; }).join().is_err());
     //~^ ERROR attempt to calculate the remainder with a divisor of zero
+    //~| ERROR constant evaluation error
 }
diff --git a/src/test/compile-fail/lint-exceeding-bitshifts.rs b/src/test/compile-fail/lint-exceeding-bitshifts.rs
index e94d1ff7793..2634157c806 100644
--- a/src/test/compile-fail/lint-exceeding-bitshifts.rs
+++ b/src/test/compile-fail/lint-exceeding-bitshifts.rs
@@ -10,7 +10,7 @@
 
 #![deny(exceeding_bitshifts)]
 #![allow(unused_variables)]
-#![allow(dead_code)]
+#![allow(dead_code, const_err)]
 #![feature(const_indexing)]
 
 fn main() {
@@ -54,21 +54,5 @@ fn main() {
 
       let n = 1u8 << -8; //~ ERROR: bitshift exceeds the type's number of bits
 
-
-      let n = 1u8 << (4+3);
-      let n = 1u8 << (4+4); //~ ERROR: bitshift exceeds the type's number of bits
-
-      #[cfg(target_pointer_width = "32")]
-      const BITS: usize = 32;
-      #[cfg(target_pointer_width = "64")]
-      const BITS: usize = 64;
-
-      let n = 1_isize << BITS; //~ ERROR: bitshift exceeds the type's number of bits
-      let n = 1_usize << BITS; //~ ERROR: bitshift exceeds the type's number of bits
-
-
       let n = 1i8<<(1isize+-1);
-
-      let n = 1i64 >> [63][0];
-      let n = 1i64 >> [64][0]; //~ ERROR: bitshift exceeds the type's number of bits
 }
diff --git a/src/test/compile-fail/lint-exceeding-bitshifts2.rs b/src/test/compile-fail/lint-exceeding-bitshifts2.rs
new file mode 100644
index 00000000000..d95e1b370aa
--- /dev/null
+++ b/src/test/compile-fail/lint-exceeding-bitshifts2.rs
@@ -0,0 +1,27 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(exceeding_bitshifts)]
+#![allow(unused_variables, const_err)]
+#![allow(dead_code)]
+
+fn main() {
+      let n = 1u8 << (4+3);
+      let n = 1u8 << (4+4); //~ ERROR: bitshift exceeds the type's number of bits
+      let n = 1i64 >> [63][0];
+      let n = 1i64 >> [64][0]; // should be linting, needs to wait for const propagation
+
+      #[cfg(target_pointer_width = "32")]
+      const BITS: usize = 32;
+      #[cfg(target_pointer_width = "64")]
+      const BITS: usize = 64;
+      let n = 1_isize << BITS; //~ ERROR: bitshift exceeds the type's number of bits
+      let n = 1_usize << BITS; //~ ERROR: bitshift exceeds the type's number of bits
+}
diff --git a/src/test/compile-fail/lint-type-overflow2.rs b/src/test/compile-fail/lint-type-overflow2.rs
index f7cf8a68d56..9178d8d2f6e 100644
--- a/src/test/compile-fail/lint-type-overflow2.rs
+++ b/src/test/compile-fail/lint-type-overflow2.rs
@@ -17,6 +17,7 @@
 #[rustc_error]
 fn main() { //~ ERROR: compilation successful
     let x2: i8 = --128; //~ warn: literal out of range for i8
+    //~^ WARN constant evaluation error
 
     let x = -3.40282357e+38_f32; //~ warn: literal out of range for f32
     let x =  3.40282357e+38_f32; //~ warn: literal out of range for f32
diff --git a/src/test/compile-fail/non-constant-in-const-path.rs b/src/test/compile-fail/non-constant-in-const-path.rs
index 737f80372de..fe88ab4e117 100644
--- a/src/test/compile-fail/non-constant-in-const-path.rs
+++ b/src/test/compile-fail/non-constant-in-const-path.rs
@@ -12,7 +12,6 @@ fn main() {
     let x = 0;
     match 1 {
         0 ... x => {}
-        //~^ ERROR constant evaluation error
-        //~| non-constant path in constant expression
+        //~^ ERROR runtime values cannot be referenced in patterns
     };
 }
diff --git a/src/test/compile-fail/rfc1445/match-forbidden-without-eq.rs b/src/test/compile-fail/rfc1445/match-forbidden-without-eq.rs
index fd888b659f1..ca9af78dd99 100644
--- a/src/test/compile-fail/rfc1445/match-forbidden-without-eq.rs
+++ b/src/test/compile-fail/rfc1445/match-forbidden-without-eq.rs
@@ -28,7 +28,7 @@ fn main() {
     let x = 0.0;
     match x {
         f32::INFINITY => { }
-        //~^ WARNING floating-point cannot be used in patterns
+        //~^ WARNING floating-point types cannot be used in patterns
         //~| WARNING will become a hard error in a future release
         _ => { }
     }
diff --git a/src/test/compile-fail/const-index-feature-gate.rs b/src/test/run-pass/const-index-feature-gate.rs
index 4f92770df28..2e60634d15e 100644
--- a/src/test/compile-fail/const-index-feature-gate.rs
+++ b/src/test/run-pass/const-index-feature-gate.rs
@@ -9,8 +9,7 @@
 // except according to those terms.
 
 const ARR: [usize; 1] = [2];
-const ARR2: [i32; ARR[0]] = [5, 6]; //~ ERROR E0080
-                                    //~| unstable
+const ARR2: [i32; ARR[0]] = [5, 6];
 
 fn main() {
 }
diff --git a/src/test/run-pass/float-int-invalid-const-cast.rs b/src/test/run-pass/float-int-invalid-const-cast.rs
new file mode 100644
index 00000000000..80ab12482cb
--- /dev/null
+++ b/src/test/run-pass/float-int-invalid-const-cast.rs
@@ -0,0 +1,61 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(i128_type)]
+#![deny(const_err)]
+
+use std::{f32, f64};
+
+// Forces evaluation of constants, triggering hard error
+fn force<T>(_: T) {}
+
+fn main() {
+    { const X: u16 = -1. as u16; force(X); }
+    { const X: u128 = -100. as u128; force(X); }
+
+    { const X: i8 = f32::NAN as i8; force(X); }
+    { const X: i32 = f32::NAN as i32; force(X); }
+    { const X: u64 = f32::NAN as u64; force(X); }
+    { const X: u128 = f32::NAN as u128; force(X); }
+
+    { const X: i8 = f32::INFINITY as i8; force(X); }
+    { const X: u32 = f32::INFINITY as u32; force(X); }
+    { const X: i128 = f32::INFINITY as i128; force(X); }
+    { const X: u128 = f32::INFINITY as u128; force(X); }
+
+    { const X: u8 = f32::NEG_INFINITY as u8; force(X); }
+    { const X: u16 = f32::NEG_INFINITY as u16; force(X); }
+    { const X: i64 = f32::NEG_INFINITY as i64; force(X); }
+    { const X: i128 = f32::NEG_INFINITY as i128; force(X); }
+
+    { const X: i8 = f64::NAN as i8; force(X); }
+    { const X: i32 = f64::NAN as i32; force(X); }
+    { const X: u64 = f64::NAN as u64; force(X); }
+    { const X: u128 = f64::NAN as u128; force(X); }
+
+    { const X: i8 = f64::INFINITY as i8; force(X); }
+    { const X: u32 = f64::INFINITY as u32; force(X); }
+    { const X: i128 = f64::INFINITY as i128; force(X); }
+    { const X: u128 = f64::INFINITY as u128; force(X); }
+
+    { const X: u8 = f64::NEG_INFINITY as u8; force(X); }
+    { const X: u16 = f64::NEG_INFINITY as u16; force(X); }
+    { const X: i64 = f64::NEG_INFINITY as i64; force(X); }
+    { const X: i128 = f64::NEG_INFINITY as i128; force(X); }
+
+    { const X: u8 = 256. as u8; force(X); }
+    { const X: i8 = -129. as i8; force(X); }
+    { const X: i8 = 128. as i8; force(X); }
+    { const X: i32 = 2147483648. as i32; force(X); }
+    { const X: i32 = -2147483904. as i32; force(X); }
+    { const X: u32 = 4294967296. as u32; force(X); }
+    { const X: u128 = 1e40 as u128; force(X); }
+    { const X: i128 = 1e40 as i128; force(X); }
+}
diff --git a/src/test/ui/const-eval/issue-43197.rs b/src/test/ui/const-eval/issue-43197.rs
index 86c5e873df8..e87b2caa49f 100644
--- a/src/test/ui/const-eval/issue-43197.rs
+++ b/src/test/ui/const-eval/issue-43197.rs
@@ -18,4 +18,6 @@ fn main() {
     const X: u32 = 0-1; //~ ERROR constant evaluation error
     const Y: u32 = foo(0-1); //~ ERROR constant evaluation error
     println!("{} {}", X, Y);
+    //~^ ERROR constant evaluation error
+    //~| ERROR constant evaluation error
 }
diff --git a/src/test/ui/const-len-underflow-separate-spans.rs b/src/test/ui/const-len-underflow-separate-spans.rs
index 7582d0efa81..35e3ba9ce09 100644
--- a/src/test/ui/const-len-underflow-separate-spans.rs
+++ b/src/test/ui/const-len-underflow-separate-spans.rs
@@ -15,6 +15,7 @@
 const ONE: usize = 1;
 const TWO: usize = 2;
 const LEN: usize = ONE - TWO;
+//~^ ERROR E0080
 
 fn main() {
     let a: [i8; LEN] = unimplemented!();
diff --git a/src/test/ui/error-codes/E0030.rs b/src/test/ui/error-codes/E0030.rs
index ef3bded4bef..896dd2599bf 100644
--- a/src/test/ui/error-codes/E0030.rs
+++ b/src/test/ui/error-codes/E0030.rs
@@ -10,7 +10,7 @@
 
 
 fn main() {
-    match 5u32 {
+    match 5u32 { //~ ERROR non-exhaustive patterns
         1000 ... 5 => {}
         //~^ ERROR lower range bound must be less than or equal to upper
     }
diff --git a/src/test/ui/error-codes/E0080.rs b/src/test/ui/error-codes/E0080.rs
index 2f199c48e46..6e525d4ea9e 100644
--- a/src/test/ui/error-codes/E0080.rs
+++ b/src/test/ui/error-codes/E0080.rs
@@ -10,9 +10,10 @@
 
 enum Enum {
     X = (1 << 500), //~ ERROR E0080
-    //~| WARNING shift left with overflow
+    //~| shift left with overflow
     Y = (1 / 0) //~ ERROR E0080
-    //~| WARNING divide by zero
+    //~| const_err
+    //~| divide by zero
 }
 
 fn main() {