home
/
code
/
tiger.ml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
WIP type-checking -- check array expressions
[tiger.ml.git]
/
compiler
/
src
/
lib
/
tiger
/
tiger_error.ml
diff --git
a/compiler/src/lib/tiger/tiger_error.ml
b/compiler/src/lib/tiger/tiger_error.ml
index
782f138
..
70c3e3c
100644
(file)
--- a/
compiler/src/lib/tiger/tiger_error.ml
+++ b/
compiler/src/lib/tiger/tiger_error.ml
@@
-11,6
+11,7
@@
type t =
| Id_not_a_function of {id : Sym.t; pos : Pos.t}
| No_such_field_in_record of {field : Sym.t; record : Typ.t; pos : Pos.t}
| Exp_not_a_record of {ty : Typ.t; pos : Pos.t}
| Id_not_a_function of {id : Sym.t; pos : Pos.t}
| No_such_field_in_record of {field : Sym.t; record : Typ.t; pos : Pos.t}
| Exp_not_a_record of {ty : Typ.t; pos : Pos.t}
+ | Exp_not_an_array of {ty : Typ.t; pos : Pos.t}
| Wrong_type of
{ expected : Typ.t
; given : Typ.t
| Wrong_type of
{ expected : Typ.t
; given : Typ.t
@@
-27,6
+28,11
@@
type t =
; ty : Typ.t
; pos : Pos.t
}
; 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
| Wrong_type_of_field_value of
{ field_id : Sym.t
; expected : Typ.t
@@
-82,7
+88,11
@@
let to_string =
s "No field %S in record %S in %s"
(Sym.to_string field) (Typ.to_string record) (Pos.to_string pos)
| Exp_not_a_record {ty; pos} ->
s "No field %S in record %S in %s"
(Sym.to_string field) (Typ.to_string record) (Pos.to_string pos)
| Exp_not_a_record {ty; pos} ->
- s ( "This expression has type %S, it is not a record, it cannot be"
+ s ( "The expression of type %S is not a record, it cannot be"
+ ^^"accessed in %s")
+ (Typ.to_string ty) (Pos.to_string pos)
+ | Exp_not_an_array {ty; pos} ->
+ s ( "The expression of type %S is not an array, it cannot be"
^^"accessed in %s")
(Typ.to_string ty) (Pos.to_string pos)
| Wrong_type {expected; given; pos} ->
^^"accessed in %s")
(Typ.to_string ty) (Pos.to_string pos)
| Wrong_type {expected; given; pos} ->
@@
-97,6
+107,10
@@
let to_string =
(Typ.to_string expected)
(Typ.to_string given)
(Pos.to_string pos)
(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")
| 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")
@@
-144,8
+158,10
@@
let is_unknown_id t =
| Id_not_a_function _
| No_such_field_in_record _
| Exp_not_a_record _
| 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 _
| 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_type_used_as_record _
| Wrong_type_of_field_value _
| Wrong_type_of_arg _
This page took
0.030061 seconds
and
4
git commands to generate.