contract C { fn f() -> (u256) { return 0; } fn f(u256 a) -> (u256) { return a; } fn f(u256 a, u256 b) -> (u256) { return a+b; } fn f(u256 a, u256 b, u256 c) -> (u256) { return a+b+c; } fn call(u256 num) -> (u256) { if (num == 0) return f(); if (num == 1) return f({a: 1}); if (num == 2) return f({b: 1, a: 2}); if (num == 3) return f({c: 1, a: 2, b: 3}); if (num == 4) return f({b: 5, c: 1, a: 2}); return 500; } } // ==== // compileToEwasm: also // compileViaYul: also // ---- // call(u256): 0 -> 0 // call(u256): 1 -> 1 // call(u256): 2 -> 3 // call(u256): 3 -> 6 // call(u256): 4 -> 8 // call(u256): 5 -> 500