t_except_case.mod 574 B

12345678910111213141516171819202122232425262728293031
  1. MODULE TExceptCase;
  2. (* M4: a CASE selector with no matching label and no ELSE raises
  3. caseSelectException. *)
  4. FROM M2EXCEPTION IMPORT
  5. M2Exception, IsM2Exception, caseSelectException;
  6. TYPE
  7. Colour = (red, green, blue);
  8. VAR ExitCode : INTEGER;
  9. VAR c : Colour;
  10. PROCEDURE Select;
  11. BEGIN
  12. c := blue;
  13. CASE c OF
  14. red: ExitCode := 1
  15. | green: ExitCode := 2
  16. END;
  17. ExitCode := 3
  18. EXCEPT
  19. IF IsM2Exception() AND (M2Exception() = caseSelectException) THEN
  20. ExitCode := 42
  21. ELSE
  22. ExitCode := 4
  23. END
  24. END Select;
  25. BEGIN
  26. ExitCode := 0;
  27. Select
  28. END TExceptCase.