; ty : Typ.t
; pos : Pos.t
}
+ | Wrong_type_used_as_array of
+ { ty_id : Sym.t
+ ; ty : Typ.t
+ ; pos : Pos.t
+ }
| Wrong_type_of_field_value of
{ field_id : Sym.t
; expected : Typ.t
(Typ.to_string expected)
(Typ.to_string given)
(Pos.to_string pos)
+ | Wrong_type_used_as_array {ty_id; ty; pos} ->
+ s ( "Identifier %S is bound to type %S, not an array. "
+ ^^"It cannot be used in %s")
+ (Sym.to_string ty_id) (Typ.to_string ty) (Pos.to_string pos)
| Wrong_type_used_as_record {ty_id; ty; pos} ->
s ( "Identifier %S is bound to type %S, not a record. "
^^"It cannot be used in %s")
| Exp_not_an_array _
| Wrong_type _
| 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_unknown_type t =
+ match t with
+ | Unknown_type _ ->
+ true
+ | Unknown_id _
+ | Invalid_syntax _
+ | Id_is_a_function _
+ | Id_not_a_function _
+ | No_such_field_in_record _
+ | Exp_not_a_record _
+ | Exp_not_an_array _
+ | Wrong_type _
+ | 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_wrong_type t =
+ match t with
+ | Wrong_type _ ->
+ true
+ | Unknown_type _
+ | Unknown_id _
+ | Invalid_syntax _
+ | Id_is_a_function _
+ | Id_not_a_function _
+ | No_such_field_in_record _
+ | Exp_not_a_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_wrong_number_of_args t =
+ match t with
+ | Wrong_number_of_args _ ->
+ true
+ | Wrong_type _
+ | Unknown_type _
+ | Unknown_id _
+ | Invalid_syntax _
+ | Id_is_a_function _
+ | Id_not_a_function _
+ | No_such_field_in_record _
+ | Exp_not_a_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 _
+ | Invalid_operand_type _
+ | Different_operand_types _ ->
+ false
+
+let is_invalid_syntax t =
+ match t with
+ | Invalid_syntax _ ->
+ true
+ | Wrong_type _
+ | Unknown_type _
+ | Unknown_id _
+ | Id_is_a_function _
+ | Id_not_a_function _
+ | No_such_field_in_record _
+ | Exp_not_a_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_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 _