diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-05-24 14:17:54 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-06-19 08:28:31 +0000 |
| commit | cbadf786bc482baf467f601d03a074000c422914 (patch) | |
| tree | 4164c88c9e771a72639f909c176fc6b80608d61e /tests/ui/impl-trait/trait_upcasting.rs | |
| parent | 4dcb70b8cf3a12bb3bf0ef38cd05e6ab3720402c (diff) | |
| download | rust-cbadf786bc482baf467f601d03a074000c422914.tar.gz rust-cbadf786bc482baf467f601d03a074000c422914.zip | |
Add tests
Diffstat (limited to 'tests/ui/impl-trait/trait_upcasting.rs')
| -rw-r--r-- | tests/ui/impl-trait/trait_upcasting.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/trait_upcasting.rs b/tests/ui/impl-trait/trait_upcasting.rs new file mode 100644 index 00000000000..cb3c17e87b4 --- /dev/null +++ b/tests/ui/impl-trait/trait_upcasting.rs @@ -0,0 +1,26 @@ +//! Test that we allow unsizing `Trait<Concrete>` to `Trait<Opaque>` and vice versa + +trait Trait<T> {} + +impl<T, U> Trait<T> for U {} + +fn hello() -> &'static (dyn Trait<impl Sized> + Send) { + if false { + let x = hello(); + let _: &'static dyn Trait<()> = x; + //~^ ERROR: mismatched types + } + todo!() +} + +fn bye() -> &'static dyn Trait<impl Sized> { + if false { + let mut x = bye(); + let y: &'static (dyn Trait<()> + Send) = &(); + x = y; + //~^ ERROR: mismatched types + } + todo!() +} + +fn main() {} |
