diff options
| author | Michael Goulet <michael@errs.io> | 2025-04-28 18:16:34 +0000 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-09-11 12:13:03 +0200 |
| commit | cf224ea1fbe2fb7eb64812288338a2c4cfe1d084 (patch) | |
| tree | b1e6a18289946147c3ec869f103462d5de6ae24f /tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs | |
| parent | 0e29865434db8d44109715515ea00479936fa668 (diff) | |
| download | rust-cf224ea1fbe2fb7eb64812288338a2c4cfe1d084.tar.gz rust-cf224ea1fbe2fb7eb64812288338a2c4cfe1d084.zip | |
incompletely prefer opaque type bounds when self type bottoms out in infer
Diffstat (limited to 'tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs')
| -rw-r--r-- | tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs b/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs new file mode 100644 index 00000000000..bb3acfde5bc --- /dev/null +++ b/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket.rs @@ -0,0 +1,25 @@ +//@ revisions: current next +//@[next] compile-flags: -Znext-solver +//@ ignore-compare-mode-next-solver (explicit revisions) +//@ check-pass + +// Regression test for trait-system-refactor-initiative#205. Avoid constraining +// the opaque type when applying blanket impls. + +trait Trait<T> {} + +impl<T> Trait<T> for T {} +impl Trait<u32> for u64 {} + +fn impls_trait<T: Trait<U>, U>() -> T { + todo!() +} + +fn foo() -> impl Sized { + if false { + // `opaque: Trait<u32>` shouldn't constrain `opaque` to `u32` via the blanket impl + return impls_trait::<_, u32>(); + } + 1u64 +} +fn main() {} |
