Rollup merge of #87606 - JohnTitor:tait-tests, r=oli-obk

Add some TAIT-related regression tests

Closes #74280, closes #77179.
r? ``@oli-obk``
This commit is contained in:
Yuki Okushi 2021-07-31 04:09:32 +09:00 committed by GitHub
commit 2bdc54fb45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,13 @@
// 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() {}

View file

@ -0,0 +1,14 @@
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

View file

@ -0,0 +1,14 @@
// 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();
}

View file

@ -0,0 +1,12 @@
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`.