diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/generic-associated-types/guide-inference-in-gat-arg-deeper.rs | 6 | ||||
| -rw-r--r-- | tests/ui/generic-associated-types/no-incomplete-gat-arg-inference.rs | 33 |
2 files changed, 38 insertions, 1 deletions
diff --git a/tests/ui/generic-associated-types/guide-inference-in-gat-arg-deeper.rs b/tests/ui/generic-associated-types/guide-inference-in-gat-arg-deeper.rs index 96a0f2f40bf..82ffa0221b9 100644 --- a/tests/ui/generic-associated-types/guide-inference-in-gat-arg-deeper.rs +++ b/tests/ui/generic-associated-types/guide-inference-in-gat-arg-deeper.rs @@ -1,5 +1,9 @@ -// Fix for <https://github.com/rust-lang/rust/issues/125196>. //@ check-pass +//@ revisions: current next +//@ ignore-compare-mode-next-solver (explicit revisions) +//@[next] compile-flags: -Znext-solver + +// Fix for <https://github.com/rust-lang/rust/issues/125196>. trait Tr { type Gat<T>; diff --git a/tests/ui/generic-associated-types/no-incomplete-gat-arg-inference.rs b/tests/ui/generic-associated-types/no-incomplete-gat-arg-inference.rs new file mode 100644 index 00000000000..0c25c64224b --- /dev/null +++ b/tests/ui/generic-associated-types/no-incomplete-gat-arg-inference.rs @@ -0,0 +1,33 @@ +//@ check-pass +//@ revisions: current next +//@ ignore-compare-mode-next-solver (explicit revisions) +//@[next] compile-flags: -Znext-solver + +// Regression test for trait-system-refactor-initiative#202. We have +// to make sure we don't constrain ambiguous GAT args when normalizing +// via where bounds or item bounds. + +trait Trait { + type Assoc<U>; +} + +fn ret<T: Trait, U>(x: U) -> <T as Trait>::Assoc<U> { + loop {} +} + +fn where_bound<T: Trait<Assoc<u32> = u32>>() { + let inf = Default::default(); + let x = ret::<T, _>(inf); + let _: i32 = inf; +} + +trait ItemBound { + type Bound: Trait<Assoc<u32> = u32>; +} +fn item_bound<T: ItemBound>() { + let inf = Default::default(); + let x = ret::<T::Bound, _>(inf); + let _: i32 = inf; +} + +fn main() {} |
