module ZE = BagEnvironment
module ZT = BagType
+IFDEF TYPE THEN
+
(* Interface functions ******************************************************)
(* to share *)
-let type_check f st = function
- | a, uri, E.Abst (n, t) ->
- 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
- | a, uri, E.Abbr t ->
- 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
- | _, _, E.Void -> assert false
+let type_check err f st = function
+ | ra, na, uri, E.Abst (a, t) ->
+ let err msg = err (L.Uri uri :: msg) in
+ let f xt tt = ZE.set_entity (f tt) (ra, na, uri, E.abst a xt) in
+ ZT.type_of err f st Z.empty_lenv t
+ | ra, na, uri, E.Abbr (a, t) ->
+ let err msg = err (L.Uri uri :: msg) in
+ let f xt tt = ZE.set_entity (f tt) (ra, na, uri, E.abbr a xt) in
+ ZT.type_of err f st Z.empty_lenv t
+ | _, _, _, E.Void -> assert false
+
+END