about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorOli Scherer <github35764891676564198441@oli-obk.de>2021-03-12 12:02:29 +0000
committerOli Scherer <github35764891676564198441@oli-obk.de>2021-03-15 17:36:57 +0000
commit4a6dc8e20328ecb627a519c6704afadcf378a72b (patch)
treeee5607fbd29dd70d9a2bfce4f3e4ea15c8653db9 /src/test
parentcdbb0ff8ca7d6a4d6d858e03ffcc5360ddf60a3f (diff)
downloadrust-4a6dc8e20328ecb627a519c6704afadcf378a72b.tar.gz
rust-4a6dc8e20328ecb627a519c6704afadcf378a72b.zip
Only allow tait defining uses in function and method return position
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs4
-rw-r--r--src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr29
-rw-r--r--src/test/ui/generator/layout-error.min_tait.stderr35
-rw-r--r--src/test/ui/generator/layout-error.rs7
-rw-r--r--src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr12
-rw-r--r--src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr24
-rw-r--r--src/test/ui/generator/metadata-sufficient-for-layout.rs8
-rw-r--r--src/test/ui/mir/issue-75053.full_tait.stderr12
-rw-r--r--src/test/ui/mir/issue-75053.in_bindings.stderr2
-rw-r--r--src/test/ui/mir/issue-75053.min_tait.stderr12
-rw-r--r--src/test/ui/mir/issue-75053.rs3
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.min_tait.stderr14
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs2
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53096.rs7
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs9
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60371.rs1
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60371.stderr11
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr24
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-60407.rs11
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-63279.min_tait.stderr14
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-63279.rs2
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.min_tait.stderr21
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs6
-rw-r--r--src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr14
-rw-r--r--src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr14
-rw-r--r--src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs5
-rw-r--r--src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs4
-rw-r--r--src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr18
-rw-r--r--src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr12
-rw-r--r--src/test/ui/type-alias-impl-trait/structural-match.rs9
37 files changed, 333 insertions, 97 deletions
diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
index 3b31bc159c0..dfd82a25f4c 100644
--- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
+++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs
@@ -13,7 +13,7 @@ fn define() -> Bar {
 type Foo2 = impl Debug;
 
 fn define2() {
-    let x = || -> Foo2 { 42 };
+    let x = || -> Foo2 { 42 }; //~ ERROR not permitted here
 }
 
 type Foo3 = impl Debug;
@@ -31,7 +31,7 @@ type Foo4 = impl Debug;
 
 fn define4() {
     let y: Foo4 = 42;
-    //~^ ERROR mismatched types
+    //~^ ERROR not permitted here
 }
 
 fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
index da3ddb1c509..43fd76ef0ed 100644
--- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
+++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr
@@ -10,6 +10,15 @@ LL |     Bar(42)
    = note: expected opaque type `impl Debug`
                      found type `{integer}`
 
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:16:19
+   |
+LL |     let x = || -> Foo2 { 42 };
+   |                   ^^^^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
 error[E0308]: mismatched types
   --> $DIR/feature-gate-type_alias_impl_trait.rs:23:18
    |
@@ -36,19 +45,14 @@ LL |     define3(42)
    = note: expected opaque type `impl Debug`
                      found type `{integer}`
 
-error[E0308]: mismatched types
-  --> $DIR/feature-gate-type_alias_impl_trait.rs:33:19
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/feature-gate-type_alias_impl_trait.rs:33:12
    |
-LL | type Foo4 = impl Debug;
-   |             ---------- the expected opaque type
-...
 LL |     let y: Foo4 = 42;
-   |            ----   ^^ expected opaque type, found integer
-   |            |
-   |            expected due to this
+   |            ^^^^
    |
-   = note: expected opaque type `impl Debug`
-                     found type `{integer}`
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
 
 error: could not find defining uses
   --> $DIR/feature-gate-type_alias_impl_trait.rs:5:12
@@ -68,6 +72,7 @@ error: could not find defining uses
 LL | type Foo4 = impl Debug;
    |             ^^^^^^^^^^
 
-error: aborting due to 7 previous errors
+error: aborting due to 8 previous errors
 
-For more information about this error, try `rustc --explain E0308`.
+Some errors have detailed explanations: E0308, E0658.
+For more information about an error, try `rustc --explain E0308`.
diff --git a/src/test/ui/generator/layout-error.min_tait.stderr b/src/test/ui/generator/layout-error.min_tait.stderr
index 1be39856883..be469d781b5 100644
--- a/src/test/ui/generator/layout-error.min_tait.stderr
+++ b/src/test/ui/generator/layout-error.min_tait.stderr
@@ -4,6 +4,37 @@ error[E0425]: cannot find value `Foo` in this scope
 LL |         let a = Foo;
    |                 ^^^ not found in this scope
 
-error: aborting due to previous error
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/layout-error.rs:31:27
+   |
+LL |     Task::spawn(&POOL, || cb());
+   |                           ^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/layout-error.rs:30:28
+   |
+LL |     static POOL: Task<F> = Task::new();
+   |                            ^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
+error: concrete type differs from previous defining opaque type use
+  --> $DIR/layout-error.rs:31:24
+   |
+LL |     Task::spawn(&POOL, || cb());
+   |                        ^^^^^^^ expected `[type error]`, got `impl Future`
+   |
+note: previous use here
+  --> $DIR/layout-error.rs:30:5
+   |
+LL |     static POOL: Task<F> = Task::new();
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0425`.
+Some errors have detailed explanations: E0425, E0658.
+For more information about an error, try `rustc --explain E0425`.
diff --git a/src/test/ui/generator/layout-error.rs b/src/test/ui/generator/layout-error.rs
index 549c6f6ebe7..9f15a6b2eca 100644
--- a/src/test/ui/generator/layout-error.rs
+++ b/src/test/ui/generator/layout-error.rs
@@ -12,7 +12,7 @@ use std::future::Future;
 
 pub struct Task<F: Future>(F);
 impl<F: Future> Task<F> {
-    fn new() -> Self {
+    const fn new() -> Self {
         todo!()
     }
     fn spawn(&self, _: impl FnOnce() -> F) {
@@ -27,6 +27,7 @@ fn main() {
 
     type F = impl Future;
     // Check that statics are inhabited computes they layout.
-    static POOL: Task<F> = Task::new();
-    Task::spawn(&POOL, || cb());
+    static POOL: Task<F> = Task::new(); //[min_tait]~ ERROR not permitted here
+    Task::spawn(&POOL, || cb()); //[min_tait]~ ERROR type alias impl trait is not permitted here
+    //[min_tait]~^ ERROR concrete type differs from previous
 }
diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr b/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr
index 59cd8e04513..ce874c1518c 100644
--- a/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr
+++ b/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr
@@ -1,5 +1,5 @@
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/metadata-sufficient-for-layout.rs:11:32
+  --> $DIR/metadata-sufficient-for-layout.rs:10:32
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                ^^^^^^^^^^^^^^^^^^^^^
@@ -8,12 +8,18 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_binding
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
 warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/metadata-sufficient-for-layout.rs:11:55
+  --> $DIR/metadata-sufficient-for-layout.rs:10:55
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                                       ^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
-warning: 2 warnings emitted
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/metadata-sufficient-for-layout.rs:29:1
+   |
+LL | fn main() {}
+   | ^^^^^^^^^
+
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr b/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr
new file mode 100644
index 00000000000..e2b0d3622a6
--- /dev/null
+++ b/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr
@@ -0,0 +1,24 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/metadata-sufficient-for-layout.rs:22:23
+   |
+LL | static A: Option<F> = None;
+   |                       ^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
+error: concrete type differs from previous defining opaque type use
+  --> $DIR/metadata-sufficient-for-layout.rs:25:1
+   |
+LL | fn f() -> F { metadata_sufficient_for_layout::g() }
+   | ^^^^^^^^^^^ expected `[type error]`, got `impl Generator`
+   |
+note: previous use here
+  --> $DIR/metadata-sufficient-for-layout.rs:22:1
+   |
+LL | static A: Option<F> = None;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.rs b/src/test/ui/generator/metadata-sufficient-for-layout.rs
index 7d474c82eef..f206093d971 100644
--- a/src/test/ui/generator/metadata-sufficient-for-layout.rs
+++ b/src/test/ui/generator/metadata-sufficient-for-layout.rs
@@ -4,10 +4,9 @@
 // Regression test for #80998.
 //
 // aux-build:metadata-sufficient-for-layout.rs
-// check-pass
 
 // revisions: min_tait full_tait
-#![feature(min_type_alias_impl_trait)]
+#![feature(min_type_alias_impl_trait, rustc_attrs)]
 #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
 //[full_tait]~^ WARN incomplete
 //[full_tait]~| WARN incomplete
@@ -21,7 +20,10 @@ type F = impl Generator<(), Yield = (), Return = ()>;
 
 // Static queries the layout of the generator.
 static A: Option<F> = None;
+//[min_tait]~^ ERROR not permitted here
 
 fn f() -> F { metadata_sufficient_for_layout::g() }
+//[min_tait]~^ ERROR concrete type differs
 
-fn main() {}
+#[rustc_error]
+fn main() {} //[full_tait]~ ERROR
diff --git a/src/test/ui/mir/issue-75053.full_tait.stderr b/src/test/ui/mir/issue-75053.full_tait.stderr
index 0737c666f85..aff19094b7a 100644
--- a/src/test/ui/mir/issue-75053.full_tait.stderr
+++ b/src/test/ui/mir/issue-75053.full_tait.stderr
@@ -7,11 +7,15 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))]
    = note: `#[warn(incomplete_features)]` on by default
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
-error: fatal error triggered by #[rustc_error]
-  --> $DIR/issue-75053.rs:51:1
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-75053.rs:52:15
    |
-LL | fn main() {
-   | ^^^^^^^^^
+LL |     let _pos: Phantom1<DummyT<()>> = Scope::new().my_index();
+   |               ^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
 
 error: aborting due to previous error; 1 warning emitted
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/mir/issue-75053.in_bindings.stderr b/src/test/ui/mir/issue-75053.in_bindings.stderr
index 1c473d99139..a43fabc8f5d 100644
--- a/src/test/ui/mir/issue-75053.in_bindings.stderr
+++ b/src/test/ui/mir/issue-75053.in_bindings.stderr
@@ -8,7 +8,7 @@ LL | #![cfg_attr(in_bindings, feature(impl_trait_in_bindings))]
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
 error[E0282]: type annotations needed
-  --> $DIR/issue-75053.rs:53:38
+  --> $DIR/issue-75053.rs:52:38
    |
 LL |     type O;
    |     ------- `<Self as MyIndex<T>>::O` defined here
diff --git a/src/test/ui/mir/issue-75053.min_tait.stderr b/src/test/ui/mir/issue-75053.min_tait.stderr
index 180a4094ff2..7ce91e851a7 100644
--- a/src/test/ui/mir/issue-75053.min_tait.stderr
+++ b/src/test/ui/mir/issue-75053.min_tait.stderr
@@ -1,8 +1,12 @@
-error: fatal error triggered by #[rustc_error]
-  --> $DIR/issue-75053.rs:51:1
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-75053.rs:52:15
    |
-LL | fn main() {
-   | ^^^^^^^^^
+LL |     let _pos: Phantom1<DummyT<()>> = Scope::new().my_index();
+   |               ^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/mir/issue-75053.rs b/src/test/ui/mir/issue-75053.rs
index 80c0c796100..fc88d00c0c3 100644
--- a/src/test/ui/mir/issue-75053.rs
+++ b/src/test/ui/mir/issue-75053.rs
@@ -49,7 +49,6 @@ impl<T: MyFrom<Phantom2<DummyT<U>>>, U> MyIndex<Phantom1<T>> for Scope<U> {
 
 #[rustc_error]
 fn main() {
-    //[min_tait,full_tait]~^ ERROR rustc_error
-    let _pos: Phantom1<DummyT<()>> = Scope::new().my_index();
+    let _pos: Phantom1<DummyT<()>> = Scope::new().my_index(); //[min_tait,full_tait]~ ERROR not permitted here
     //[in_bindings]~^ ERROR type annotations needed
 }
diff --git a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.min_tait.stderr
index d71e12c60ff..c2cb4829fb7 100644
--- a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.min_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.min_tait.stderr
@@ -1,8 +1,17 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-52843-closure-constrain.rs:13:22
+   |
+LL |     let null = || -> Opaque { 0 };
+   |                      ^^^^^^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
 error: concrete type differs from previous defining opaque type use
   --> $DIR/issue-52843-closure-constrain.rs:13:16
    |
 LL |     let null = || -> Opaque { 0 };
-   |                ^^^^^^^^^^^^^^^^^^ expected `String`, got `i32`
+   |                ^^^^^^^^^^^^^^^^^^ expected `String`, got `[type error]`
    |
 note: previous use here
   --> $DIR/issue-52843-closure-constrain.rs:12:5
@@ -10,5 +19,6 @@ note: previous use here
 LL |     fn _unused() -> Opaque { String::new() }
    |     ^^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs b/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs
index e4ccb3742bc..01f874155fa 100644
--- a/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-52843-closure-constrain.rs
@@ -10,7 +10,7 @@ use std::fmt::Debug;
 fn main() {
     type Opaque = impl Debug;
     fn _unused() -> Opaque { String::new() }
-    let null = || -> Opaque { 0 };
+    let null = || -> Opaque { 0 }; //[min_tait]~ ERROR: not permitted here
     //~^ ERROR: concrete type differs from previous defining opaque type use
     println!("{:?}", null());
 }
diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr
index 38756ce4eb8..1a03ce79661 100644
--- a/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr
@@ -1,5 +1,5 @@
 warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-53096.rs:5:32
+  --> $DIR/issue-53096.rs:4:32
    |
 LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
    |                                ^^^^^^^^^^^^^^^^^^^^^^
@@ -8,12 +8,18 @@ LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trai
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-53096.rs:5:56
+  --> $DIR/issue-53096.rs:4:56
    |
 LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
    |                                                        ^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
-warning: 2 warnings emitted
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/issue-53096.rs:14:1
+   |
+LL | fn main() {}
+   | ^^^^^^^^^
+
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr
new file mode 100644
index 00000000000..c6c7a51618d
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr
@@ -0,0 +1,12 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-53096.rs:10:19
+   |
+LL | const BAZR: Foo = bar();
+   |                   ^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.rs b/src/test/ui/type-alias-impl-trait/issue-53096.rs
index 00c04935e50..fb621dc0bce 100644
--- a/src/test/ui/type-alias-impl-trait/issue-53096.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-53096.rs
@@ -1,5 +1,4 @@
-// check-pass
-#![feature(const_impl_trait, const_fn_fn_ptr_basics)]
+#![feature(const_impl_trait, const_fn_fn_ptr_basics, rustc_attrs)]
 // revisions: min_tait full_tait
 #![feature(min_type_alias_impl_trait)]
 #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
@@ -9,5 +8,7 @@
 type Foo = impl Fn() -> usize;
 const fn bar() -> Foo { || 0usize }
 const BAZR: Foo = bar();
+//[min_tait]~^ ERROR not permitted here
 
-fn main() {}
+#[rustc_error]
+fn main() {} //[full_tait]~ ERROR
diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr
index fe3b739dd0b..70d049ffa76 100644
--- a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr
@@ -1,5 +1,5 @@
 warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-53678-generator-and-const-fn.rs:6:32
+  --> $DIR/issue-53678-generator-and-const-fn.rs:4:32
    |
 LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
    |                                ^^^^^^^^^^^^^^^^^^^^^^
@@ -8,12 +8,18 @@ LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trai
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-53678-generator-and-const-fn.rs:6:56
+  --> $DIR/issue-53678-generator-and-const-fn.rs:4:56
    |
 LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
    |                                                        ^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
-warning: 2 warnings emitted
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/issue-53678-generator-and-const-fn.rs:23:1
+   |
+LL | fn main() {}
+   | ^^^^^^^^^
+
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr
new file mode 100644
index 00000000000..a3dea45a6a5
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr
@@ -0,0 +1,12 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-53678-generator-and-const-fn.rs:20:36
+   |
+LL | const FOO: GenOnce<usize, usize> = const_generator(10, 100);
+   |                                    ^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs
index 35001eb70a0..bf607d29ce4 100644
--- a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs
@@ -1,6 +1,4 @@
-// check-pass
-
-#![feature(const_impl_trait, generators, generator_trait)]
+#![feature(const_impl_trait, generators, generator_trait, rustc_attrs)]
 // revisions: min_tait full_tait
 #![feature(min_type_alias_impl_trait)]
 #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))]
@@ -19,6 +17,7 @@ const fn const_generator<Y, R>(yielding: Y, returning: R) -> GenOnce<Y, R> {
     }
 }
 
-const FOO: GenOnce<usize, usize> = const_generator(10, 100);
+const FOO: GenOnce<usize, usize> = const_generator(10, 100); //[min_tait]~ ERROR not permitted here
 
-fn main() {}
+#[rustc_error]
+fn main() {} //[full_tait]~ ERROR
diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.rs b/src/test/ui/type-alias-impl-trait/issue-60371.rs
index 14d21418ae8..4ac7f9423ff 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60371.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-60371.rs
@@ -12,6 +12,7 @@ impl Bug for &() {
     //~^^ ERROR could not find defining uses
 
     const FUN: fn() -> Self::Item = || ();
+    //~^ ERROR type alias impl trait is not permitted here
 }
 
 fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.stderr b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
index 461b8517ca4..255d381bf06 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60371.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-60371.stderr
@@ -7,6 +7,15 @@ LL |     type Item = impl Bug;
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
    = help: add `#![feature(min_type_alias_impl_trait)]` to the crate attributes to enable
 
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-60371.rs:14:37
+   |
+LL |     const FUN: fn() -> Self::Item = || ();
+   |                                     ^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
 error[E0277]: the trait bound `(): Bug` is not satisfied
   --> $DIR/issue-60371.rs:10:17
    |
@@ -22,7 +31,7 @@ error: could not find defining uses
 LL |     type Item = impl Bug;
    |                 ^^^^^^^^
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors
 
 Some errors have detailed explanations: E0277, E0658.
 For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr
index 31f7a77818c..5edf73c8ced 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr
@@ -1,5 +1,5 @@
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-60407.rs:5:32
+  --> $DIR/issue-60407.rs:3:32
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                ^^^^^^^^^^^^^^^^^^^^^
@@ -8,12 +8,18 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_binding
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
 warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-60407.rs:5:55
+  --> $DIR/issue-60407.rs:3:55
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                                       ^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
-warning: 2 warnings emitted
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/issue-60407.rs:12:1
+   |
+LL | fn main() {
+   | ^^^^^^^^^
+
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr
new file mode 100644
index 00000000000..edb8141c1b1
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr
@@ -0,0 +1,24 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-60407.rs:9:39
+   |
+LL | static mut TEST: Option<Debuggable> = None;
+   |                                       ^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
+error: concrete type differs from previous defining opaque type use
+  --> $DIR/issue-60407.rs:16:1
+   |
+LL | fn foo() -> Debuggable {
+   | ^^^^^^^^^^^^^^^^^^^^^^ expected `[type error]`, got `u32`
+   |
+note: previous use here
+  --> $DIR/issue-60407.rs:9:1
+   |
+LL | static mut TEST: Option<Debuggable> = None;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.rs b/src/test/ui/type-alias-impl-trait/issue-60407.rs
index e2a2fb838b9..afcbf313cc8 100644
--- a/src/test/ui/type-alias-impl-trait/issue-60407.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-60407.rs
@@ -1,19 +1,18 @@
-// check-pass
-
 // revisions: min_tait full_tait
-#![feature(min_type_alias_impl_trait)]
+#![feature(min_type_alias_impl_trait, rustc_attrs)]
 #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
 //[full_tait]~^ WARN incomplete
 //[full_tait]~| WARN incomplete
 
 type Debuggable = impl core::fmt::Debug;
 
-static mut TEST: Option<Debuggable> = None;
+static mut TEST: Option<Debuggable> = None; //[min_tait]~ ERROR not permitted here
 
-fn main() {
+#[rustc_error]
+fn main() { //[full_tait]~ ERROR
     unsafe { TEST = Some(foo()) }
 }
 
-fn foo() -> Debuggable {
+fn foo() -> Debuggable { //[min_tait]~ ERROR concrete type differs
     0u32
 }
diff --git a/src/test/ui/type-alias-impl-trait/issue-63279.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-63279.min_tait.stderr
index 3ecca1270a9..bdf414d0bad 100644
--- a/src/test/ui/type-alias-impl-trait/issue-63279.min_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-63279.min_tait.stderr
@@ -1,3 +1,12 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-63279.rs:11:11
+   |
+LL |     || -> Closure { || () }
+   |           ^^^^^^^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
 error[E0271]: type mismatch resolving `<[closure@$DIR/issue-63279.rs:11:5: 11:28] as FnOnce<()>>::Output == ()`
   --> $DIR/issue-63279.rs:8:16
    |
@@ -7,6 +16,7 @@ LL | type Closure = impl FnOnce();
    = note: expected opaque type `impl FnOnce<()>`
                 found unit type `()`
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0271`.
+Some errors have detailed explanations: E0271, E0658.
+For more information about an error, try `rustc --explain E0271`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-63279.rs b/src/test/ui/type-alias-impl-trait/issue-63279.rs
index 3b0bddf8f7b..086715626bc 100644
--- a/src/test/ui/type-alias-impl-trait/issue-63279.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-63279.rs
@@ -8,7 +8,7 @@
 type Closure = impl FnOnce(); //~ ERROR: type mismatch resolving
 
 fn c() -> Closure {
-    || -> Closure { || () }
+    || -> Closure { || () } //[min_tait]~ ERROR: not permitted here
 }
 
 fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr
index 8a51c14a008..cf668fc6e06 100644
--- a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr
@@ -1,5 +1,5 @@
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:6:32
+  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:5:32
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                ^^^^^^^^^^^^^^^^^^^^^
@@ -8,12 +8,18 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_binding
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
 warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:6:55
+  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:5:55
    |
 LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                                       ^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
 
-warning: 2 warnings emitted
+error: fatal error triggered by #[rustc_error]
+  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:19:1
+   |
+LL | fn main() {
+   | ^^^^^^^^^
+
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.min_tait.stderr
new file mode 100644
index 00000000000..5b6c4b5cda1
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.min_tait.stderr
@@ -0,0 +1,21 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:20:13
+   |
+LL |     take(|| {});
+   |             ^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:22:13
+   |
+LL |     take(|| {});
+   |             ^
+   |
+   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs
index 09709639c7b..b7f05bd83ed 100644
--- a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs
+++ b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs
@@ -1,5 +1,4 @@
 // compile-flags: -Zsave-analysis
-// check-pass
 
 // revisions: min_tait full_tait
 #![feature(min_type_alias_impl_trait, rustc_attrs)]
@@ -16,7 +15,10 @@ type T = impl Sized;
 
 fn take(_: fn() -> T) {}
 
-fn main() {
+#[rustc_error]
+fn main() { //[full_tait]~ ERROR fatal error triggered by #[rustc_error]
     take(|| {});
+    //[min_tait]~^ ERROR not permitted here
     take(|| {});
+    //[min_tait]~^ ERROR not permitted here
 }
diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr
index faddecb2176..40949c84d23 100644
--- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr
@@ -1,17 +1,25 @@
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
   --> $DIR/no_inferrable_concrete_type.rs:6:32
    |
-LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))]
+LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
    |                                ^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(incomplete_features)]` on by default
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
+warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/no_inferrable_concrete_type.rs:6:55
+   |
+LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
+   |                                                       ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+
 error: could not find defining uses
-  --> $DIR/no_inferrable_concrete_type.rs:9:12
+  --> $DIR/no_inferrable_concrete_type.rs:10:12
    |
 LL | type Foo = impl Copy;
    |            ^^^^^^^^^
 
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr
index 3194bd76107..d69e4cccdf0 100644
--- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr
@@ -1,8 +1,18 @@
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/no_inferrable_concrete_type.rs:16:12
+   |
+LL |     let _: Foo = std::mem::transmute(0u8);
+   |            ^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
+
 error: could not find defining uses
-  --> $DIR/no_inferrable_concrete_type.rs:9:12
+  --> $DIR/no_inferrable_concrete_type.rs:10:12
    |
 LL | type Foo = impl Copy;
    |            ^^^^^^^^^
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs
index 4fdaa033fb0..8ff588ef278 100644
--- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs
+++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs
@@ -3,8 +3,9 @@
 
 // revisions: min_tait full_tait
 #![feature(min_type_alias_impl_trait)]
-#![cfg_attr(full_tait, feature(type_alias_impl_trait))]
+#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
 //[full_tait]~^ WARN incomplete
+//[full_tait]~| WARN incomplete
 
 type Foo = impl Copy; //~ could not find defining uses
 
@@ -12,5 +13,5 @@ type Foo = impl Copy; //~ could not find defining uses
 fn bar(x: Foo) -> Foo { x }
 
 fn main() {
-    let _: Foo = std::mem::transmute(0u8);
+    let _: Foo = std::mem::transmute(0u8); //[min_tait]~ ERROR not permitted here
 }
diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr
index f1ac45ba5db..e962b23a587 100644
--- a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr
@@ -1,8 +1,12 @@
-error: `impl Send` cannot be used in patterns
-  --> $DIR/structural-match-no-leak.rs:19:9
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/structural-match-no-leak.rs:15:24
    |
-LL |         LEAK_FREE => (),
-   |         ^^^^^^^^^
+LL | const LEAK_FREE: Bar = leak_free();
+   |                        ^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs
index 34d9663223b..d0bae30f996 100644
--- a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs
+++ b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs
@@ -12,12 +12,12 @@ type Bar = impl Send;
 const fn leak_free() -> Bar {
     7i32
 }
-const LEAK_FREE: Bar = leak_free();
+const LEAK_FREE: Bar = leak_free(); //[min_tait]~ ERROR not permitted here
 
 fn leak_free_test() {
     match todo!() {
         LEAK_FREE => (),
-        //~^ `impl Send` cannot be used in patterns
+        //[full_tait]~^ `impl Send` cannot be used in patterns
         _ => (),
     }
 }
diff --git a/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr
index 4202d0fff43..b94e06e6d0e 100644
--- a/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr
@@ -1,17 +1,25 @@
 warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/structural-match.rs:4:36
+  --> $DIR/structural-match.rs:4:32
    |
-LL | #![cfg_attr(not(min_tait), feature(type_alias_impl_trait, min_type_alias_impl_trait))]
-   |                                    ^^^^^^^^^^^^^^^^^^^^^
+LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
+   |                                ^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(incomplete_features)]` on by default
    = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
 
+warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/structural-match.rs:4:55
+   |
+LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
+   |                                                       ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+
 error: `impl Send` cannot be used in patterns
-  --> $DIR/structural-match.rs:19:9
+  --> $DIR/structural-match.rs:20:9
    |
 LL |         VALUE => (),
    |         ^^^^^
 
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to previous error; 2 warnings emitted
 
diff --git a/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr
index f63b1fb23df..36c49a954bd 100644
--- a/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr
+++ b/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr
@@ -1,8 +1,12 @@
-error: `impl Send` cannot be used in patterns
-  --> $DIR/structural-match.rs:19:9
+error[E0658]: type alias impl trait is not permitted here
+  --> $DIR/structural-match.rs:16:20
    |
-LL |         VALUE => (),
-   |         ^^^^^
+LL | const VALUE: Foo = value();
+   |                    ^^^^^^^
+   |
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
 
 error: aborting due to previous error
 
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/type-alias-impl-trait/structural-match.rs b/src/test/ui/type-alias-impl-trait/structural-match.rs
index ceab13ba487..daf914cc494 100644
--- a/src/test/ui/type-alias-impl-trait/structural-match.rs
+++ b/src/test/ui/type-alias-impl-trait/structural-match.rs
@@ -1,8 +1,9 @@
 #![feature(const_impl_trait)]
 // revisions: min_tait full_tait
-#![cfg_attr(min_tait, feature(min_type_alias_impl_trait))]
-#![cfg_attr(not(min_tait), feature(type_alias_impl_trait, min_type_alias_impl_trait))]
+#![feature(min_type_alias_impl_trait)]
+#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))]
 //[full_tait]~^ WARN incomplete
+//[full_tait]~| WARN incomplete
 
 type Foo = impl Send;
 
@@ -12,12 +13,12 @@ struct A;
 const fn value() -> Foo {
     A
 }
-const VALUE: Foo = value();
+const VALUE: Foo = value(); //[min_tait]~ ERROR not permitted here
 
 fn test() {
     match todo!() {
         VALUE => (),
-        //~^ `impl Send` cannot be used in patterns
+        //[full_tait]~^ `impl Send` cannot be used in patterns
         _ => (),
     }
 }