mte/unikernel/duniverse/ppxlib/test/pprintast/oldschool-constraints/pprint_ppat_constraint.ml

35 lines
1 KiB
OCaml
Raw Normal View History

2025-11-11 02:07:51 +01:00
open Ppxlib
let loc = Location.none
let ast =
let vbs =
let pat =
Ast_builder.Default.ppat_constraint ~loc
[%pat? f]
(Ast_builder.Default.ptyp_poly ~loc
[ Loc.make ~loc "a" ]
[%type: 'a -> unit])
in
let expr = [%expr fun _ -> ()] in
(* It is important that this is either built using [Latest.value_binding]
or assembled manually as [Ast_builder.Defaut.value_binding] will
generate a pvb_constraint, entirely defeatin the test's purpose. *)
[ Ast_builder.Default.Latest.value_binding ~loc ~pat ~expr () ]
in
Ast_builder.Default.pstr_value ~loc Nonrecursive vbs
let print_source () = Format.printf "%a\n" Pprintast.structure_item ast
let print_ast () = Format.printf "%a\n" Pp_ast.Default.structure_item ast
let () =
match Sys.argv with
| [| _exec |] -> print_source ()
| [| _exec; _flag |] ->
print_ast ();
Format.printf "------- PRINTED AS -------\n";
print_source ()
| _ ->
Printf.eprintf "Invalid usage!";
exit 1