var s = ""
fun a():String {
s += "A"
return ""
}
fun b():String {
s += "B"
return ""
}
fun c():String {
s += "C"
return ""
}
fun main(args : Array) {
var res = (if(true) {a()} else "") + b() + (if (true) {c()} else "")
println("s=${s}") // Java -> "ABC", Javascript -> "ACB"
}
Are their behavior well-defined somewhere in specification?