(* Interface functions ******************************************************)
(* to share *)
-let type_check f st = function
+let type_check err f st = function
| a, uri, E.Abst (n, t) ->
+ let err msg = err (L.Uri uri :: msg) in
let f xt tt = ZE.set_entity (f tt) (a, uri, E.Abst (n, xt)) in
- L.loc := U.string_of_uri uri; ZT.type_of f st Z.empty_lenv t
+ ZT.type_of err f st Z.empty_lenv t
| a, uri, E.Abbr t ->
+ let err msg = err (L.Uri uri :: msg) in
let f xt tt = ZE.set_entity (f tt) (a, uri, E.Abbr xt) in
- L.loc := U.string_of_uri uri; ZT.type_of f st Z.empty_lenv t
+ ZT.type_of err f st Z.empty_lenv t
| _, _, E.Void -> assert false