about summary refs log tree commit diff
path: root/tests/ui
diff options
context:
space:
mode:
authorBoxy <supbscripter@gmail.com>2024-05-29 17:06:50 +0100
committerBoxy <supbscripter@gmail.com>2024-05-29 17:06:54 +0100
commitd5bd4e233d2bb4415138e384e66379eedbc7e76e (patch)
tree48097f82d6b2ccf2d0f8aec6744f377d16f2bd06 /tests/ui
parentda159eb331b27df528185c616b394bb0e1d2a4bd (diff)
downloadrust-d5bd4e233d2bb4415138e384e66379eedbc7e76e.tar.gz
rust-d5bd4e233d2bb4415138e384e66379eedbc7e76e.zip
Partially implement `ConstArgHasType`
Diffstat (limited to 'tests/ui')
-rw-r--r--tests/ui/coherence/negative-coherence/generic_const_type_mismatch.rs1
-rw-r--r--tests/ui/coherence/negative-coherence/generic_const_type_mismatch.stderr14
-rw-r--r--tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.rs19
-rw-r--r--tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.stderr19
-rw-r--r--tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.rs25
-rw-r--r--tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.stderr11
-rw-r--r--tests/ui/const-generics/bad-subst-const-kind.rs6
-rw-r--r--tests/ui/const-generics/bad-subst-const-kind.stderr17
-rw-r--r--tests/ui/const-generics/defaults/doesnt_infer.rs4
-rw-r--r--tests/ui/const-generics/defaults/doesnt_infer.stderr2
-rw-r--r--tests/ui/const-generics/generic_arg_infer/issue-91614.rs2
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs27
-rw-r--r--tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr125
-rw-r--r--tests/ui/const-generics/generic_const_exprs/type_mismatch.rs2
-rw-r--r--tests/ui/const-generics/generic_const_exprs/type_mismatch.stderr14
-rw-r--r--tests/ui/const-generics/issues/issue-105821.rs11
-rw-r--r--tests/ui/const-generics/issues/issue-105821.stderr8
-rw-r--r--tests/ui/consts/eval_type_mismatch.rs17
-rw-r--r--tests/ui/consts/eval_type_mismatch.stderr34
-rw-r--r--tests/ui/inference/issue-83606.rs2
-rw-r--r--tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs3
-rw-r--r--tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr36
22 files changed, 133 insertions, 266 deletions
diff --git a/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.rs b/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.rs
index 89d0b74d403..fa0b0fdc136 100644
--- a/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.rs
+++ b/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.rs
@@ -8,5 +8,6 @@ impl<const N: u8> Trait for [(); N] {}
 //~^ ERROR: mismatched types
 impl<const N: i8> Trait for [(); N] {}
 //~^ ERROR: mismatched types
+//~| ERROR: conflicting implementations of trait `Trait`
 
 fn main() {}
diff --git a/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.stderr b/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.stderr
index d1950254660..d65450845bc 100644
--- a/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.stderr
+++ b/tests/ui/coherence/negative-coherence/generic_const_type_mismatch.stderr
@@ -1,3 +1,12 @@
+error[E0119]: conflicting implementations of trait `Trait` for type `[(); _]`
+  --> $DIR/generic_const_type_mismatch.rs:9:1
+   |
+LL | impl<const N: u8> Trait for [(); N] {}
+   | ----------------------------------- first implementation here
+LL |
+LL | impl<const N: i8> Trait for [(); N] {}
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `[(); _]`
+
 error[E0308]: mismatched types
   --> $DIR/generic_const_type_mismatch.rs:7:34
    |
@@ -10,6 +19,7 @@ error[E0308]: mismatched types
 LL | impl<const N: i8> Trait for [(); N] {}
    |                                  ^ expected `usize`, found `i8`
 
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0308`.
+Some errors have detailed explanations: E0119, E0308.
+For more information about an error, try `rustc --explain E0119`.
diff --git a/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.rs b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.rs
new file mode 100644
index 00000000000..8035fce0914
--- /dev/null
+++ b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.rs
@@ -0,0 +1,19 @@
+//@ check-pass
+#![feature(adt_const_params, lazy_type_alias)]
+//~^ WARN: the feature `adt_const_params` is incomplete
+//~| WARN: the feature `lazy_type_alias` is incomplete
+
+pub type Matrix = [usize; 1];
+const EMPTY_MATRIX: Matrix = [0; 1];
+
+pub struct Walk<const REMAINING: Matrix> {}
+
+impl Walk<EMPTY_MATRIX> {
+    pub const fn new() -> Self {
+        Self {}
+    }
+}
+
+fn main() {
+    let _ = Walk::new();
+}
diff --git a/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.stderr b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.stderr
new file mode 100644
index 00000000000..5c6981077b2
--- /dev/null
+++ b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-1.stderr
@@ -0,0 +1,19 @@
+warning: the feature `adt_const_params` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/alias_const_param_ty-1.rs:2:12
+   |
+LL | #![feature(adt_const_params, lazy_type_alias)]
+   |            ^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #95174 <https://github.com/rust-lang/rust/issues/95174> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+warning: the feature `lazy_type_alias` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/alias_const_param_ty-1.rs:2:30
+   |
+LL | #![feature(adt_const_params, lazy_type_alias)]
+   |                              ^^^^^^^^^^^^^^^
+   |
+   = note: see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
+
+warning: 2 warnings emitted
+
diff --git a/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.rs b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.rs
new file mode 100644
index 00000000000..a576b75341c
--- /dev/null
+++ b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.rs
@@ -0,0 +1,25 @@
+//@ check-pass
+#![feature(adt_const_params)]
+//~^ WARN: the feature `adt_const_params` is incomplete
+
+const EMPTY_MATRIX: <Type as Trait>::Matrix = [0; 1];
+
+pub struct Walk<const REMAINING: <Type as Trait>::Matrix> {}
+
+impl Walk<EMPTY_MATRIX> {
+    pub const fn new() -> Self {
+        Self {}
+    }
+}
+
+pub enum Type {}
+pub trait Trait {
+    type Matrix;
+}
+impl Trait for Type {
+    type Matrix = [usize; 1];
+}
+
+fn main() {
+    let _ = Walk::new();
+}
diff --git a/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.stderr b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.stderr
new file mode 100644
index 00000000000..dbc8ab71636
--- /dev/null
+++ b/tests/ui/const-generics/adt_const_params/alias_const_param_ty-2.stderr
@@ -0,0 +1,11 @@
+warning: the feature `adt_const_params` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/alias_const_param_ty-2.rs:2:12
+   |
+LL | #![feature(adt_const_params)]
+   |            ^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #95174 <https://github.com/rust-lang/rust/issues/95174> for more information
+   = note: `#[warn(incomplete_features)]` on by default
+
+warning: 1 warning emitted
+
diff --git a/tests/ui/const-generics/bad-subst-const-kind.rs b/tests/ui/const-generics/bad-subst-const-kind.rs
index 88f98a54b6e..d5913879191 100644
--- a/tests/ui/const-generics/bad-subst-const-kind.rs
+++ b/tests/ui/const-generics/bad-subst-const-kind.rs
@@ -10,5 +10,7 @@ impl<const N: u64> Q for [u8; N] {
     const ASSOC: usize = 1;
 }
 
-pub fn test() -> [u8; <[u8; 13] as Q>::ASSOC] { todo!() }
-//~^ ERROR: `[u8; 13]: Q` is not satisfied
+pub fn test() -> [u8; <[u8; 13] as Q>::ASSOC] {
+    //~^ ERROR: the constant `13` is not of type `u64`
+    todo!()
+}
diff --git a/tests/ui/const-generics/bad-subst-const-kind.stderr b/tests/ui/const-generics/bad-subst-const-kind.stderr
index 6cf9fa743b3..6725f6762e4 100644
--- a/tests/ui/const-generics/bad-subst-const-kind.stderr
+++ b/tests/ui/const-generics/bad-subst-const-kind.stderr
@@ -1,10 +1,16 @@
-error[E0277]: the trait bound `[u8; 13]: Q` is not satisfied
+error: the constant `13` is not of type `u64`
   --> $DIR/bad-subst-const-kind.rs:13:24
    |
-LL | pub fn test() -> [u8; <[u8; 13] as Q>::ASSOC] { todo!() }
-   |                        ^^^^^^^^ the trait `Q` is not implemented for `[u8; 13]`
+LL | pub fn test() -> [u8; <[u8; 13] as Q>::ASSOC] {
+   |                        ^^^^^^^^ expected `u64`, found `usize`
    |
-   = help: the trait `Q` is implemented for `[u8; N]`
+note: required for `[u8; 13]` to implement `Q`
+  --> $DIR/bad-subst-const-kind.rs:8:20
+   |
+LL | impl<const N: u64> Q for [u8; N] {
+   |      ------------  ^     ^^^^^^^
+   |      |
+   |      unsatisfied trait bound introduced here
 
 error[E0308]: mismatched types
   --> $DIR/bad-subst-const-kind.rs:8:31
@@ -14,5 +20,4 @@ LL | impl<const N: u64> Q for [u8; N] {
 
 error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0277, E0308.
-For more information about an error, try `rustc --explain E0277`.
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/const-generics/defaults/doesnt_infer.rs b/tests/ui/const-generics/defaults/doesnt_infer.rs
index e14c08fc148..016685eee9d 100644
--- a/tests/ui/const-generics/defaults/doesnt_infer.rs
+++ b/tests/ui/const-generics/defaults/doesnt_infer.rs
@@ -3,7 +3,9 @@
 struct Foo<const N: u32 = 2>;
 
 impl<const N: u32> Foo<N> {
-    fn foo() -> Self { loop {} }
+    fn foo() -> Self {
+        loop {}
+    }
 }
 
 fn main() {
diff --git a/tests/ui/const-generics/defaults/doesnt_infer.stderr b/tests/ui/const-generics/defaults/doesnt_infer.stderr
index 93d58603397..1e779f75ce0 100644
--- a/tests/ui/const-generics/defaults/doesnt_infer.stderr
+++ b/tests/ui/const-generics/defaults/doesnt_infer.stderr
@@ -1,5 +1,5 @@
 error[E0282]: type annotations needed for `Foo<_>`
-  --> $DIR/doesnt_infer.rs:11:9
+  --> $DIR/doesnt_infer.rs:13:9
    |
 LL |     let foo = Foo::foo();
    |         ^^^
diff --git a/tests/ui/const-generics/generic_arg_infer/issue-91614.rs b/tests/ui/const-generics/generic_arg_infer/issue-91614.rs
index b45e2cbc737..cfbc5faecd9 100644
--- a/tests/ui/const-generics/generic_arg_infer/issue-91614.rs
+++ b/tests/ui/const-generics/generic_arg_infer/issue-91614.rs
@@ -4,5 +4,5 @@ use std::simd::Mask;
 
 fn main() {
     let y = Mask::<_, _>::splat(false);
-    //~^ ERROR: type annotations needed for
+    //~^ ERROR: type annotations needed
 }
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs
deleted file mode 100644
index cd2dc3f4fe8..00000000000
--- a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// issue: rust-lang/rust#125520
-#![feature(generic_const_exprs)]
-//~^ WARN the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-
-struct Outer<const A: i64, const B: i64>();
-impl<const A: usize, const B: usize> Outer<A, B>
-//~^ ERROR the constant `A` is not of type `i64`
-//~| ERROR the constant `B` is not of type `i64`
-//~| ERROR mismatched types
-//~| ERROR mismatched types
-where
-    [(); A + (B * 2)]:,
-{
-    fn i() -> Self {
-    //~^ ERROR the constant `A` is not of type `i64`
-    //~| ERROR the constant `B` is not of type `i64`
-        Self
-        //~^ ERROR mismatched types
-        //~| ERROR the constant `A` is not of type `i64`
-        //~| ERROR the constant `B` is not of type `i64`
-    }
-}
-
-fn main() {
-    Outer::<1, 1>::o();
-    //~^ ERROR no function or associated item named `o` found for struct `Outer` in the current scope
-}
diff --git a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr b/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr
deleted file mode 100644
index 2dbd69fd3bc..00000000000
--- a/tests/ui/const-generics/generic_const_exprs/ice-125520-layout-mismatch-mulwithoverflow.stderr
+++ /dev/null
@@ -1,125 +0,0 @@
-warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:2:12
-   |
-LL | #![feature(generic_const_exprs)]
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error: the constant `A` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                      ^^^^^^^^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |              ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error: the constant `B` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:38
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                      ^^^^^^^^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error: the constant `A` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15
-   |
-LL |     fn i() -> Self {
-   |               ^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |              ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error: the constant `B` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:14:15
-   |
-LL |     fn i() -> Self {
-   |               ^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error[E0308]: mismatched types
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   | ---------------------------------------- `Outer` defines a struct constructor here, which should be called
-...
-LL |     fn i() -> Self {
-   |               ---- expected `Outer<A, B>` because of return type
-...
-LL |         Self
-   |         ^^^^ expected `Outer<A, B>`, found struct constructor
-   |
-   = note:          expected struct `Outer<A, B>`
-           found struct constructor `fn() -> Outer<A, B> {Outer::<A, B>}`
-help: use parentheses to construct this tuple struct
-   |
-LL |         Self()
-   |             ++
-
-error: the constant `A` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
-   |
-LL |         Self
-   |         ^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:14
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |              ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error: the constant `B` is not of type `i64`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:17:9
-   |
-LL |         Self
-   |         ^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:5:28
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   |                            ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error[E0599]: no function or associated item named `o` found for struct `Outer` in the current scope
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:25:20
-   |
-LL | struct Outer<const A: i64, const B: i64>();
-   | ---------------------------------------- function or associated item `o` not found for this struct
-...
-LL |     Outer::<1, 1>::o();
-   |                    ^ function or associated item not found in `Outer<1, 1>`
-
-error[E0308]: mismatched types
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:44
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                            ^ expected `i64`, found `usize`
-
-error[E0308]: mismatched types
-  --> $DIR/ice-125520-layout-mismatch-mulwithoverflow.rs:6:47
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                               ^ expected `i64`, found `usize`
-
-error: aborting due to 10 previous errors; 1 warning emitted
-
-Some errors have detailed explanations: E0308, E0599.
-For more information about an error, try `rustc --explain E0308`.
diff --git a/tests/ui/const-generics/generic_const_exprs/type_mismatch.rs b/tests/ui/const-generics/generic_const_exprs/type_mismatch.rs
index 285f9dee6c2..6b0d9e047db 100644
--- a/tests/ui/const-generics/generic_const_exprs/type_mismatch.rs
+++ b/tests/ui/const-generics/generic_const_exprs/type_mismatch.rs
@@ -10,7 +10,7 @@ impl<const N: u64> Q for [u8; N] {}
 //~| ERROR mismatched types
 
 pub fn q_user() -> [u8; <[u8; 13] as Q>::ASSOC] {}
-//~^ ERROR `[u8; 13]: Q` is not satisfied
+//~^ ERROR the constant `13` is not of type `u64`
 //~| ERROR mismatched types
 
 pub fn main() {}
diff --git a/tests/ui/const-generics/generic_const_exprs/type_mismatch.stderr b/tests/ui/const-generics/generic_const_exprs/type_mismatch.stderr
index a63a56dd675..bb6d650b7ab 100644
--- a/tests/ui/const-generics/generic_const_exprs/type_mismatch.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/type_mismatch.stderr
@@ -7,13 +7,19 @@ LL |     const ASSOC: usize;
 LL | impl<const N: u64> Q for [u8; N] {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `ASSOC` in implementation
 
-error[E0277]: the trait bound `[u8; 13]: Q` is not satisfied
+error: the constant `13` is not of type `u64`
   --> $DIR/type_mismatch.rs:12:26
    |
 LL | pub fn q_user() -> [u8; <[u8; 13] as Q>::ASSOC] {}
-   |                          ^^^^^^^^ the trait `Q` is not implemented for `[u8; 13]`
+   |                          ^^^^^^^^ expected `u64`, found `usize`
    |
-   = help: the trait `Q` is implemented for `[u8; N]`
+note: required for `[u8; 13]` to implement `Q`
+  --> $DIR/type_mismatch.rs:8:20
+   |
+LL | impl<const N: u64> Q for [u8; N] {}
+   |      ------------  ^     ^^^^^^^
+   |      |
+   |      unsatisfied trait bound introduced here
 
 error[E0308]: mismatched types
   --> $DIR/type_mismatch.rs:12:20
@@ -31,5 +37,5 @@ LL | impl<const N: u64> Q for [u8; N] {}
 
 error: aborting due to 4 previous errors
 
-Some errors have detailed explanations: E0046, E0277, E0308.
+Some errors have detailed explanations: E0046, E0308.
 For more information about an error, try `rustc --explain E0046`.
diff --git a/tests/ui/const-generics/issues/issue-105821.rs b/tests/ui/const-generics/issues/issue-105821.rs
index e55da461605..ecbae4d9f35 100644
--- a/tests/ui/const-generics/issues/issue-105821.rs
+++ b/tests/ui/const-generics/issues/issue-105821.rs
@@ -1,10 +1,7 @@
-//@ failure-status: 101
-//@ known-bug: rust-lang/rust#125451
-//@ normalize-stderr-test "note: .*\n\n" -> ""
-//@ normalize-stderr-test "thread 'rustc' panicked.*\n.*\n" -> ""
-//@ normalize-stderr-test "(error: internal compiler error: [^:]+):\d+:\d+: " -> "$1:LL:CC: "
-//@ normalize-stderr-test "delayed at .*" -> ""
-//@ rustc-env:RUST_BACKTRACE=0
+//@ check-pass
+// If this test starts failing because it ICEs due to not being able to convert a `ReErased` to
+// something then feel free to just convert this to a known-bug. I'm pretty sure this is still
+// a failing test, we just started masking the bug.
 
 #![allow(incomplete_features)]
 #![feature(adt_const_params, generic_const_exprs)]
diff --git a/tests/ui/const-generics/issues/issue-105821.stderr b/tests/ui/const-generics/issues/issue-105821.stderr
deleted file mode 100644
index 1f0fc0f33ce..00000000000
--- a/tests/ui/const-generics/issues/issue-105821.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: internal compiler error: compiler/rustc_borrowck/src/universal_regions.rs:LL:CC: cannot convert `'{erased}` to a region vid
-
-query stack during panic:
-#0 [mir_borrowck] borrow-checking `<impl at $DIR/issue-105821.rs:21:1: 23:24>::R`
-#1 [analysis] running analysis passes on this crate
-end of query stack
-error: aborting due to 1 previous error
-
diff --git a/tests/ui/consts/eval_type_mismatch.rs b/tests/ui/consts/eval_type_mismatch.rs
deleted file mode 100644
index 3d821ab538e..00000000000
--- a/tests/ui/consts/eval_type_mismatch.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#![feature(generic_const_exprs)]
-#![allow(incomplete_features)]
-
-struct Outer<const A: i64, const B: usize>();
-impl<const A: usize, const B: usize> Outer<A, B>
-//~^ ERROR: `A` is not of type `i64`
-//~| ERROR: mismatched types
-where
-    [(); A + (B * 2)]:,
-{
-    fn o() {}
-}
-
-fn main() {
-    Outer::<1, 1>::o();
-    //~^ ERROR: no function or associated item named `o` found
-}
diff --git a/tests/ui/consts/eval_type_mismatch.stderr b/tests/ui/consts/eval_type_mismatch.stderr
deleted file mode 100644
index 38d6e33d406..00000000000
--- a/tests/ui/consts/eval_type_mismatch.stderr
+++ /dev/null
@@ -1,34 +0,0 @@
-error: the constant `A` is not of type `i64`
-  --> $DIR/eval_type_mismatch.rs:5:38
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                      ^^^^^^^^^^^ expected `i64`, found `usize`
-   |
-note: required by a bound in `Outer`
-  --> $DIR/eval_type_mismatch.rs:4:14
-   |
-LL | struct Outer<const A: i64, const B: usize>();
-   |              ^^^^^^^^^^^^ required by this bound in `Outer`
-
-error[E0599]: no function or associated item named `o` found for struct `Outer<1, 1>` in the current scope
-  --> $DIR/eval_type_mismatch.rs:15:20
-   |
-LL | struct Outer<const A: i64, const B: usize>();
-   | ------------------------------------------ function or associated item `o` not found for this struct
-...
-LL |     Outer::<1, 1>::o();
-   |                    ^ function or associated item not found in `Outer<1, 1>`
-   |
-   = note: the function or associated item was found for
-           - `Outer<A, B>`
-
-error[E0308]: mismatched types
-  --> $DIR/eval_type_mismatch.rs:5:44
-   |
-LL | impl<const A: usize, const B: usize> Outer<A, B>
-   |                                            ^ expected `i64`, found `usize`
-
-error: aborting due to 3 previous errors
-
-Some errors have detailed explanations: E0308, E0599.
-For more information about an error, try `rustc --explain E0308`.
diff --git a/tests/ui/inference/issue-83606.rs b/tests/ui/inference/issue-83606.rs
index 4454b5e60f0..e6e291c3a92 100644
--- a/tests/ui/inference/issue-83606.rs
+++ b/tests/ui/inference/issue-83606.rs
@@ -6,5 +6,5 @@ fn foo<const N: usize>(_: impl std::fmt::Display) -> [usize; N] {
 
 fn main() {
     let _ = foo("foo");
-    //~^ ERROR type annotations needed for `[usize; _]`
+    //~^ ERROR type annotations needed
 }
diff --git a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs
index 4d1cd4332fe..f89a463bc58 100644
--- a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs
+++ b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs
@@ -7,8 +7,7 @@ struct S<const L: usize>;
 
 impl<const N: i32> Copy for S<N> {}
 //~^ ERROR: mismatched types
-//~| ERROR: the trait bound `S<N>: Clone` is not satisfied
-//~| ERROR: the constant `N` is not of type `usize`
 impl<const M: usize> Copy for S<M> {}
+//~^ ERROR: conflicting implementations of trait `Copy` for type `S<_>`
 
 fn main() {}
diff --git a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr
index 716a4787948..1dac58e1f69 100644
--- a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr
+++ b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr
@@ -1,29 +1,11 @@
-error[E0277]: the trait bound `S<N>: Clone` is not satisfied
-  --> $DIR/bad-const-wf-doesnt-specialize.rs:8:29
+error[E0119]: conflicting implementations of trait `Copy` for type `S<_>`
+  --> $DIR/bad-const-wf-doesnt-specialize.rs:10:1
    |
 LL | impl<const N: i32> Copy for S<N> {}
-   |                             ^^^^ the trait `Clone` is not implemented for `S<N>`
-   |
-   = help: the trait `Clone` is implemented for `S<L>`
-note: required by a bound in `Copy`
-  --> $SRC_DIR/core/src/marker.rs:LL:COL
-help: consider annotating `S<N>` with `#[derive(Clone)]`
-   |
-LL + #[derive(Clone)]
-LL | struct S<const L: usize>;
-   |
-
-error: the constant `N` is not of type `usize`
-  --> $DIR/bad-const-wf-doesnt-specialize.rs:8:29
-   |
-LL | impl<const N: i32> Copy for S<N> {}
-   |                             ^^^^ expected `usize`, found `i32`
-   |
-note: required by a bound in `S`
-  --> $DIR/bad-const-wf-doesnt-specialize.rs:6:10
-   |
-LL | struct S<const L: usize>;
-   |          ^^^^^^^^^^^^^^ required by this bound in `S`
+   | -------------------------------- first implementation here
+LL |
+LL | impl<const M: usize> Copy for S<M> {}
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `S<_>`
 
 error[E0308]: mismatched types
   --> $DIR/bad-const-wf-doesnt-specialize.rs:8:31
@@ -31,7 +13,7 @@ error[E0308]: mismatched types
 LL | impl<const N: i32> Copy for S<N> {}
    |                               ^ expected `usize`, found `i32`
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0277, E0308.
-For more information about an error, try `rustc --explain E0277`.
+Some errors have detailed explanations: E0119, E0308.
+For more information about an error, try `rustc --explain E0119`.