// This used to ICE because it creates an `impl Trait` that captures a // hidden empty region. //@ check-pass fn server() -> impl FilterBase2 { segment2(|| { loop { } }).map2(|| "") } trait FilterBase2 { fn map2(self, _fn: F) -> Map2 where Self: Sized { loop { } } } struct Map2 { _func: F } impl FilterBase2 for Map2 { } fn segment2(_fn: F) -> Map2 where F: Fn() -> Result<(), ()> { loop { } } fn main() { server(); }