From 1d155dc1b6399ec69573fc8043f2ec2a96490b50 Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Mon, 17 Sep 2018 07:43:19 -0400 Subject: [PATCH] Expect more book errors --- compiler/src/lib/tiger/tiger_error.ml | 66 +++++++++++++++++++ compiler/src/lib/tiger/tiger_error.mli | 3 + .../src/lib/tiger/tiger_test_cases_book.ml | 21 ++++-- 3 files changed, 85 insertions(+), 5 deletions(-) diff --git a/compiler/src/lib/tiger/tiger_error.ml b/compiler/src/lib/tiger/tiger_error.ml index b4ec719..e1b0736 100644 --- a/compiler/src/lib/tiger/tiger_error.ml +++ b/compiler/src/lib/tiger/tiger_error.ml @@ -235,3 +235,69 @@ let is_invalid_syntax t = | Invalid_operand_type _ | Different_operand_types _ -> false + +let is_not_a_record t = + match t with + | Exp_not_a_record _ -> + true + | Invalid_syntax _ + | Wrong_type _ + | Unknown_type _ + | Unknown_id _ + | Id_is_a_function _ + | Id_not_a_function _ + | No_such_field_in_record _ + | Exp_not_an_array _ + | Wrong_type_of_expression_in_var_dec _ + | Wrong_type_used_as_array _ + | Wrong_type_used_as_record _ + | Wrong_type_of_field_value _ + | Wrong_type_of_arg _ + | Wrong_number_of_args _ + | Invalid_operand_type _ + | Different_operand_types _ -> + false + +let is_not_an_array t = + match t with + | Exp_not_an_array _ -> + true + | Exp_not_a_record _ + | Invalid_syntax _ + | Wrong_type _ + | Unknown_type _ + | Unknown_id _ + | Id_is_a_function _ + | Id_not_a_function _ + | No_such_field_in_record _ + | Wrong_type_of_expression_in_var_dec _ + | Wrong_type_used_as_array _ + | Wrong_type_used_as_record _ + | Wrong_type_of_field_value _ + | Wrong_type_of_arg _ + | Wrong_number_of_args _ + | Invalid_operand_type _ + | Different_operand_types _ -> + false + +let is_no_such_field_in_record t = + match t with + | No_such_field_in_record _ -> + true + | Exp_not_an_array _ + | Exp_not_a_record _ + | Invalid_syntax _ + | Wrong_type _ + | Unknown_type _ + | Unknown_id _ + | Id_is_a_function _ + | Id_not_a_function _ + | Wrong_type_of_expression_in_var_dec _ + | Wrong_type_used_as_array _ + | Wrong_type_used_as_record _ + | Wrong_type_of_field_value _ + | Wrong_type_of_arg _ + | Wrong_number_of_args _ + | Invalid_operand_type _ + | Different_operand_types _ -> + false diff --git a/compiler/src/lib/tiger/tiger_error.mli b/compiler/src/lib/tiger/tiger_error.mli index ed4a7cf..d7c2e79 100644 --- a/compiler/src/lib/tiger/tiger_error.mli +++ b/compiler/src/lib/tiger/tiger_error.mli @@ -74,3 +74,6 @@ val is_unknown_id : t -> bool val is_unknown_type : t -> bool val is_wrong_type : t -> bool val is_invalid_syntax : t -> bool +val is_not_a_record : t -> bool +val is_not_an_array : t -> bool +val is_no_such_field_in_record : t -> bool diff --git a/compiler/src/lib/tiger/tiger_test_cases_book.ml b/compiler/src/lib/tiger/tiger_test_cases_book.ml index 98e8383..7502b47 100644 --- a/compiler/src/lib/tiger/tiger_test_cases_book.ml +++ b/compiler/src/lib/tiger/tiger_test_cases_book.ml @@ -91,17 +91,28 @@ let is_error_expected_parsing_of_filename = (* TODO: Fill-in other expected cases *) None -(* TODO test21.tig - error : procedure returns value and procedure is used in arexpr *) -(* TODO test22.tig - No_such_field_in_record *) -(* TODO test24.tig - Exp_not_an_array *) -(* TODO test25.tig - Exp_not_a_record *) +(* TODO: test18.tig - error : definition of recursive functions is interrupted*) +(* TODO: test21.tig - error : procedure returns value and procedure is used in arexpr *) let is_error_expected_semant_of_filename = let module E = Tiger_error in function - | "test17.tig" -> + | "test17.tig" + | "test33.tig" -> Some Error.is_unknown_type (* TODO: Be more specific - which type? *) + | "test20.tig" -> + Some Error.is_unknown_id + (* TODO: Be more specific - the unknown id is "i" *) + | "test22.tig" -> + Some Error.is_no_such_field_in_record + (* TODO: Be more specific - which field? *) + | "test24.tig" -> + Some Error.is_not_an_array + (* TODO: Be more specific *) + | "test25.tig" -> + Some Error.is_not_a_record + (* TODO: Be more specific *) | "test09.tig" | "test11.tig" | "test13.tig" -- 2.20.1