Self initialization causes crash. To fix it we need additional linter pass to detect situations with self-references during globals initialization.
variant var0{x: int}struct var0{r<-new tuple(var0,[{for(r in"00000000000000000");""=>var0}][0|>range][0|>range|>range][0|>range][0|>range][0|>range],var0,variant<var0:int>()as var0)
}let var0=var0()
[export]def a{print("{var0}");}