// Issue #1818 fn lp(s: ~str, f: fn(~str) -> T) -> T { while false { let r = f(s); return r; } fail; } fn apply(s: ~str, f: fn(~str) -> T) -> T { fn g(s: ~str, f: fn(~str) -> T) -> T {f(s)} g(s, |v| { let r = f(v); r }) } fn main() {}