//! Test that we can evaluate nested obligations when invoking methods on recursive calls on | |
//! an RPIT. | |
//@revisions: next current | |
//@[next] compile-flags: -Znext-solver | |
//@[current] check-pass | |
pub trait Parser<E> { | |
fn parse(&self) -> E; | |
} | |
impl<E, T: Fn() -> E> Parser<E> for T { | |
fn parse(&self) -> E { | |
self() | |
} | |
} | |
pub fn recursive_fn<E>() -> impl Parser<E> { | |
move || recursive_fn().parse() | |
//[next]~^ ERROR: type annotations needed | |
} | |
fn main() {} |