Check scope of break statements
[tiger.ml.git] / compiler / src / lib / tiger / tiger_test_cases.ml
index 082e02f..1ead5f5 100644 (file)
@@ -120,6 +120,30 @@ let micro =
         "
         ~is_error_expected_semant:(Some Error.is_cycle_in_type_dec)
     )
         "
         ~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 =
   ]
 
 let book ~dir =
This page took 0.023119 seconds and 4 git commands to generate.