// #failed: resolve // #error: you can get through this procedure without hitting a return stmt a :: proc(): int { val := 10; { if (val == 1) { return 0; } else if val == 2 { val = 5; } else { val = 4; } } } // #error: you can get through this procedure without hitting a return stmt b :: proc(): int { val := 10; { if val == 10 { if val == 10 { return 0; } } else if val == 5 { return 20; } else { return 0; } } } // regression, error in return and we don't want to report the lack of return by accident // #error: cannot assign void c :: proc(): int { for { return; } } // #error: cannot assign void d :: proc(): int { val := 4; if val { return; } } // #error: you can get through this procedure without hitting a return stmt e :: proc(): int { val := false; for { if val { return 10; } } if val { } else { return 10; } } f :: proc(): int { switch 4 { case 1: return 0; default: return 0; } } // #error: you can get through this procedure without hitting a return stmt g :: proc(): int { val := 4; switch val { case 1: return 0; case 2: return 0; case 3: return 0; } } h :: proc(): int { val := 4; switch val { case 1: return 0; case 2: return 0; case 3: return 0; default: return 0; } }