123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354openCoreopenPpxlib(** This file contains some simple tests to ensure that AST output assumptions that we
made while writing the PPXes are true *)letast_traverse_no_loc=object(self)inheritAst_traverse.sexp_ofmethod!location_=self#string"[loc_erased]"end;;letsexp_of_aststring=Lexing.from_stringstring|>Parse.implementation|>ast_traverse_no_loc#structure;;letare_equivalentab=letsexp_a=sexp_of_astainletsexp_b=sexp_of_astbinExpect_test_helpers_core.require_equal(moduleSexp)sexp_asexp_b;;let%expect_test"[%%demo_hoist and module%demo_hoist produce equivalent printed ASTs"=are_equivalent"[%%demo_hoist module Foo = struct end]""module%demo_hoist Foo = struct end";[%expect{| |}];are_equivalent"[%%demo_hoist module[@name \"hi\"] Foo = struct end]""module%demo_hoist[@name \"hi\"] Foo = struct end";[%expect{| |}];;let%expect_test"[%demo_hoist and let%demo_hoist produce equivalent printed ASTs"=are_equivalent"let () = [%demo_hoist let this_part = () in ()]""let () = let%demo_hoist this_part = () in ()";[%expect{| |}];;let%expect_test"[%%demo_hoist and let%demo_hoist at top level produce equivalent \
printed ASTs"=are_equivalent"[%%demo_hoist let this_part = ()]""let%demo_hoist this_part = ()";[%expect{| |}];;let%expect_test"foo a b is equivalent to let foo = fun a b ->"=are_equivalent"let%demo_hoist foo a b = a + b;;""let%demo_hoist foo = fun a b -> a + b;;";[%expect{| |}];;