about summary refs log tree commit diff
path: root/tests/ui/rfcs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/rfcs')
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.qualified.stderr16
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.rs12
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.stderr33
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.qualified.stderr35
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.rs7
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.unqualified.stderr33
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.stderr16
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr61
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-in-impl.stderr25
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-chain.stderr41
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr55
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr6
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr41
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr20
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.stderr8
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail-2.stderr26
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr15
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr11
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.precise.stderr136
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.stock.stderr77
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.rs58
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.stderr23
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr12
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs1
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr12
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr8
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr111
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr22
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/minicore.stderr9
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params-cross-crate.stderr16
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params.stderr16
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.rs10
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.stderr74
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.rs1
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.stderr19
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.rs5
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.stderr37
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/generic-bound.stderr16
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr2
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs4
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs1
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr25
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.rs2
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.stderr14
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.rs2
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr22
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr22
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr23
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr17
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.rs7
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr39
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yy.stderr25
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail.rs4
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.rs5
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.stderr24
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr11
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/trait-default-body-stability.stderr109
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.rs4
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.stderr68
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.rs3
-rw-r--r--tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.stderr13
72 files changed, 854 insertions, 815 deletions
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.qualified.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.qualified.stderr
index 3aec4383eab..1af0f481943 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.qualified.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.qualified.stderr
@@ -7,16 +7,20 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `T: Trait` is not satisfied
-  --> $DIR/assoc-type-const-bound-usage-0.rs:21:6
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-0.rs:21:5
    |
 LL |     <T as /* FIXME: ~const */ Trait>::Assoc::func()
-   |      ^ the trait `Trait` is not implemented for `T`
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
    |
-help: consider further restricting this bound
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-0.rs:8:1
    |
-LL | const fn qualified<T: ~const Trait + Trait>() -> i32 {
-   |                                    +++++++
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.rs
index eecd6e6109c..4399ae2d1be 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.rs
@@ -1,9 +1,7 @@
-// FIXME(effects): Collapse the revisions into one once we support `<Ty as ~const Trait>::Proj`.
-//@ revisions: unqualified qualified
-//@[unqualified] check-pass
-//@[qualified] known-bug: unknown
+//@ known-bug: unknown
 
-#![feature(const_trait_impl, effects)] //[unqualified]~ WARN the feature `effects` is incomplete
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait Trait {
@@ -11,14 +9,12 @@ trait Trait {
     fn func() -> i32;
 }
 
-#[cfg(unqualified)]
 const fn unqualified<T: ~const Trait>() -> i32 {
     T::Assoc::func()
 }
 
-#[cfg(qualified)]
 const fn qualified<T: ~const Trait>() -> i32 {
-    <T as /* FIXME: ~const */ Trait>::Assoc::func()
+    <T as Trait>::Assoc::func()
 }
 
 fn main() {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.stderr
new file mode 100644
index 00000000000..919b5b6cd91
--- /dev/null
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-0.stderr
@@ -0,0 +1,33 @@
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-0.rs:13:5
+   |
+LL |     T::Assoc::func()
+   |     ^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
+   |
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-0.rs:6:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
+
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-0.rs:17:5
+   |
+LL |     <T as Trait>::Assoc::func()
+   |     ^^^^^^^^^^^^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
+   |
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-0.rs:6:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.qualified.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.qualified.stderr
index 10e467da952..f8bab2d4c27 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.qualified.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.qualified.stderr
@@ -1,14 +1,33 @@
-error[E0277]: the trait bound `T: Trait` is not satisfied
-  --> $DIR/assoc-type-const-bound-usage-1.rs:23:43
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-1.rs:16:44
    |
-LL | fn qualified<T: const Trait>() -> Type<{ <T as /* FIXME: const */ Trait>::Assoc::func() }> {
-   |                                           ^ the trait `Trait` is not implemented for `T`
+LL | fn unqualified<T: const Trait>() -> Type<{ T::Assoc::func() }> {
+   |                                            ^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
    |
-help: consider further restricting this bound
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-1.rs:8:1
    |
-LL | fn qualified<T: const Trait + Trait>() -> Type<{ <T as /* FIXME: const */ Trait>::Assoc::func() }> {
-   |                             +++++++
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
 
-error: aborting due to 1 previous error
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-1.rs:20:42
+   |
+LL | fn qualified<T: const Trait>() -> Type<{ <T as Trait>::Assoc::func() }> {
+   |                                          ^^^^^^^^^^^^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
+   |
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-1.rs:8:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.rs
index 8213dae1369..5394c3f2d07 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.rs
@@ -1,7 +1,6 @@
 // FIXME(effects): Collapse the revisions into one once we support `<Ty as const Trait>::Proj`.
 //@ revisions: unqualified qualified
-//@[unqualified] check-pass
-//@[qualified] known-bug: unknown
+//@known-bug: unknown
 
 #![feature(const_trait_impl, effects, generic_const_exprs)]
 #![allow(incomplete_features)]
@@ -14,13 +13,11 @@ trait Trait {
 
 struct Type<const N: i32>;
 
-#[cfg(unqualified)]
 fn unqualified<T: const Trait>() -> Type<{ T::Assoc::func() }> {
     Type
 }
 
-#[cfg(qualified)]
-fn qualified<T: const Trait>() -> Type<{ <T as /* FIXME: const */ Trait>::Assoc::func() }> {
+fn qualified<T: const Trait>() -> Type<{ <T as Trait>::Assoc::func() }> {
     Type
 }
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.unqualified.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.unqualified.stderr
new file mode 100644
index 00000000000..f8bab2d4c27
--- /dev/null
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type-const-bound-usage-1.unqualified.stderr
@@ -0,0 +1,33 @@
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-1.rs:16:44
+   |
+LL | fn unqualified<T: const Trait>() -> Type<{ T::Assoc::func() }> {
+   |                                            ^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
+   |
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-1.rs:8:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
+
+error[E0277]: the trait bound `Trait::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type-const-bound-usage-1.rs:20:42
+   |
+LL | fn qualified<T: const Trait>() -> Type<{ <T as Trait>::Assoc::func() }> {
+   |                                          ^^^^^^^^^^^^^^^^^^^ the trait `Compat` is not implemented for `Trait::{synthetic#0}`
+   |
+note: required by a bound in `Trait::func`
+  --> $DIR/assoc-type-const-bound-usage-1.rs:8:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Trait::func`
+...
+LL |     fn func() -> i32;
+   |        ---- required by a bound in this associated function
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.rs
index 645fff4e014..b542ec4e5d0 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.rs
@@ -32,12 +32,13 @@ trait Foo {
 }
 
 impl const Foo for NonConstAdd {
-    type Bar = NonConstAdd; //~ ERROR the trait bound `NonConstAdd: ~const Add` is not satisfied
+    type Bar = NonConstAdd; // FIXME(effects) ERROR the trait bound `NonConstAdd: ~const Add` is not satisfied
 }
 
 #[const_trait]
 trait Baz {
     type Qux: Add;
+    //~^ ERROR the trait bound
 }
 
 impl const Baz for NonConstAdd {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.stderr
index cc3abea25eb..333215adef2 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/assoc-type.stderr
@@ -7,18 +7,16 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `NonConstAdd: ~const Add` is not satisfied
-  --> $DIR/assoc-type.rs:35:16
+error[E0277]: the trait bound `Add::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/assoc-type.rs:40:15
    |
-LL |     type Bar = NonConstAdd;
-   |                ^^^^^^^^^^^ the trait `~const Add` is not implemented for `NonConstAdd`
+LL |     type Qux: Add;
+   |               ^^^ the trait `Compat` is not implemented for `Add::{synthetic#0}`
    |
-   = help: the trait `Add` is implemented for `NonConstAdd`
-note: required by a bound in `Foo::Bar`
-  --> $DIR/assoc-type.rs:31:15
+help: consider further restricting the associated type
    |
-LL |     type Bar: ~const Add;
-   |               ^^^^^^^^^^ required by this bound in `Foo::Bar`
+LL | trait Baz where Add::{synthetic#0}: Compat {
+   |           ++++++++++++++++++++++++++++++++
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr
index 0e4dcf0f302..336ee01dc8d 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr
@@ -7,13 +7,21 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `u32: ~const Plus` is not satisfied
+error[E0277]: the trait bound `Runtime: ~const Compat` is not satisfied
   --> $DIR/call-const-trait-method-fail.rs:25:5
    |
 LL |     a.plus(b)
-   |     ^ the trait `~const Plus` is not implemented for `u32`
+   |     ^ the trait `~const Compat` is not implemented for `Runtime`
    |
-   = help: the trait `Plus` is implemented for `u32`
+   = help: the trait `Compat` is implemented for `Runtime`
+note: required by a bound in `Plus::plus`
+  --> $DIR/call-const-trait-method-fail.rs:3:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Plus::plus`
+LL | pub trait Plus {
+LL |     fn plus(self, rhs: Self) -> Self;
+   |        ---- required by a bound in this associated function
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr
index 22e8e692752..bf455a714a3 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr
@@ -1,14 +1,36 @@
+error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
+  --> $DIR/call-const-trait-method-pass.rs:7:12
+   |
+LL | impl const std::ops::Add for Int {
+   |            ^^^^^^^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]`
+  --> $DIR/call-const-trait-method-pass.rs:15:12
+   |
+LL | impl const PartialEq for Int {
+   |            ^^^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error[E0049]: method `plus` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/call-const-trait-method-pass.rs:24:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ found 1 const parameter
+LL | pub trait Plus {
+LL |     fn plus(self, rhs: Self) -> Self;
+   |            - expected 0 const parameters
+
 error[E0015]: cannot call non-const operator in constants
   --> $DIR/call-const-trait-method-pass.rs:39:22
    |
 LL | const ADD_INT: Int = Int(1i32) + Int(2i32);
    |                      ^^^^^^^^^^^^^^^^^^^^^
    |
-note: impl defined here, but it is not `const`
-  --> $DIR/call-const-trait-method-pass.rs:7:1
-   |
-LL | impl const std::ops::Add for Int {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: calls in constants are limited to constant functions, tuple structs and tuple variants
 help: add `#![feature(effects)]` to the crate attributes to enable
    |
@@ -16,6 +38,30 @@ LL + #![feature(effects)]
    |
 
 error[E0015]: cannot call non-const fn `<i32 as Plus>::plus` in constant functions
+  --> $DIR/call-const-trait-method-pass.rs:11:20
+   |
+LL |         Int(self.0.plus(rhs.0))
+   |                    ^^^^^^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error[E0015]: cannot call non-const fn `<Int as PartialEq>::eq` in constant functions
+  --> $DIR/call-const-trait-method-pass.rs:20:15
+   |
+LL |         !self.eq(other)
+   |               ^^^^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error[E0015]: cannot call non-const fn `<i32 as Plus>::plus` in constant functions
   --> $DIR/call-const-trait-method-pass.rs:36:7
    |
 LL |     a.plus(b)
@@ -27,6 +73,7 @@ help: add `#![feature(effects)]` to the crate attributes to enable
 LL + #![feature(effects)]
    |
 
-error: aborting due to 2 previous errors
+error: aborting due to 7 previous errors
 
-For more information about this error, try `rustc --explain E0015`.
+Some errors have detailed explanations: E0015, E0049.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-in-impl.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-in-impl.stderr
index 12027c4d713..5cd274c6c5a 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-in-impl.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-in-impl.stderr
@@ -4,5 +4,28 @@ error: `~const` can only be applied to `#[const_trait]` traits
 LL | impl<T: ~const PartialEq> const MyPartialEq for T {
    |                ^^^^^^^^^
 
-error: aborting due to 1 previous error
+error[E0049]: method `eq` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/call-generic-in-impl.rs:5:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ found 1 const parameter
+LL | trait MyPartialEq {
+LL |     fn eq(&self, other: &Self) -> bool;
+   |          - expected 0 const parameters
+
+error[E0015]: cannot call non-const fn `<T as PartialEq>::eq` in constant functions
+  --> $DIR/call-generic-in-impl.rs:12:9
+   |
+LL |         PartialEq::eq(self, other)
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error: aborting due to 3 previous errors
 
+Some errors have detailed explanations: E0015, E0049.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-chain.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-chain.stderr
index 36c7a654430..2e1feccd0f3 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-chain.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-chain.stderr
@@ -16,15 +16,6 @@ LL | impl const PartialEq for S {
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/call-generic-method-chain.rs:10:6
-   |
-LL | impl const PartialEq for S {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/call-generic-method-chain.rs:19:32
    |
@@ -37,35 +28,5 @@ error: `~const` can only be applied to `#[const_trait]` traits
 LL | const fn equals_self_wrapper<T: ~const PartialEq>(t: &T) -> bool {
    |                                        ^^^^^^^^^
 
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-chain.rs:27:22
-   |
-LL | pub const EQ: bool = equals_self_wrapper(&S);
-   |                      ^^^^^^^^^^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-chain.rs:10:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-chain.rs:15:10
-   |
-LL |         !self.eq(other)
-   |          ^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-chain.rs:10:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error: aborting due to 6 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284.
-For more information about an error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr
index 320e420b80a..d3b00963686 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr
@@ -16,15 +16,6 @@ LL | impl const PartialEq for S {
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/call-generic-method-dup-bound.rs:8:6
-   |
-LL | impl const PartialEq for S {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/call-generic-method-dup-bound.rs:19:44
    |
@@ -37,49 +28,5 @@ error: `~const` can only be applied to `#[const_trait]` traits
 LL | const fn equals_self2<T: A + ~const PartialEq>(t: &T) -> bool {
    |                                     ^^^^^^^^^
 
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-dup-bound.rs:30:22
-   |
-LL | pub const EQ: bool = equals_self(&S) && equals_self2(&S);
-   |                      ^^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-dup-bound.rs:8:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-dup-bound.rs:30:41
-   |
-LL | pub const EQ: bool = equals_self(&S) && equals_self2(&S);
-   |                                         ^^^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-dup-bound.rs:8:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-dup-bound.rs:13:10
-   |
-LL |         !self.eq(other)
-   |          ^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-dup-bound.rs:8:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error: aborting due to 7 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284.
-For more information about an error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs
index 222bff2db88..74e33ca72ff 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs
@@ -21,6 +21,7 @@ const fn equals_self<T: ~const Foo>(t: &T) -> bool {
 // it not using the impl.
 
 pub const EQ: bool = equals_self(&S);
-//~^ ERROR: the trait bound `S: const Foo` is not satisfied
+//~^ ERROR: the trait bound `Runtime: const Compat` is not satisfied
+// FIXME(effects) diagnostic
 
 fn main() {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr
index fa59e5ee03d..d48ee9c95f5 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr
@@ -7,15 +7,15 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `S: const Foo` is not satisfied
+error[E0277]: the trait bound `Runtime: const Compat` is not satisfied
   --> $DIR/call-generic-method-nonconst.rs:23:34
    |
 LL | pub const EQ: bool = equals_self(&S);
-   |                      ----------- ^^ the trait `const Foo` is not implemented for `S`
+   |                      ----------- ^^ the trait `const Compat` is not implemented for `Runtime`
    |                      |
    |                      required by a bound introduced by this call
    |
-   = help: the trait `Foo` is implemented for `S`
+   = help: the trait `Compat` is implemented for `Runtime`
 note: required by a bound in `equals_self`
   --> $DIR/call-generic-method-nonconst.rs:16:25
    |
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr
index 6b9d290839e..cab8d6d7611 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr
@@ -16,50 +16,11 @@ LL | impl const PartialEq for S {
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/call-generic-method-pass.rs:10:6
-   |
-LL | impl const PartialEq for S {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/call-generic-method-pass.rs:19:32
    |
 LL | const fn equals_self<T: ~const PartialEq>(t: &T) -> bool {
    |                                ^^^^^^^^^
 
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-pass.rs:23:22
-   |
-LL | pub const EQ: bool = equals_self(&S);
-   |                      ^^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-pass.rs:10:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/call-generic-method-pass.rs:15:10
-   |
-LL |         !self.eq(other)
-   |          ^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/call-generic-method-pass.rs:10:12
-   |
-LL | impl const PartialEq for S {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error: aborting due to 5 previous errors; 1 warning emitted
+error: aborting due to 2 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284.
-For more information about an error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr
index 8916450df2d..9c1c8df8da4 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr
@@ -1,3 +1,21 @@
+error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
+  --> $DIR/const-and-non-const-impl.rs:7:12
+   |
+LL | impl const std::ops::Add for i32 {
+   |            ^^^^^^^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
+  --> $DIR/const-and-non-const-impl.rs:23:12
+   |
+LL | impl const std::ops::Add for Int {
+   |            ^^^^^^^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error[E0119]: conflicting implementations of trait `Add` for type `Int`
   --> $DIR/const-and-non-const-impl.rs:23:1
    |
@@ -19,7 +37,7 @@ LL | impl const std::ops::Add for i32 {
    |
    = note: define and implement a trait or new type instead
 
-error: aborting due to 2 previous errors
+error: aborting due to 4 previous errors
 
 Some errors have detailed explanations: E0117, E0119.
 For more information about an error, try `rustc --explain E0117`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.rs
index 0025449c492..099cf0b00d3 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.rs
@@ -1,4 +1,5 @@
-#![feature(const_trait_impl)]
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait MyTrait {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.stderr
index db48c170d1c..42964b9774e 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-bound-on-not-const-associated-fn.stderr
@@ -1,23 +1,23 @@
 error: `~const` is not allowed here
-  --> $DIR/const-bound-on-not-const-associated-fn.rs:9:40
+  --> $DIR/const-bound-on-not-const-associated-fn.rs:10:40
    |
 LL |     fn do_something_else() where Self: ~const MyTrait;
    |                                        ^^^^^^
    |
 note: this function is not `const`, so it cannot have `~const` trait bounds
-  --> $DIR/const-bound-on-not-const-associated-fn.rs:9:8
+  --> $DIR/const-bound-on-not-const-associated-fn.rs:10:8
    |
 LL |     fn do_something_else() where Self: ~const MyTrait;
    |        ^^^^^^^^^^^^^^^^^
 
 error: `~const` is not allowed here
-  --> $DIR/const-bound-on-not-const-associated-fn.rs:20:32
+  --> $DIR/const-bound-on-not-const-associated-fn.rs:21:32
    |
 LL |     pub fn foo(&self) where T: ~const MyTrait {
    |                                ^^^^^^
    |
 note: this function is not `const`, so it cannot have `~const` trait bounds
-  --> $DIR/const-bound-on-not-const-associated-fn.rs:20:12
+  --> $DIR/const-bound-on-not-const-associated-fn.rs:21:12
    |
 LL |     pub fn foo(&self) where T: ~const MyTrait {
    |            ^^^
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr
index fb2e66db1d4..507ceaae2ea 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr
@@ -1,3 +1,12 @@
+error[E0049]: method `a` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-closure-trait-method-fail.rs:5:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ found 1 const parameter
+LL | trait Tr {
+LL |     fn a(self) -> i32;
+   |         - expected 0 const parameters
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-closure-trait-method-fail.rs:14:39
    |
@@ -20,6 +29,7 @@ help: add `#![feature(effects)]` to the crate attributes to enable
 LL + #![feature(effects)]
    |
 
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0015`.
+Some errors have detailed explanations: E0015, E0049.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method.stderr
index dede411e69c..2a54cd5d7f6 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-closure-trait-method.stderr
@@ -1,3 +1,12 @@
+error[E0049]: method `a` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-closure-trait-method.rs:5:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ found 1 const parameter
+LL | trait Tr {
+LL |     fn a(self) -> i32;
+   |         - expected 0 const parameters
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-closure-trait-method.rs:14:39
    |
@@ -20,6 +29,7 @@ help: add `#![feature(effects)]` to the crate attributes to enable
 LL + #![feature(effects)]
    |
 
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0015`.
+Some errors have detailed explanations: E0015, E0049.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr
index 8e04d0bd20d..32bc0093347 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr
@@ -7,13 +7,21 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `NonConstImpl: ~const ConstDefaultFn` is not satisfied
+error[E0277]: the trait bound `Runtime: ~const Compat` is not satisfied
   --> $DIR/const-default-method-bodies.rs:24:18
    |
 LL |     NonConstImpl.a();
-   |                  ^ the trait `~const ConstDefaultFn` is not implemented for `NonConstImpl`
+   |                  ^ the trait `~const Compat` is not implemented for `Runtime`
    |
-   = help: the trait `ConstDefaultFn` is implemented for `NonConstImpl`
+   = help: the trait `Compat` is implemented for `Runtime`
+note: required by a bound in `ConstDefaultFn::a`
+  --> $DIR/const-default-method-bodies.rs:3:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `ConstDefaultFn::a`
+...
+LL |     fn a(self) {
+   |        - required by a bound in this associated function
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail-2.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail-2.stderr
index 085d9e71012..1d56d015dfc 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail-2.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail-2.stderr
@@ -1,3 +1,12 @@
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop-fail-2.rs:40:25
+   |
+LL | impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> {
+   |                         ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-drop-fail-2.rs:21:26
    |
@@ -12,6 +21,19 @@ LL | const fn check<T: ~const Destruct>(_: T) {}
    |                                    |
    |                                    the destructor for this type cannot be evaluated in constant functions
 
-error: aborting due to 2 previous errors
+error[E0015]: cannot call non-const fn `<T as A>::a` in constant functions
+  --> $DIR/const-drop-fail-2.rs:42:9
+   |
+LL |         T::a();
+   |         ^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0493`.
+Some errors have detailed explanations: E0015, E0493.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr
index e95215d4715..b251d84a967 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr
@@ -1,3 +1,12 @@
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop-fail.rs:20:12
+   |
+LL | impl const Drop for ConstImplWithDropGlue {
+   |            ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-drop-fail.rs:24:26
    |
@@ -38,8 +47,10 @@ LL | | }
 error[E0080]: evaluation of constant value failed
   --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
    |
-   = note: calling non-const function `<ConstImplWithDropGlue as Drop>::drop`
+   = note: calling non-const function `<NonTrivialDrop as Drop>::drop`
    |
+note: inside `std::ptr::drop_in_place::<NonTrivialDrop> - shim(Some(NonTrivialDrop))`
+  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
 note: inside `std::ptr::drop_in_place::<ConstImplWithDropGlue> - shim(Some(ConstImplWithDropGlue))`
   --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
 note: inside `check::<ConstImplWithDropGlue>`
@@ -60,7 +71,7 @@ LL | | }
    | |_- in this macro invocation
    = note: this error originates in the macro `check_all` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 4 previous errors
+error: aborting due to 5 previous errors
 
 Some errors have detailed explanations: E0080, E0493.
 For more information about an error, try `rustc --explain E0080`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr
index f9bd9953fcf..912700f2a83 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr
@@ -1,3 +1,12 @@
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop-fail.rs:20:12
+   |
+LL | impl const Drop for ConstImplWithDropGlue {
+   |            ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-drop-fail.rs:24:26
    |
@@ -12,6 +21,6 @@ LL | const fn check<T: ~const Destruct>(_: T) {}
    |                                    |
    |                                    the destructor for this type cannot be evaluated in constant functions
 
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
 
 For more information about this error, try `rustc --explain E0493`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.precise.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.precise.stderr
index 6aace105896..9d1ca5dbf2c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.precise.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.precise.stderr
@@ -1,32 +1,64 @@
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:13:16
+   |
+LL | impl<'a> const Drop for S<'a> {
+   |                ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:47:16
+   |
+LL |     impl const Drop for ConstDrop {
+   |                ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:68:37
+   |
+LL |     impl<T: ~const SomeTrait> const Drop for ConstDropWithBound<T> {
+   |                                     ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:76:30
+   |
+LL |     impl<T: SomeTrait> const Drop for ConstDropWithNonconstBound<T> {
+   |                              ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-drop.rs:19:22
    |
 LL | const fn a<T: ~const Destruct>(_: T) {}
    |                      ^^^^^^^^
 
-error[E0493]: destructor of `S<'_>` cannot be evaluated at compile-time
-  --> $DIR/const-drop.rs:24:13
+error[E0049]: method `foo` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-drop.rs:54:5
    |
-LL |     let _ = S(&mut c);
-   |             ^^^^^^^^^ the destructor for this type cannot be evaluated in constant functions
+LL |     #[const_trait]
+   |     ^^^^^^^^^^^^^^ found 1 const parameter
+LL |     pub trait SomeTrait {
+LL |         fn foo();
+   |               - expected 0 const parameters
 
-error[E0080]: evaluation of constant value failed
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-   |
-   = note: calling non-const function `<S<'_> as Drop>::drop`
+error[E0049]: method `foo` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-drop.rs:54:5
    |
-note: inside `std::ptr::drop_in_place::<S<'_>> - shim(Some(S<'_>))`
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-note: inside `b`
-  --> $DIR/const-drop.rs:24:22
+LL |     #[const_trait]
+   |     ^^^^^^^^^^^^^^ found 1 const parameter
+LL |     pub trait SomeTrait {
+LL |         fn foo();
+   |               - expected 0 const parameters
    |
-LL |     let _ = S(&mut c);
-   |                      ^
-note: inside `C`
-  --> $DIR/const-drop.rs:30:15
-   |
-LL | const C: u8 = b();
-   |               ^^^
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0493]: destructor of `T` cannot be evaluated at compile-time
   --> $DIR/const-drop.rs:19:32
@@ -34,65 +66,19 @@ error[E0493]: destructor of `T` cannot be evaluated at compile-time
 LL | const fn a<T: ~const Destruct>(_: T) {}
    |                                ^ the destructor for this type cannot be evaluated in constant functions
 
-error[E0080]: evaluation of constant value failed
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
+error[E0015]: cannot call non-const fn `<T as SomeTrait>::foo` in constant functions
+  --> $DIR/const-drop.rs:70:13
    |
-   = note: calling non-const function `<t::ConstDrop as Drop>::drop`
+LL |             T::foo();
+   |             ^^^^^^^^
    |
-note: inside `std::ptr::drop_in_place::<t::ConstDrop> - shim(Some(t::ConstDrop))`
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-note: inside `a::<t::ConstDrop>`
-  --> $DIR/const-drop.rs:19:39
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
    |
-LL | const fn a<T: ~const Destruct>(_: T) {}
-   |                                       ^
-note: inside `_`
-  --> $DIR/const-drop.rs:35:27
-   |
-LL |               const _: () = a($exp);
-   |                             ^^^^^^^
-...
-LL | / implements_const_drop! {
-LL | |     1u8,
-LL | |     2,
-LL | |     3.0,
-...  |
-LL | |     Result::<i32, !>::Ok(1),
-LL | | }
-   | |_- in this macro invocation
-   = note: this error originates in the macro `implements_const_drop` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0080]: evaluation of constant value failed
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-   |
-   = note: calling non-const function `<t::ConstDrop as Drop>::drop`
+LL + #![feature(effects)]
    |
-note: inside `std::ptr::drop_in_place::<t::ConstDrop> - shim(Some(t::ConstDrop))`
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-note: inside `std::ptr::drop_in_place::<t::HasConstDrop> - shim(Some(t::HasConstDrop))`
-  --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
-note: inside `a::<t::HasConstDrop>`
-  --> $DIR/const-drop.rs:19:39
-   |
-LL | const fn a<T: ~const Destruct>(_: T) {}
-   |                                       ^
-note: inside `_`
-  --> $DIR/const-drop.rs:35:27
-   |
-LL |               const _: () = a($exp);
-   |                             ^^^^^^^
-...
-LL | / implements_const_drop! {
-LL | |     1u8,
-LL | |     2,
-LL | |     3.0,
-...  |
-LL | |     Result::<i32, !>::Ok(1),
-LL | | }
-   | |_- in this macro invocation
-   = note: this error originates in the macro `implements_const_drop` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 6 previous errors
+error: aborting due to 9 previous errors
 
-Some errors have detailed explanations: E0080, E0493.
-For more information about an error, try `rustc --explain E0080`.
+Some errors have detailed explanations: E0015, E0049, E0493.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.stock.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.stock.stderr
index 18dd4543c3d..2f93f9a6743 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.stock.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-drop.stock.stderr
@@ -1,16 +1,64 @@
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:13:16
+   |
+LL | impl<'a> const Drop for S<'a> {
+   |                ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:47:16
+   |
+LL |     impl const Drop for ConstDrop {
+   |                ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:68:37
+   |
+LL |     impl<T: ~const SomeTrait> const Drop for ConstDropWithBound<T> {
+   |                                     ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
+error: const `impl` for trait `Drop` which is not marked with `#[const_trait]`
+  --> $DIR/const-drop.rs:76:30
+   |
+LL |     impl<T: SomeTrait> const Drop for ConstDropWithNonconstBound<T> {
+   |                              ^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error: `~const` can only be applied to `#[const_trait]` traits
   --> $DIR/const-drop.rs:19:22
    |
 LL | const fn a<T: ~const Destruct>(_: T) {}
    |                      ^^^^^^^^
 
-error[E0493]: destructor of `S<'_>` cannot be evaluated at compile-time
-  --> $DIR/const-drop.rs:24:13
+error[E0049]: method `foo` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-drop.rs:54:5
+   |
+LL |     #[const_trait]
+   |     ^^^^^^^^^^^^^^ found 1 const parameter
+LL |     pub trait SomeTrait {
+LL |         fn foo();
+   |               - expected 0 const parameters
+
+error[E0049]: method `foo` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/const-drop.rs:54:5
+   |
+LL |     #[const_trait]
+   |     ^^^^^^^^^^^^^^ found 1 const parameter
+LL |     pub trait SomeTrait {
+LL |         fn foo();
+   |               - expected 0 const parameters
    |
-LL |     let _ = S(&mut c);
-   |             ^^^^^^^^^- value is dropped here
-   |             |
-   |             the destructor for this type cannot be evaluated in constant functions
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error[E0493]: destructor of `T` cannot be evaluated at compile-time
   --> $DIR/const-drop.rs:19:32
@@ -20,6 +68,19 @@ LL | const fn a<T: ~const Destruct>(_: T) {}
    |                                |
    |                                the destructor for this type cannot be evaluated in constant functions
 
-error: aborting due to 3 previous errors
+error[E0015]: cannot call non-const fn `<T as SomeTrait>::foo` in constant functions
+  --> $DIR/const-drop.rs:70:13
+   |
+LL |             T::foo();
+   |             ^^^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error: aborting due to 9 previous errors
 
-For more information about this error, try `rustc --explain E0493`.
+Some errors have detailed explanations: E0015, E0049, E0493.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.rs
index faa913c7598..fdc53dbab1c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.rs
@@ -1,17 +1,21 @@
-//@ check-pass
+//@ known-bug: #110395
+// FIXME(effects) check-pass
+//@ compile-flags: -Znext-solver
 
 #![crate_type = "lib"]
-#![allow(internal_features)]
+#![allow(internal_features, incomplete_features)]
 #![no_std]
 #![no_core]
 #![feature(
     auto_traits,
     const_trait_impl,
-    effects,  //~ WARN the feature `effects` is incomplete
+    effects,
     lang_items,
     no_core,
     staged_api,
-    unboxed_closures
+    unboxed_closures,
+    rustc_attrs,
+    marker_trait_attr,
 )]
 #![stable(feature = "minicore", since = "1.0.0")]
 
@@ -84,3 +88,49 @@ trait Receiver {}
 impl<T: ?Sized> Receiver for &T {}
 
 impl<T: ?Sized> Receiver for &mut T {}
+
+#[stable(feature = "minicore", since = "1.0.0")]
+pub mod effects {
+    use super::Sized;
+
+    #[lang = "EffectsNoRuntime"]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub struct NoRuntime;
+    #[lang = "EffectsMaybe"]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub struct Maybe;
+    #[lang = "EffectsRuntime"]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub struct Runtime;
+
+    #[lang = "EffectsCompat"]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub trait Compat<#[rustc_runtime] const RUNTIME: bool> {}
+
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl Compat<false> for NoRuntime {}
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl Compat<true> for Runtime {}
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl<#[rustc_runtime] const RUNTIME: bool> Compat<RUNTIME> for Maybe {}
+
+    #[lang = "EffectsTyCompat"]
+    #[marker]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub trait TyCompat<T: ?Sized> {}
+
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl<T: ?Sized> TyCompat<T> for T {}
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl<T: ?Sized> TyCompat<T> for Maybe {}
+    #[stable(feature = "minicore", since = "1.0.0")]
+    impl<T: ?Sized> TyCompat<Maybe> for T {}
+
+    #[lang = "EffectsMin"]
+    #[stable(feature = "minicore", since = "1.0.0")]
+    pub trait Min {
+        #[lang = "EffectsMinOutput"]
+        #[stable(feature = "minicore", since = "1.0.0")]
+        type Output: ?Sized;
+    }
+}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.stderr
index 42b19fce28e..7aa3aa8c6bb 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-fns-are-early-bound.stderr
@@ -1,11 +1,20 @@
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/const-fns-are-early-bound.rs:10:5
+error[E0277]: the trait bound `FnOnce<()>::{synthetic#0}: const Compat` is not satisfied
+  --> $DIR/const-fns-are-early-bound.rs:31:17
    |
-LL |     effects,
-   |     ^^^^^^^
+LL |     is_const_fn(foo);
+   |     ----------- ^^^ the trait `const Compat` is not implemented for `FnOnce<()>::{synthetic#0}`
+   |     |
+   |     required by a bound introduced by this call
    |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
+note: required by a bound in `is_const_fn`
+  --> $DIR/const-fns-are-early-bound.rs:25:12
+   |
+LL |     fn is_const_fn<F>(_: F)
+   |        ----------- required by a bound in this function
+LL |     where
+LL |         F: const FnOnce<()>,
+   |            ^^^^^^^^^^^^^^^^ required by this bound in `is_const_fn`
 
-warning: 1 warning emitted
+error: aborting due to 1 previous error
 
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr
index fb282d9ee2b..7925cf53f42 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr
@@ -19,15 +19,5 @@ LL | impl const A for () {}
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/const-impl-requires-const-trait.rs:8:6
-   |
-LL | impl const A for () {}
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error: aborting due to 2 previous errors; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs
index 348ca0ab190..a772d69c9e2 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs
@@ -1,4 +1,5 @@
 #[derive_const(Default)] //~ ERROR use of unstable library feature
+//~^ ERROR const `impl` for trait `Default` which is not marked with `#[const_trait]`
 pub struct S;
 
 fn main() {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr
index 9ec2ac93381..3ccae5a83e6 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr
@@ -7,6 +7,16 @@ LL | #[derive_const(Default)]
    = help: add `#![feature(derive_const)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error: aborting due to 1 previous error
+error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
+  --> $DIR/derive-const-gate.rs:1:16
+   |
+LL | #[derive_const(Default)]
+   |                ^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr
index 1e091283510..78e5b70d41c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr
@@ -17,11 +17,5 @@ LL | #[derive_const(Default)]
    = note: adding a non-const method body in the future would be a breaking change
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error: aborting due to 2 previous errors; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr
index 925b2c58ed7..da6b77f623c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr
@@ -28,33 +28,6 @@ LL | impl const Default for A {
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/derive-const-use.rs:7:6
-   |
-LL | impl const Default for A {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]`
-  --> $DIR/derive-const-use.rs:11:12
-   |
-LL | impl const PartialEq for A {
-   |            ^^^^^^^^^
-   |
-   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/derive-const-use.rs:11:6
-   |
-LL | impl const PartialEq for A {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
 error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
   --> $DIR/derive-const-use.rs:15:16
    |
@@ -65,10 +38,14 @@ LL | #[derive_const(Default, PartialEq)]
    = note: adding a non-const method body in the future would be a breaking change
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
+error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]`
+  --> $DIR/derive-const-use.rs:11:12
+   |
+LL | impl const PartialEq for A {
+   |            ^^^^^^^^^
    |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
 
 error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]`
   --> $DIR/derive-const-use.rs:15:25
@@ -80,73 +57,29 @@ LL | #[derive_const(Default, PartialEq)]
    = note: adding a non-const method body in the future would be a breaking change
    = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error[E0284]: type annotations needed
-  --> $DIR/derive-const-use.rs:18:35
-   |
-LL | const _: () = assert!(S((), A) == S::default());
-   |                                   ^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `Default`
-  --> $DIR/derive-const-use.rs:15:16
-   |
-LL | #[derive_const(Default, PartialEq)]
-   |                ^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
-   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0284]: type annotations needed
-  --> $DIR/derive-const-use.rs:18:23
-   |
-LL | const _: () = assert!(S((), A) == S::default());
-   |                       ^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `S` to implement `PartialEq`
-  --> $DIR/derive-const-use.rs:15:25
-   |
-LL | #[derive_const(Default, PartialEq)]
-   |                         ^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
-   = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0284]: type annotations needed
-  --> $DIR/derive-const-use.rs:16:18
+error[E0080]: evaluation of constant value failed
+  --> $DIR/derive-const-use.rs:16:14
    |
 LL | #[derive_const(Default, PartialEq)]
    |                ------- in this derive macro expansion
 LL | pub struct S((), A);
-   |                  ^ cannot infer the value of the constant `_`
+   |              ^^ calling non-const function `<() as Default>::default`
    |
-note: required for `A` to implement `Default`
-  --> $DIR/derive-const-use.rs:7:12
-   |
-LL | impl const Default for A {
-   |      ----- ^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0284]: type annotations needed
-  --> $DIR/derive-const-use.rs:16:18
+note: inside `<S as Default>::default`
+  --> $DIR/derive-const-use.rs:16:14
    |
 LL | #[derive_const(Default, PartialEq)]
-   |                         --------- in this derive macro expansion
+   |                ------- in this derive macro expansion
 LL | pub struct S((), A);
-   |                  ^ cannot infer the value of the constant `_`
-   |
-note: required for `A` to implement `PartialEq`
-  --> $DIR/derive-const-use.rs:11:12
+   |              ^^
+note: inside `_`
+  --> $DIR/derive-const-use.rs:18:35
    |
-LL | impl const PartialEq for A {
-   |      ----- ^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-   = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
+LL | const _: () = assert!(S((), A) == S::default());
+   |                                   ^^^^^^^^^^^^
+   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 14 previous errors; 1 warning emitted
+error: aborting due to 7 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284, E0635.
-For more information about an error, try `rustc --explain E0207`.
+Some errors have detailed explanations: E0080, E0635.
+For more information about an error, try `rustc --explain E0080`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr
index 5d3aa250d18..102458450fb 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr
@@ -25,25 +25,5 @@ LL | #[derive_const(PartialEq)]
    |
    = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error[E0284]: type annotations needed
-  --> $DIR/derive-const-with-params.rs:11:5
-   |
-LL |     a == b
-   |     ^^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `Reverse<i32>` to implement `PartialEq`
-  --> $DIR/derive-const-with-params.rs:7:16
-   |
-LL | #[derive_const(PartialEq)]
-   |                ^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
-   = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: aborting due to 4 previous errors; 1 warning emitted
+error: aborting due to 2 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284.
-For more information about an error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr
index ddb5b3c7c50..af042ecff95 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr
@@ -7,13 +7,21 @@ LL | #![cfg_attr(any(gated, gatednc), feature(const_trait_impl, effects))]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `cross_crate::NonConst: ~const cross_crate::MyTrait` is not satisfied
+error[E0277]: the trait bound `Runtime: ~const Compat` is not satisfied
   --> $DIR/cross-crate.rs:18:14
    |
 LL |     NonConst.func();
-   |              ^^^^ the trait `~const cross_crate::MyTrait` is not implemented for `cross_crate::NonConst`
+   |              ^^^^ the trait `~const Compat` is not implemented for `Runtime`
    |
-   = help: the trait `cross_crate::MyTrait` is implemented for `cross_crate::NonConst`
+   = help: the trait `Compat` is implemented for `Runtime`
+note: required by a bound in `func`
+  --> $DIR/auxiliary/cross-crate.rs:4:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `MyTrait::func`
+...
+LL |     fn func(self);
+   |        ---- required by a bound in this associated function
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr
index 67a936d0882..8b422d62578 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr
@@ -7,13 +7,21 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0277]: the trait bound `(): ~const Tr` is not satisfied
+error[E0277]: the trait bound `Runtime: ~const Compat` is not satisfied
   --> $DIR/default-method-body-is-const-same-trait-ck.rs:8:12
    |
 LL |         ().a()
-   |            ^ the trait `~const Tr` is not implemented for `()`
+   |            ^ the trait `~const Compat` is not implemented for `Runtime`
    |
-   = help: the trait `Tr` is implemented for `()`
+   = help: the trait `Compat` is implemented for `Runtime`
+note: required by a bound in `Tr::a`
+  --> $DIR/default-method-body-is-const-same-trait-ck.rs:3:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Tr::a`
+LL | pub trait Tr {
+LL |     fn a(&self) {}
+   |        - required by a bound in this associated function
 
 error: aborting due to 1 previous error; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/minicore.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/minicore.stderr
index e4a5f368608..1963332b856 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/minicore.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/minicore.stderr
@@ -7,12 +7,11 @@ LL | #![feature(const_trait_impl, effects, const_mut_refs)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0094]: intrinsic has wrong number of const parameters: found 1, expected 0
-  --> $DIR/minicore.rs:517:27
+error: requires `EffectsCompat` lang_item
+  --> $DIR/minicore.rs:455:9
    |
-LL | const fn const_eval_select<ARG: Tuple, F, G, RET>(
-   |                           ^^^^^^^^^^^^^^^^^^^^^^^ expected 0 const parameters
+LL | impl<T: Clone> Clone for RefCell<T> {
+   |         ^^^^^
 
 error: aborting due to 1 previous error; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0094`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params-cross-crate.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params-cross-crate.stderr
index cc870ad336c..34732ac4f2e 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params-cross-crate.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params-cross-crate.stderr
@@ -16,15 +16,17 @@ error[E0107]: trait takes 0 generic arguments but 1 generic argument was supplie
   --> $DIR/no-explicit-const-params-cross-crate.rs:16:12
    |
 LL |     <() as Bar<false>>::bar();
-   |            ^^^------- help: remove these generics
-   |            |
-   |            expected 0 generic arguments
+   |            ^^^ expected 0 generic arguments
    |
 note: trait defined here, with 0 generic parameters
   --> $DIR/auxiliary/cross-crate.rs:6:11
    |
 LL | pub trait Bar {
    |           ^^^
+help: replace the generic bound with the associated type
+   |
+LL |     <() as Bar< = false>>::bar();
+   |                 +
 
 error[E0107]: function takes 0 generic arguments but 1 generic argument was supplied
   --> $DIR/no-explicit-const-params-cross-crate.rs:7:5
@@ -44,15 +46,17 @@ error[E0107]: trait takes 0 generic arguments but 1 generic argument was supplie
   --> $DIR/no-explicit-const-params-cross-crate.rs:9:12
    |
 LL |     <() as Bar<true>>::bar();
-   |            ^^^------ help: remove these generics
-   |            |
-   |            expected 0 generic arguments
+   |            ^^^ expected 0 generic arguments
    |
 note: trait defined here, with 0 generic parameters
   --> $DIR/auxiliary/cross-crate.rs:6:11
    |
 LL | pub trait Bar {
    |           ^^^
+help: replace the generic bound with the associated type
+   |
+LL |     <() as Bar< = true>>::bar();
+   |                 +
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params.stderr
index 39aa5825611..c3ff30d2d79 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/no-explicit-const-params.stderr
@@ -25,15 +25,17 @@ error[E0107]: trait takes 0 generic arguments but 1 generic argument was supplie
   --> $DIR/no-explicit-const-params.rs:24:12
    |
 LL |     <() as Bar<false>>::bar();
-   |            ^^^------- help: remove these generics
-   |            |
-   |            expected 0 generic arguments
+   |            ^^^ expected 0 generic arguments
    |
 note: trait defined here, with 0 generic parameters
   --> $DIR/no-explicit-const-params.rs:6:7
    |
 LL | trait Bar {
    |       ^^^
+help: replace the generic bound with the associated type
+   |
+LL |     <() as Bar< = false>>::bar();
+   |                 +
 
 error[E0308]: mismatched types
   --> $DIR/no-explicit-const-params.rs:24:5
@@ -62,15 +64,17 @@ error[E0107]: trait takes 0 generic arguments but 1 generic argument was supplie
   --> $DIR/no-explicit-const-params.rs:17:12
    |
 LL |     <() as Bar<true>>::bar();
-   |            ^^^------ help: remove these generics
-   |            |
-   |            expected 0 generic arguments
+   |            ^^^ expected 0 generic arguments
    |
 note: trait defined here, with 0 generic parameters
   --> $DIR/no-explicit-const-params.rs:6:7
    |
 LL | trait Bar {
    |       ^^^
+help: replace the generic bound with the associated type
+   |
+LL |     <() as Bar< = true>>::bar();
+   |                 +
 
 error: aborting due to 5 previous errors; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.rs
index 0592ac2e0e7..373a4393713 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.rs
@@ -1,12 +1,10 @@
-//@ known-bug: #110395
-// FIXME: effects
+//@ check-pass
 
 #![feature(const_trait_impl, effects)]
+#![allow(incomplete_features)]
 
-// This fails because `~const Uwu` doesn't imply (non-const) `Uwu`.
-
-// FIXME: #[const_trait]
-pub trait Owo<X = <Self as /* FIXME: ~const */ Uwu>::T> {}
+#[const_trait]
+pub trait Owo<X = <Self as Uwu>::T> {}
 
 #[const_trait]
 pub trait Uwu: Owo {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.stderr
deleted file mode 100644
index ab5f7b55a4e..00000000000
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/project.stderr
+++ /dev/null
@@ -1,74 +0,0 @@
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/project.rs:4:30
-   |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
-   |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error[E0277]: the trait bound `Self: Uwu` is not satisfied
-  --> $DIR/project.rs:12:1
-   |
-LL | pub trait Uwu: Owo {
-   | ^^^^^^^^^^^^^^^^^^ the trait `Uwu` is not implemented for `Self`
-   |
-help: consider further restricting `Self`
-   |
-LL | pub trait Uwu: Owo + Uwu {
-   |                    +++++
-
-error[E0277]: the trait bound `Self: Uwu` is not satisfied
-  --> $DIR/project.rs:12:1
-   |
-LL | / pub trait Uwu: Owo {
-LL | |     type T;
-LL | | }
-   | |_^ the trait `Uwu` is not implemented for `Self`
-   |
-help: consider further restricting `Self`
-   |
-LL | pub trait Uwu: Owo + Uwu {
-   |                    +++++
-
-error[E0277]: the trait bound `Self: Uwu` is not satisfied
-  --> $DIR/project.rs:12:16
-   |
-LL | pub trait Uwu: Owo {
-   |                ^^^ the trait `Uwu` is not implemented for `Self`
-   |
-note: required by a bound in `Owo`
-  --> $DIR/project.rs:9:15
-   |
-LL | pub trait Owo<X = <Self as /* FIXME: ~const */ Uwu>::T> {}
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Owo`
-help: consider further restricting `Self`
-   |
-LL | pub trait Uwu: Owo + Uwu {
-   |                    +++++
-
-error[E0277]: the trait bound `Self: Uwu` is not satisfied
-  --> $DIR/project.rs:13:5
-   |
-LL |     type T;
-   |     ^^^^^^ the trait `Uwu` is not implemented for `Self`
-   |
-help: consider further restricting `Self`
-   |
-LL | pub trait Uwu: Owo + Uwu {
-   |                    +++++
-
-error[E0277]: the trait bound `Self: Uwu` is not satisfied
-  --> $DIR/project.rs:13:5
-   |
-LL |     type T;
-   |     ^^^^^^^ the trait `Uwu` is not implemented for `Self`
-   |
-help: consider further restricting `Self`
-   |
-LL | pub trait Uwu: Owo + Uwu {
-   |                    +++++
-
-error: aborting due to 5 previous errors; 1 warning emitted
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.rs
index 987a162cd6c..e6e41c472bd 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.rs
@@ -6,7 +6,6 @@ trait T {}
 
 impl const dyn T {
     //~^ ERROR inherent impls cannot be `const`
-    //~| ERROR the const parameter `host` is not constrained by the impl trait, self type, or
     pub const fn new() -> std::sync::Mutex<dyn T> {}
     //~^ ERROR mismatched types
     //~| ERROR cannot be known at compilation time
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.stderr
index f24d7c7a160..313ba4fc956 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/span-bug-issue-121418.stderr
@@ -17,17 +17,8 @@ LL | #![feature(effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/span-bug-issue-121418.rs:7:6
-   |
-LL | impl const dyn T {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
 error[E0308]: mismatched types
-  --> $DIR/span-bug-issue-121418.rs:10:27
+  --> $DIR/span-bug-issue-121418.rs:9:27
    |
 LL |     pub const fn new() -> std::sync::Mutex<dyn T> {}
    |                  ---      ^^^^^^^^^^^^^^^^^^^^^^^ expected `Mutex<dyn T>`, found `()`
@@ -38,7 +29,7 @@ LL |     pub const fn new() -> std::sync::Mutex<dyn T> {}
            found unit type `()`
 
 error[E0277]: the size for values of type `(dyn T + 'static)` cannot be known at compilation time
-  --> $DIR/span-bug-issue-121418.rs:10:27
+  --> $DIR/span-bug-issue-121418.rs:9:27
    |
 LL |     pub const fn new() -> std::sync::Mutex<dyn T> {}
    |                           ^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
@@ -48,7 +39,7 @@ note: required because it appears within the type `Mutex<(dyn T + 'static)>`
   --> $SRC_DIR/std/src/sync/mutex.rs:LL:COL
    = note: the return type of a function must have a statically known size
 
-error: aborting due to 4 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0277, E0308.
-For more information about an error, try `rustc --explain E0207`.
+Some errors have detailed explanations: E0277, E0308.
+For more information about an error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.rs
index 00465b0f53d..0508b1c5e26 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.rs
@@ -11,12 +11,11 @@ trait Foo {}
 
 impl<T> const Foo for T {}
 //~^ error: const `impl` for trait `Foo` which is not marked with `#[const_trait]`
-//~| error: the const parameter `host` is not constrained by the impl trait, self type, or predicates [E0207]
 
 impl<T> const Foo for T where T: const Specialize {}
 //~^ error: const `impl` for trait `Foo` which is not marked with `#[const_trait]`
 //~| error: `const` can only be applied to `#[const_trait]` traits
-//~| error: the const parameter `host` is not constrained by the impl trait, self type, or predicates [E0207]
-//~| error: conflicting implementations of trait `Foo`
+//~| error: specialization impl does not specialize any associated items
+//~| error: cannot specialize on trait `Specialize`
 
 fn main() {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.stderr
index 8d69151bf74..047549bca75 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/effects/spec-effectvar-ice.stderr
@@ -20,7 +20,7 @@ LL | impl<T> const Foo for T {}
    = note: adding a non-const method body in the future would be a breaking change
 
 error: const `impl` for trait `Foo` which is not marked with `#[const_trait]`
-  --> $DIR/spec-effectvar-ice.rs:16:15
+  --> $DIR/spec-effectvar-ice.rs:15:15
    |
 LL | trait Foo {}
    | - help: mark `Foo` as const: `#[const_trait]`
@@ -32,39 +32,28 @@ LL | impl<T> const Foo for T where T: const Specialize {}
    = note: adding a non-const method body in the future would be a breaking change
 
 error: `const` can only be applied to `#[const_trait]` traits
-  --> $DIR/spec-effectvar-ice.rs:16:40
+  --> $DIR/spec-effectvar-ice.rs:15:40
    |
 LL | impl<T> const Foo for T where T: const Specialize {}
    |                                        ^^^^^^^^^^
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/spec-effectvar-ice.rs:12:9
+error: specialization impl does not specialize any associated items
+  --> $DIR/spec-effectvar-ice.rs:15:1
    |
-LL | impl<T> const Foo for T {}
-   |         ^^^^^ unconstrained const parameter
+LL | impl<T> const Foo for T where T: const Specialize {}
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error[E0119]: conflicting implementations of trait `Foo`
-  --> $DIR/spec-effectvar-ice.rs:16:1
+note: impl is a specialization of this impl
+  --> $DIR/spec-effectvar-ice.rs:12:1
    |
 LL | impl<T> const Foo for T {}
-   | ----------------------- first implementation here
-...
-LL | impl<T> const Foo for T where T: const Specialize {}
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
+   | ^^^^^^^^^^^^^^^^^^^^^^^
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/spec-effectvar-ice.rs:16:9
+error: cannot specialize on trait `Specialize`
+  --> $DIR/spec-effectvar-ice.rs:15:34
    |
 LL | impl<T> const Foo for T where T: const Specialize {}
-   |         ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
+   |                                  ^^^^^^^^^^^^^^^^
 
-error: aborting due to 6 previous errors; 1 warning emitted
+error: aborting due to 5 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0119, E0207.
-For more information about an error, try `rustc --explain E0119`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/generic-bound.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/generic-bound.stderr
index 7905abfa40e..2baac1d2a16 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/generic-bound.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/generic-bound.stderr
@@ -1,20 +1,24 @@
+error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
+  --> $DIR/generic-bound.rs:16:15
+   |
+LL | impl<T> const std::ops::Add for S<T> {
+   |               ^^^^^^^^^^^^^
+   |
+   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
+   = note: adding a non-const method body in the future would be a breaking change
+
 error[E0015]: cannot call non-const operator in constant functions
   --> $DIR/generic-bound.rs:25:5
    |
 LL |     arg + arg
    |     ^^^^^^^^^
    |
-note: impl defined here, but it is not `const`
-  --> $DIR/generic-bound.rs:16:1
-   |
-LL | impl<T> const std::ops::Add for S<T> {
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
 help: add `#![feature(effects)]` to the crate attributes to enable
    |
 LL + #![feature(effects)]
    |
 
-error: aborting due to 1 previous error
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs
index 6df9696f2cb..49741ca24c7 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs
@@ -1,4 +1,5 @@
-#![feature(const_trait_impl)]
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait Tr {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr
index 36c8163f1c5..0135296526f 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr
@@ -1,5 +1,5 @@
 error[E0046]: not all trait items implemented, missing: `req`
-  --> $DIR/impl-with-default-fn-fail.rs:12:1
+  --> $DIR/impl-with-default-fn-fail.rs:13:1
    |
 LL |     fn req(&self);
    |     -------------- `req` from trait
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs
index c6fab4aabb6..0a1d2355a75 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs
@@ -1,6 +1,6 @@
 //@ check-pass
-
-#![feature(const_trait_impl)]
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait Tr {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs
index 2a40a1b86ca..10d7a3942e4 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-100222.rs
@@ -1,6 +1,7 @@
 //@ revisions: nn ny yn yy
 //@ check-pass
-#![feature(const_trait_impl, associated_type_defaults, const_mut_refs)]
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects, associated_type_defaults, const_mut_refs)]
 
 #[cfg_attr(any(yn, yy), const_trait)]
 pub trait Index {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs
index a587de9f179..e666355db6f 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs
@@ -4,6 +4,7 @@
 //@ compile-flags: -Znext-solver
 
 #![feature(const_trait_impl, effects)]
+#![allow(incomplete_features)]
 
 #[const_trait]
 pub trait Super {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr
index ae76cab2f2e..de4783bdb3f 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr
@@ -4,5 +4,28 @@ error: `~const` can only be applied to `#[const_trait]` traits
 LL | impl<A, B> const Convert<B> for A where B: ~const From<A> {
    |                                                   ^^^^^^^
 
-error: aborting due to 1 previous error
+error[E0049]: method `to` has 1 const parameter but its trait declaration has 0 const parameters
+  --> $DIR/non-const-op-in-closure-in-const.rs:5:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ found 1 const parameter
+LL | trait Convert<T> {
+LL |     fn to(self) -> T;
+   |          - expected 0 const parameters
+
+error[E0015]: cannot call non-const fn `<B as From<A>>::from` in constant functions
+  --> $DIR/non-const-op-in-closure-in-const.rs:12:9
+   |
+LL |         B::from(self)
+   |         ^^^^^^^^^^^^^
+   |
+   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+help: add `#![feature(effects)]` to the crate attributes to enable
+   |
+LL + #![feature(effects)]
+   |
+
+error: aborting due to 3 previous errors
 
+Some errors have detailed explanations: E0015, E0049.
+For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.rs
index 3aabaf137d5..4501a218ad7 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.rs
@@ -22,6 +22,8 @@ impl<T: ~const Spec> const A for T {
 
 impl<T: Spec + Sup> A for T {
 //~^ ERROR: cannot specialize
+//~| ERROR: cannot specialize
+//~| ERROR: cannot specialize
 //FIXME(effects) ~| ERROR: missing `~const` qualifier
     fn a() -> u32 {
         3
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.stderr
index 226295bf949..272cb26ff42 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/specializing-constness.stderr
@@ -13,5 +13,17 @@ error: cannot specialize on const impl with non-const impl
 LL | impl<T: Spec + Sup> A for T {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 1 previous error; 1 warning emitted
+error: cannot specialize on trait `Compat`
+  --> $DIR/specializing-constness.rs:23:16
+   |
+LL | impl<T: Spec + Sup> A for T {
+   |                ^^^
+
+error: cannot specialize on trait `Compat`
+  --> $DIR/specializing-constness.rs:23:9
+   |
+LL | impl<T: Spec + Sup> A for T {
+   |         ^^^^
+
+error: aborting due to 3 previous errors; 1 warning emitted
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.rs
index 2f26eebbe32..ba20a79a4df 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.rs
@@ -15,7 +15,7 @@ trait Bar: ~const Foo {}
 
 const fn foo<T: Bar>(x: &T) {
     x.a();
-    //[yy,yn]~^ ERROR mismatched types
+    //[yy,yn]~^ ERROR the trait bound
     // FIXME(effects) diagnostic
 }
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr
index f96e6fb4ae4..a4f1c94bca0 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr
@@ -19,15 +19,25 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0308]: mismatched types
-  --> $DIR/super-traits-fail-2.rs:17:5
+error[E0277]: the trait bound `Foo::{synthetic#0}: ~const Compat` is not satisfied
+  --> $DIR/super-traits-fail-2.rs:17:7
    |
 LL |     x.a();
-   |     ^^^^^ expected `host`, found `true`
+   |       ^ the trait `~const Compat` is not implemented for `Foo::{synthetic#0}`
    |
-   = note: expected constant `host`
-              found constant `true`
+note: required by a bound in `Foo::a`
+  --> $DIR/super-traits-fail-2.rs:4:25
+   |
+LL | #[cfg_attr(any(yy, yn), const_trait)]
+   |                         ^^^^^^^^^^^ required by this bound in `Foo::a`
+LL | trait Foo {
+LL |     fn a(&self);
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn foo<T: Bar>(x: &T) where Foo::{synthetic#0}: ~const Compat {
+   |                             +++++++++++++++++++++++++++++++++++++++
 
 error: aborting due to 2 previous errors; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0308`.
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr
index ffc259e590e..4e27ebc5e9e 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr
@@ -7,15 +7,25 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-error[E0308]: mismatched types
-  --> $DIR/super-traits-fail-2.rs:17:5
+error[E0277]: the trait bound `Foo::{synthetic#0}: ~const Compat` is not satisfied
+  --> $DIR/super-traits-fail-2.rs:17:7
    |
 LL |     x.a();
-   |     ^^^^^ expected `host`, found `true`
+   |       ^ the trait `~const Compat` is not implemented for `Foo::{synthetic#0}`
    |
-   = note: expected constant `host`
-              found constant `true`
+note: required by a bound in `Foo::a`
+  --> $DIR/super-traits-fail-2.rs:4:25
+   |
+LL | #[cfg_attr(any(yy, yn), const_trait)]
+   |                         ^^^^^^^^^^^ required by this bound in `Foo::a`
+LL | trait Foo {
+LL |     fn a(&self);
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn foo<T: Bar>(x: &T) where Foo::{synthetic#0}: ~const Compat {
+   |                             +++++++++++++++++++++++++++++++++++++++
 
 error: aborting due to 1 previous error; 1 warning emitted
 
-For more information about this error, try `rustc --explain E0308`.
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr
index cde4b1ff77f..a9bf2687cb8 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr
@@ -1,32 +1,23 @@
 error: `~const` is not allowed here
-  --> $DIR/super-traits-fail-3.rs:12:12
+  --> $DIR/super-traits-fail-3.rs:13:12
    |
 LL | trait Bar: ~const Foo {}
    |            ^^^^^^
    |
 note: this trait is not a `#[const_trait]`, so it cannot have `~const` trait bounds
-  --> $DIR/super-traits-fail-3.rs:12:1
+  --> $DIR/super-traits-fail-3.rs:13:1
    |
 LL | trait Bar: ~const Foo {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^
 
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/super-traits-fail-3.rs:1:30
-   |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
-   |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
 
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
@@ -34,7 +25,7 @@ LL | trait Bar: ~const Foo {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
@@ -42,10 +33,10 @@ LL | trait Bar: ~const Foo {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:18:24
+  --> $DIR/super-traits-fail-3.rs:19:24
    |
 LL | const fn foo<T: ~const Bar>(x: &T) {
    |                        ^^^
 
-error: aborting due to 5 previous errors; 1 warning emitted
+error: aborting due to 5 previous errors
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr
index 6f184018148..c3811623c1c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr
@@ -1,20 +1,11 @@
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/super-traits-fail-3.rs:1:30
-   |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
-   |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
 
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
@@ -22,12 +13,12 @@ LL | trait Bar: ~const Foo {}
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:12:19
+  --> $DIR/super-traits-fail-3.rs:13:19
    |
 LL | trait Bar: ~const Foo {}
    |                   ^^^
    |
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-error: aborting due to 3 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors
 
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.rs
index f7e85902a41..24661f078b0 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.rs
@@ -1,7 +1,8 @@
-#![feature(const_trait_impl, effects)] //~ WARN the feature `effects` is incomplete
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 //@ revisions: yy yn ny nn
-//@[yy] check-pass
+//@[yy] known-bug: #110395
 
 #[cfg_attr(any(yy, yn), const_trait)]
 trait Foo {
@@ -18,7 +19,7 @@ trait Bar: ~const Foo {}
 const fn foo<T: ~const Bar>(x: &T) {
     //[yn,nn]~^ ERROR: `~const` can only be applied to `#[const_trait]`
     x.a();
-    //[yn]~^ ERROR: mismatched types
+    //[yn]~^ ERROR: the trait bound
 }
 
 fn main() {}
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr
index b0a3b39631d..34a60329eb5 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr
@@ -1,39 +1,40 @@
 error: `~const` is not allowed here
-  --> $DIR/super-traits-fail-3.rs:12:12
+  --> $DIR/super-traits-fail-3.rs:13:12
    |
 LL | trait Bar: ~const Foo {}
    |            ^^^^^^
    |
 note: this trait is not a `#[const_trait]`, so it cannot have `~const` trait bounds
-  --> $DIR/super-traits-fail-3.rs:12:1
+  --> $DIR/super-traits-fail-3.rs:13:1
    |
 LL | trait Bar: ~const Foo {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^
 
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/super-traits-fail-3.rs:1:30
-   |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
-   |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
 error: `~const` can only be applied to `#[const_trait]` traits
-  --> $DIR/super-traits-fail-3.rs:18:24
+  --> $DIR/super-traits-fail-3.rs:19:24
    |
 LL | const fn foo<T: ~const Bar>(x: &T) {
    |                        ^^^
 
-error[E0308]: mismatched types
-  --> $DIR/super-traits-fail-3.rs:20:5
+error[E0277]: the trait bound `Foo::{synthetic#0}: ~const Compat` is not satisfied
+  --> $DIR/super-traits-fail-3.rs:21:7
    |
 LL |     x.a();
-   |     ^^^^^ expected `host`, found `true`
+   |       ^ the trait `~const Compat` is not implemented for `Foo::{synthetic#0}`
+   |
+note: required by a bound in `Foo::a`
+  --> $DIR/super-traits-fail-3.rs:7:25
+   |
+LL | #[cfg_attr(any(yy, yn), const_trait)]
+   |                         ^^^^^^^^^^^ required by this bound in `Foo::a`
+LL | trait Foo {
+LL |     fn a(&self);
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
    |
-   = note: expected constant `host`
-              found constant `true`
+LL | const fn foo<T: ~const Bar>(x: &T) where Foo::{synthetic#0}: ~const Compat {
+   |                                    +++++++++++++++++++++++++++++++++++++++
 
-error: aborting due to 3 previous errors; 1 warning emitted
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0308`.
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yy.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yy.stderr
index e354c66919e..8ac20b3e068 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yy.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail-3.yy.stderr
@@ -1,11 +1,22 @@
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/super-traits-fail-3.rs:1:30
+error[E0277]: the trait bound `Foo::{synthetic#0}: ~const Compat` is not satisfied
+  --> $DIR/super-traits-fail-3.rs:21:7
    |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
+LL |     x.a();
+   |       ^ the trait `~const Compat` is not implemented for `Foo::{synthetic#0}`
    |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
+note: required by a bound in `Foo::a`
+  --> $DIR/super-traits-fail-3.rs:7:25
+   |
+LL | #[cfg_attr(any(yy, yn), const_trait)]
+   |                         ^^^^^^^^^^^ required by this bound in `Foo::a`
+LL | trait Foo {
+LL |     fn a(&self);
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn foo<T: ~const Bar>(x: &T) where Foo::{synthetic#0}: ~const Compat {
+   |                                    +++++++++++++++++++++++++++++++++++++++
 
-warning: 1 warning emitted
+error: aborting due to 1 previous error
 
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail.rs
index 0bbf2dabffe..bb8e06ab2f7 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits-fail.rs
@@ -1,7 +1,7 @@
 //@ check-pass
-//@ known-bug: #110395
 
-#![feature(const_trait_impl)]
+#![allow(incomplete_features)]
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait Foo {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.rs
index cfbb8e9f6be..b32c8cab7ec 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.rs
@@ -1,5 +1,6 @@
-//@ check-pass
-#![feature(const_trait_impl, effects)] //~ WARN the feature `effects` is incomplete
+// FIXME(effects) check-pass
+//@ known-bug: #110395
+#![feature(const_trait_impl, effects)]
 
 #[const_trait]
 trait Foo {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.stderr
index 2ff1a880d84..a9cb68a247c 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/super-traits.stderr
@@ -1,5 +1,5 @@
 warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/super-traits.rs:2:30
+  --> $DIR/super-traits.rs:3:30
    |
 LL | #![feature(const_trait_impl, effects)]
    |                              ^^^^^^^
@@ -7,5 +7,25 @@ LL | #![feature(const_trait_impl, effects)]
    = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
    = note: `#[warn(incomplete_features)]` on by default
 
-warning: 1 warning emitted
+error[E0277]: the trait bound `Foo::{synthetic#0}: ~const Compat` is not satisfied
+  --> $DIR/super-traits.rs:21:7
+   |
+LL |     t.a();
+   |       ^ the trait `~const Compat` is not implemented for `Foo::{synthetic#0}`
+   |
+note: required by a bound in `Foo::a`
+  --> $DIR/super-traits.rs:5:1
+   |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Foo::a`
+LL | trait Foo {
+LL |     fn a(&self);
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn foo<T: ~const Bar>(t: &T) where Foo::{synthetic#0}: ~const Compat {
+   |                                    +++++++++++++++++++++++++++++++++++++++
+
+error: aborting due to 1 previous error; 1 warning emitted
 
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr
index 3b320f1c542..8151b9aaa23 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr
@@ -282,21 +282,12 @@ help: wrap the field type in `ManuallyDrop<...>`
 LL | union Union<T: ~const Trait> { field: std::mem::ManuallyDrop<T> }
    |                                       +++++++++++++++++++++++ +
 
-error[E0275]: overflow evaluating the requirement `Trait::{opaque#0} == _`
+error[E0275]: overflow evaluating the requirement `(): Trait`
   --> $DIR/tilde-const-invalid-places.rs:34:34
    |
 LL |     type Type<T: ~const Trait> = ();
    |                                  ^^
    |
-note: required for `()` to implement `Trait`
-  --> $DIR/tilde-const-invalid-places.rs:56:23
-   |
-LL | impl<T: ~const Trait> Trait for T {}
-   |         ------------  ^^^^^     ^
-   |         |
-   |         unsatisfied trait bound introduced here
-   = note: 1 redundant requirement hidden
-   = note: required for `()` to implement `Trait`
 note: required by a bound in `NonConstTrait::Type`
   --> $DIR/tilde-const-invalid-places.rs:25:33
    |
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-default-body-stability.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-default-body-stability.stderr
index adb1b01f087..d0c2f88005d 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-default-body-stability.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-default-body-stability.stderr
@@ -25,112 +25,5 @@ LL | impl const FromResidual for T {
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change
 
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/trait-default-body-stability.rs:18:6
-   |
-LL | impl const Try for T {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
-  --> $DIR/trait-default-body-stability.rs:33:6
-   |
-LL | impl const FromResidual for T {
-   |      ^^^^^ unconstrained const parameter
-   |
-   = note: expressions using a const parameter must map each value to a distinct output value
-   = note: proving the result of expressions other than the parameter are unique is not supported
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:33:6
-   |
-LL | impl const FromResidual for T {
-   |      ^^^^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `Try`
-  --> $DIR/trait-default-body-stability.rs:18:12
-   |
-LL | impl const Try for T {
-   |      ----- ^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:44:9
-   |
-LL |         T?
-   |         ^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `Try`
-  --> $DIR/trait-default-body-stability.rs:18:12
-   |
-LL | impl const Try for T {
-   |      ----- ^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:44:9
-   |
-LL |         T?
-   |         ^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `FromResidual<T>`
-  --> $DIR/trait-default-body-stability.rs:33:12
-   |
-LL | impl const FromResidual for T {
-   |      ----- ^^^^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:44:9
-   |
-LL |         T?
-   |         ^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `Try`
-  --> $DIR/trait-default-body-stability.rs:18:12
-   |
-LL | impl const Try for T {
-   |      ----- ^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:44:9
-   |
-LL |         T?
-   |         ^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `FromResidual<T>`
-  --> $DIR/trait-default-body-stability.rs:33:12
-   |
-LL | impl const FromResidual for T {
-   |      ----- ^^^^^^^^^^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error[E0284]: type annotations needed
-  --> $DIR/trait-default-body-stability.rs:44:9
-   |
-LL |         T?
-   |         ^^ cannot infer the value of the constant `_`
-   |
-note: required for `T` to implement `Try`
-  --> $DIR/trait-default-body-stability.rs:18:12
-   |
-LL | impl const Try for T {
-   |      ----- ^^^     ^
-   |      |
-   |      unsatisfied trait bound introduced here
-   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
-
-error: aborting due to 10 previous errors; 1 warning emitted
+error: aborting due to 2 previous errors; 1 warning emitted
 
-Some errors have detailed explanations: E0207, E0284.
-For more information about an error, try `rustc --explain E0207`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.rs
index 516451d8811..dd5de62aff5 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.rs
@@ -2,7 +2,7 @@
 // Checking the validity of traits' where clauses happen at a later stage.
 // (`rustc_const_eval` instead of `rustc_hir_analysis`) Therefore one file as a
 // test is not enough.
-//@ known-bug: #110395
+
 #![feature(const_trait_impl, effects)]
 #![allow(incomplete_features)]
 
@@ -20,8 +20,10 @@ const fn test1<T: ~const Foo + Bar>() {
     T::a();
     T::b();
     //~^ ERROR mismatched types
+    //~| ERROR the trait bound
     T::c::<T>();
     //~^ ERROR mismatched types
+    //~| ERROR the trait bound
 }
 
 const fn test2<T: ~const Foo + ~const Bar>() {
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.stderr
index 95c32b12241..877152472c1 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/trait-where-clause-const.stderr
@@ -1,44 +1,60 @@
-warning: the feature `effects` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/trait-where-clause-const.rs:7:30
-   |
-LL | #![feature(const_trait_impl, effects)]
-   |                              ^^^^^^^
-   |
-   = note: see issue #102090 <https://github.com/rust-lang/rust/issues/102090> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error[E0277]: the trait bound `T: ~const Bar` is not satisfied
+error[E0277]: the trait bound `Foo::{synthetic#0}: Compat` is not satisfied
   --> $DIR/trait-where-clause-const.rs:21:5
    |
 LL |     T::b();
-   |     ^ the trait `~const Bar` is not implemented for `T`
+   |     ^ the trait `Compat` is not implemented for `Foo::{synthetic#0}`
    |
 note: required by a bound in `Foo::b`
-  --> $DIR/trait-where-clause-const.rs:15:24
+  --> $DIR/trait-where-clause-const.rs:12:1
    |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Foo::b`
+...
 LL |     fn b() where Self: ~const Bar;
-   |                        ^^^^^^^^^^ required by this bound in `Foo::b`
-help: consider further restricting this bound
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn test1<T: ~const Foo + Bar>() where Foo::{synthetic#0}: Compat {
+   |                                       ++++++++++++++++++++++++++++++++
+
+error[E0308]: mismatched types
+  --> $DIR/trait-where-clause-const.rs:21:5
    |
-LL | const fn test1<T: ~const Foo + Bar + ~const Bar>() {
-   |                                    ++++++++++++
+LL |     T::b();
+   |     ^^^^^^ expected `host`, found `true`
+   |
+   = note: expected constant `host`
+              found constant `true`
 
-error[E0277]: the trait bound `T: ~const Bar` is not satisfied
-  --> $DIR/trait-where-clause-const.rs:23:12
+error[E0277]: the trait bound `Foo::{synthetic#0}: Compat` is not satisfied
+  --> $DIR/trait-where-clause-const.rs:24:5
    |
 LL |     T::c::<T>();
-   |            ^ the trait `~const Bar` is not implemented for `T`
+   |     ^ the trait `Compat` is not implemented for `Foo::{synthetic#0}`
    |
 note: required by a bound in `Foo::c`
-  --> $DIR/trait-where-clause-const.rs:16:13
+  --> $DIR/trait-where-clause-const.rs:12:1
    |
+LL | #[const_trait]
+   | ^^^^^^^^^^^^^^ required by this bound in `Foo::c`
+...
 LL |     fn c<T: ~const Bar>();
-   |             ^^^^^^^^^^ required by this bound in `Foo::c`
-help: consider further restricting this bound
+   |        - required by a bound in this associated function
+help: consider further restricting the associated type
+   |
+LL | const fn test1<T: ~const Foo + Bar>() where Foo::{synthetic#0}: Compat {
+   |                                       ++++++++++++++++++++++++++++++++
+
+error[E0308]: mismatched types
+  --> $DIR/trait-where-clause-const.rs:24:5
+   |
+LL |     T::c::<T>();
+   |     ^^^^^^^^^^^ expected `host`, found `true`
    |
-LL | const fn test1<T: ~const Foo + Bar + ~const Bar>() {
-   |                                    ++++++++++++
+   = note: expected constant `host`
+              found constant `true`
 
-error: aborting due to 2 previous errors; 1 warning emitted
+error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0277`.
+Some errors have detailed explanations: E0277, E0308.
+For more information about an error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.rs b/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.rs
index 3a8c6d5b1a4..c50c755f667 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.rs
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.rs
@@ -18,7 +18,8 @@ impl Trait for Ty {
 }
 
 fn main() {
-    require::<Ty>(); //~ ERROR the trait bound `Ty: const Trait` is not satisfied
+    // FIXME(effects): improve diagnostics on this
+    require::<Ty>(); //~ ERROR the trait bound `Trait::{synthetic#0}: const Compat` is not satisfied
 }
 
 struct Container<const N: u32>;
diff --git a/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.stderr b/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.stderr
index 258f95b5c4a..b9f6c9e8835 100644
--- a/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.stderr
+++ b/tests/ui/rfcs/rfc-2632-const-trait-impl/unsatisfied-const-trait-bound.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/unsatisfied-const-trait-bound.rs:27:37
+  --> $DIR/unsatisfied-const-trait-bound.rs:29:37
    |
 LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
    |                                     ^^^^^^^^^ expected `false`, found `true`
@@ -8,7 +8,7 @@ LL | fn accept0<T: Trait>(_: Container<{ T::make() }>) {}
               found constant `true`
 
 error[E0308]: mismatched types
-  --> $DIR/unsatisfied-const-trait-bound.rs:32:50
+  --> $DIR/unsatisfied-const-trait-bound.rs:34:50
    |
 LL | const fn accept1<T: ~const Trait>(_: Container<{ T::make() }>) {}
    |                                                  ^^^^^^^^^ expected `false`, found `host`
@@ -16,15 +16,14 @@ LL | const fn accept1<T: ~const Trait>(_: Container<{ T::make() }>) {}
    = note: expected constant `false`
               found constant `host`
 
-error[E0277]: the trait bound `Ty: const Trait` is not satisfied
-  --> $DIR/unsatisfied-const-trait-bound.rs:20:15
+error[E0277]: the trait bound `Trait::{synthetic#0}: const Compat` is not satisfied
+  --> $DIR/unsatisfied-const-trait-bound.rs:22:15
    |
 LL |     require::<Ty>();
-   |               ^^ the trait `const Trait` is not implemented for `Ty`
+   |               ^^ the trait `const Compat` is not implemented for `Trait::{synthetic#0}`
    |
-   = help: the trait `Trait` is implemented for `Ty`
 note: required by a bound in `require`
-  --> $DIR/unsatisfied-const-trait-bound.rs:6:15
+  --> $DIR/unsatisfied-const-trait-bound.rs:7:15
    |
 LL | fn require<T: const Trait>() {}
    |               ^^^^^^^^^^^ required by this bound in `require`