--- /dev/null
+warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes
+ --> $DIR/issue-52843-closure-constrain.rs:5:32
+ |
+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: 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`
+ |
+note: previous use here
+ --> $DIR/issue-52843-closure-constrain.rs:12:5
+ |
+LL | fn _unused() -> Opaque { String::new() }
+ | ^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error; 1 warning emitted
+