Mixed.k 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. invoke {
  2. let C = 700
  3. function get_value (need_error: Bool) -> Int {
  4. if need_error {
  5. throw custom_error('oops')
  6. } else {
  7. return C
  8. }
  9. }
  10. function test (value: Int, need_error: Bool) -> Int {
  11. ensure positive { value > 0 }
  12. ensure odd { value % 2 == 1 }
  13. try to get_v1 {
  14. let value1 = get_value(false)
  15. }
  16. try to get_v2 {
  17. let value2 = get_value(need_error)
  18. }
  19. return value + value1 + value2
  20. ...
  21. handle error {
  22. unless positive {
  23. return -1
  24. }
  25. unless odd {
  26. return -2
  27. }
  28. failed to get_v1 {
  29. return -3
  30. }
  31. failed to get_v2 {
  32. return -4
  33. }
  34. }
  35. }
  36. assert test(-1, false) == -1
  37. assert test(-1, true) == -1
  38. assert test(6, false) == -2
  39. assert test(6, true) == -2
  40. assert test(7, false) == 2*C + 7
  41. assert test(7, true) == -4
  42. }