X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_test_cases.ml;h=1ead5f5226aa2e197513083e34ed47f606b4324d;hb=HEAD;hp=81690838a73a4cf472b5bb2a3fbf9860db2f2fd8;hpb=d5517328dcf93c5bd74f1895262e47b70d2e4313;p=tiger.ml.git diff --git a/compiler/src/lib/tiger/tiger_test_cases.ml b/compiler/src/lib/tiger/tiger_test_cases.ml index 8169083..1ead5f5 100644 --- a/compiler/src/lib/tiger/tiger_test_cases.ml +++ b/compiler/src/lib/tiger/tiger_test_cases.ml @@ -55,21 +55,19 @@ let micro = (Some [ID "f"; LPAREN; STRING "a"; COMMA; INT 3; COMMA; ID "foo"; RPAREN]) ~is_error_expected_semant:(Some Error.is_unknown_id) ) - ; ( let code = - "let \ - type a = int \ - type b = a \ - type c = b \ - var i : a := 2 \ - var j : c := 3 \ - in \ - i := j \ - end \ - " - in - Test.case + ; ( Test.case "Type aliases" - ~code + ~code: + "let \ + type a = int \ + type b = a \ + type c = b \ + var i : a := 2 \ + var j : c := 3 \ + in \ + i := j \ + end \ + " ) ; ( let code = "let \ @@ -98,6 +96,54 @@ let micro = lst \n\ end" ) + ; ( Test.case + "Cycle in type dec" + ~code:"\ + let \n\ + type a = b \n\ + type b = a \n\ + in \n\ + end \ + " + ~is_error_expected_semant:(Some Error.is_cycle_in_type_dec) + ) + ; ( Test.case + "Cycle in type dec" + ~code:"\ + let \n\ + type a = b \n\ + type b = c \n\ + type c = a \n\ + var x : a := 1 \n\ + in \n\ + end \ + " + ~is_error_expected_semant:(Some Error.is_cycle_in_type_dec) + ) + ; ( Test.case + "Break outside loop" + ~code: + "break" + ~is_error_expected_semant:(Some Error.is_break_outside_loop) + ) + ; ( Test.case + "Break within for loop" + ~code:"for i := 0 to 5 do (print(\"x\"); break)" + ) + ; ( Test.case + "Break after for loop" + ~code:"(for i := 0 to 5 do (print(\"x\"); break); break)" + ~is_error_expected_semant:(Some Error.is_break_outside_loop) + ) + ; ( Test.case + "Break within while loop" + ~code:"while 1 do (print(\"x\"); break)" + ) + ; ( Test.case + "Break after while loop" + ~code:"(while 1 do (print(\"x\"); break); break)" + ~is_error_expected_semant:(Some Error.is_break_outside_loop) + ) ] let book ~dir =