open StateCPSMonad open TestBubbleSortCommon module InstantiateCode = struct open Runcode open Print_code module Lang = Code let string_of_code gen : string = (*mimicking Print_code.format_code*) let code = .< fun a -> .~(runM (gen ..) []) >. in let (cde, _) = close_code_delay_check code in let cde = (cde : Trx.closed_code_repr :> Parsetree.expression) in Pprintast.string_of_expression cde let printcode gen = let code = .< fun a -> .~(runM (gen ..) []) >. in let ppf = Format.std_formatter in print_endline "before-test"; (* Print_code.print_code Format.std_formatter code; *) let (cde, check) = close_code_delay_check code in (* print_closed_code ppf cde; *) Format.fprintf ppf ".<@,%a>.@ " format_code cde; (* end print_closed_code *) print_newline (); print_endline "after-test"; try check () with e -> Format.fprintf ppf "\n%s" (Printexc.to_string e) (* end print_code *) let instantiate gen = let code = .< fun a -> .~(runM (gen ..) []) >. in (* printcode gen; *) Runcode.run code end module Testing = Tests (InstantiateCode)