// Tests that using fulfillment in the trait solver means that we detect that a | |
// method is impossible, leading to no ambiguity. | |
//@ check-pass | |
//@ revisions: current next | |
//@ ignore-compare-mode-next-solver (explicit revisions) | |
//@[next] compile-flags: -Znext-solver | |
struct W<T, U>(Option<T>, Option<U>); | |
impl<'a> W<fn(&'a ()), u32> { | |
fn method(&self) {} | |
} | |
trait Leak {} | |
impl<T: Fn(&())> Leak for T {} | |
impl<T: Leak> W<T, i32> { | |
fn method(&self) {} | |
} | |
fn test<'a>() { | |
let x: W<fn(&'a ()), _> = W(None, None); | |
x.method(); | |
} | |
fn main() {} |