summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits/new-solver/prefer-candidate-no-constraints.rs
blob: 6f8164f3a40f0aaffec91eb308f1571de92c42e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// compile-flags: -Ztrait-solver=next
// check-pass

trait Foo {}

impl<T> Foo for T {}

trait Bar {}

struct Wrapper<'a, T>(&'a T);

impl<'a, T> Bar for Wrapper<'a, T> where &'a T: Foo {}
// We need to satisfy `&'a T: Foo` when checking that this impl is WF
// that can either be satisfied via the param-env, or via an impl.
//
// When satisfied via the param-env, since each lifetime is canonicalized
// separately, we end up getting extra region constraints.
//
// However, when satisfied via the impl, there are no region constraints,
// and we can short-circuit a response with no external constraints.

fn main() {}