diff options
| author | Muhammad Mominul Huque <mominul2082@gmail.com> | 2025-06-24 19:55:42 +0600 |
|---|---|---|
| committer | Muhammad Mominul Huque <mominul2082@gmail.com> | 2025-06-24 19:55:42 +0600 |
| commit | 2973939f7a2d3840b2cbbfe5b9177538c126dea3 (patch) | |
| tree | 1da3ed217f1aadc9b184b92fdfb9995c57cf618e /tests | |
| parent | a30f1783fe136d92545423dd30b12eb619973cdb (diff) | |
| download | rust-2973939f7a2d3840b2cbbfe5b9177538c126dea3.tar.gz rust-2973939f7a2d3840b2cbbfe5b9177538c126dea3.zip | |
Add impl_trait_in_bindings tests
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/impl-trait/in-bindings/lifetime-equality.rs | 19 | ||||
| -rw-r--r-- | tests/ui/impl-trait/in-bindings/region-lifetimes.rs | 17 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/in-bindings/lifetime-equality.rs b/tests/ui/impl-trait/in-bindings/lifetime-equality.rs new file mode 100644 index 00000000000..6cf48dccc7d --- /dev/null +++ b/tests/ui/impl-trait/in-bindings/lifetime-equality.rs @@ -0,0 +1,19 @@ +//@ check-pass + +#![feature(impl_trait_in_bindings)] + +// A test for #61773 which would have been difficult to support if we +// were to represent `impl_trait_in_bindings` using opaque types. + +trait Trait<'a, 'b> { } +impl<T> Trait<'_, '_> for T { } + + +fn bar<'a, 'b>(data0: &'a u32, data1: &'b u32) { + let x: impl Trait<'_, '_> = (data0, data1); + force_equal(x); +} + +fn force_equal<'a>(t: impl Trait<'a, 'a>) { } + +fn main() { } diff --git a/tests/ui/impl-trait/in-bindings/region-lifetimes.rs b/tests/ui/impl-trait/in-bindings/region-lifetimes.rs new file mode 100644 index 00000000000..189ab85a276 --- /dev/null +++ b/tests/ui/impl-trait/in-bindings/region-lifetimes.rs @@ -0,0 +1,17 @@ +//@ check-pass + +#![feature(impl_trait_in_bindings)] + +// A test for #61773 which would have been difficult to support if we +// were to represent `impl_trait_in_bindings` using opaque types. + +trait Foo<'a> { } +impl Foo<'_> for &u32 { } + +fn bar<'a>(data: &'a u32) { + let x: impl Foo<'_> = data; +} + +fn main() { + let _: impl Foo<'_> = &44; +} |
