blob: e8062faebfac9964f5b2eff51907766e7ef39dd4 [file] [log] [blame]
//@ build-pass
//@ compile-flags:-Zmir-opt-level=3
struct D;
trait Tr {
type It;
fn foo(self) -> Option<Self::It>;
}
impl<'a> Tr for &'a D {
type It = ();
fn foo(self) -> Option<()> {
None
}
}
fn run<F>(f: F)
where
for<'a> &'a D: Tr,
F: Fn(<&D as Tr>::It),
{
let d = &D;
while let Some(i) = d.foo() {
f(i);
}
}
fn main() {
run(|_| {});
}