The following snippet (written using AnyDSL/artic#23):
#[export]
fn main (a : i32) -> i32 {
test(a)
}
fn test(a : i32) -> ! {
test2(a)
}
fn test2(a : i32) -> ! {
test(a)
}
Crashes the compiler because ETA-reduction in Importer is greedy and skips rebuilding test, only attempting to rebuild the callee test2, and then vice versa, endlessly up until we get a segfault.