--- /dev/null
+// Regression test for #74280.
+
+#![feature(type_alias_impl_trait)]
+
+type Test = impl Copy;
+
+fn test() -> Test {
+ let y = || -> Test { () };
+ //~^ ERROR: concrete type differs from previous defining opaque type use
+ 7
+}
+
+fn main() {}
--- /dev/null
+error: concrete type differs from previous defining opaque type use
+ --> $DIR/issue-74280.rs:8:13
+ |
+LL | let y = || -> Test { () };
+ | ^^^^^^^^^^^^^^^^^ expected `i32`, got `()`
+ |
+note: previous use here
+ --> $DIR/issue-74280.rs:7:1
+ |
+LL | fn test() -> Test {
+ | ^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
--- /dev/null
+// Regression test for #77179.
+
+#![feature(type_alias_impl_trait)]
+
+type Pointer<T> = impl std::ops::Deref<Target=T>;
+
+fn test() -> Pointer<_> {
+ //~^ ERROR: the type placeholder `_` is not allowed within types
+ Box::new(1)
+}
+
+fn main() {
+ test();
+}
--- /dev/null
+error[E0121]: the type placeholder `_` is not allowed within types on item signatures for return types
+ --> $DIR/issue-77179.rs:7:22
+ |
+LL | fn test() -> Pointer<_> {
+ | --------^-
+ | | |
+ | | not allowed in type signatures
+ | help: replace with the correct return type: `Box<i32>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0121`.