method ctyp =
fun f t ->
let () = o#node f t Ast.loc_of_ctyp
in
match t with
| Ast.TyDcl (_, tn, tp, te, cl) ->
(pp f "@[<2>%a%a@]" o#var tn o#type_params tp;
(match te with
| Ast.TyNil _ -> ()
| _ -> pp f " =@ %a" o#ctyp te);
if cl <> []
then pp f "@ %a" (list o#constrain "@ ") cl
else ())
| Ast.TyCol (_, t1, (Ast.TyMut (_, t2))) ->
pp f "@[%a :@ mutable %a@]" o#ctyp t1 o#ctyp t2
| t -> super#ctyp f t