2024-06-11 01:49:12 -05:00
|
|
|
//! Test that we can evaluate nested obligations when invoking methods on recursive calls on
|
|
|
|
//! an RPIT.
|
|
|
|
|
2024-06-11 01:54:38 -05:00
|
|
|
//@revisions: next current
|
|
|
|
//@[next] compile-flags: -Znext-solver
|
|
|
|
|
|
|
|
//@[current] check-pass
|
2024-06-11 01:49:12 -05:00
|
|
|
|
2024-06-11 01:49:05 -05:00
|
|
|
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()
|
2024-06-11 01:54:38 -05:00
|
|
|
//[next]~^ ERROR: type annotations needed
|
2024-06-11 01:49:05 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|