diff options
| author | Michael Goulet <michael@errs.io> | 2022-10-21 14:56:53 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-10-21 14:57:01 +0000 |
| commit | 419fde7a38fab7c0355d4091ddafd8d775e63f3f (patch) | |
| tree | 79588cde5e50f261d605d5fac0d3951b6eb63e4f /src/test | |
| parent | 0940040c0486a536be4f8685c7dd9a078f9e87c2 (diff) | |
| download | rust-419fde7a38fab7c0355d4091ddafd8d775e63f3f.tar.gz rust-419fde7a38fab7c0355d4091ddafd8d775e63f3f.zip | |
Handle RPITITs properly in register_hidden_type
Diffstat (limited to 'src/test')
6 files changed, 50 insertions, 13 deletions
diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err-2.rs b/src/test/ui/impl-trait/in-trait/default-body-type-err-2.rs new file mode 100644 index 00000000000..45ae2b8ad3a --- /dev/null +++ b/src/test/ui/impl-trait/in-trait/default-body-type-err-2.rs @@ -0,0 +1,13 @@ +// edition:2021 + +#![allow(incomplete_features)] +#![feature(async_fn_in_trait)] + +pub trait Foo { + async fn woopsie_async(&self) -> String { + 42 + //~^ ERROR mismatched types + } +} + +fn main() {} diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err-2.stderr b/src/test/ui/impl-trait/in-trait/default-body-type-err-2.stderr new file mode 100644 index 00000000000..142b1bff1a4 --- /dev/null +++ b/src/test/ui/impl-trait/in-trait/default-body-type-err-2.stderr @@ -0,0 +1,11 @@ +error[E0308]: mismatched types + --> $DIR/default-body-type-err-2.rs:8:9 + | +LL | 42 + | ^^- help: try using a conversion method: `.to_string()` + | | + | expected struct `String`, found integer + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err.rs b/src/test/ui/impl-trait/in-trait/default-body-type-err.rs new file mode 100644 index 00000000000..ac9baf91cae --- /dev/null +++ b/src/test/ui/impl-trait/in-trait/default-body-type-err.rs @@ -0,0 +1,13 @@ +#![allow(incomplete_features)] +#![feature(return_position_impl_trait_in_trait)] + +use std::ops::Deref; + +pub trait Foo { + fn lol(&self) -> impl Deref<Target = String> { + //~^ type mismatch resolving `<&i32 as Deref>::Target == String` + &1i32 + } +} + +fn main() {} diff --git a/src/test/ui/impl-trait/in-trait/default-body-type-err.stderr b/src/test/ui/impl-trait/in-trait/default-body-type-err.stderr new file mode 100644 index 00000000000..461247a3e3f --- /dev/null +++ b/src/test/ui/impl-trait/in-trait/default-body-type-err.stderr @@ -0,0 +1,12 @@ +error[E0271]: type mismatch resolving `<&i32 as Deref>::Target == String` + --> $DIR/default-body-type-err.rs:7:22 + | +LL | fn lol(&self) -> impl Deref<Target = String> { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `String` +LL | +LL | &1i32 + | ----- return type was inferred to be `&i32` here + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0271`. diff --git a/src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs b/src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs index f0d407cd527..ad3cc7c2524 100644 --- a/src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs +++ b/src/test/ui/impl-trait/in-trait/default-body-with-rpit.rs @@ -1,4 +1,4 @@ -// known-bug: #102688 +// check-pass // edition:2021 #![feature(async_fn_in_trait, return_position_impl_trait_in_trait)] diff --git a/src/test/ui/impl-trait/in-trait/default-body-with-rpit.stderr b/src/test/ui/impl-trait/in-trait/default-body-with-rpit.stderr deleted file mode 100644 index 4529d301f9e..00000000000 --- a/src/test/ui/impl-trait/in-trait/default-body-with-rpit.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0720]: cannot resolve opaque type - --> $DIR/default-body-with-rpit.rs:10:28 - | -LL | async fn baz(&self) -> impl Debug { - | ^^^^^^^^^^ cannot resolve opaque type - | - = note: these returned values have a concrete "never" type - = help: this error will resolve once the item's body returns a concrete type - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0720`. |
