| 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
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
(* 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"