about summary refs log tree commit diff
path: root/tests/ui/traits/next-solver/overflow/recursion-limit-normalizes-to-constraints.rs
blob: e5a57a44d49805b228134f04b7cdfd69a6216267 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//@ compile-flags: -Znext-solver=coherence
//@ check-pass
#![feature(rustc_attrs)]
#![rustc_no_implicit_bounds]

// A regression test for trait-system-refactor-initiative#70.

trait Trait {
    type Assoc;
}

struct W<T>(*mut T);
impl<T> Trait for W<W<T>>
where
    W<T>: Trait,
{
    type Assoc = ();
}

trait NoOverlap {}
impl<T: Trait<Assoc = u32>> NoOverlap for T {}
// `Projection(<W<_> as Trait>::Assoc, u32)` should result in error even
// though applying the impl results in overflow. This is necessary to match
// the behavior of the old solver.
impl<T> NoOverlap for W<T> {}

fn main() {}