+ and transTy ~env typ =
+ (match typ with
+ | A.NameTy {symbol=sym; pos} ->
+ env_get_typ ~sym ~env ~pos
+ | A.RecordTy fields ->
+ let fields =
+ List.map fields ~f:(fun (A.Field {name; escape=_; typ; pos}) ->
+ let ty = env_get_typ ~sym:typ ~env ~pos in
+ (name, ty)
+ )
+ in
+ Type.new_record fields
+ | A.ArrayTy {symbol=sym; pos} ->
+ let element_ty = env_get_typ ~sym ~env ~pos in
+ Type.new_array element_ty
+ )