123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263moduleUpon_unreleasable_issue=structtypet=[`CR(** Leaves a CR, so that features cannot be released. *)|`Warning_for_collector_testing(** Only for ppx_expect testing; do not use. *)]letequalt1t2=t1=t2letcomment_prefix=function|`CR->"CR "|`Warning_for_collector_testing->"";;letmessage_when_expectation_contains_backtracet=Printf.sprintf{|
(* %sexpect_test_collector: This test expectation appears to contain a backtrace.
This is strongly discouraged as backtraces are fragile.
Please change this test to not include a backtrace. *)
|}(comment_prefixt);;endmoduletypeS=sigmoduleIO_run:sigtype'atendmoduleIO_flush:sigtype'atvalreturn:'a->'atvalbind:'at->f:('a->'bt)->'btvalto_run:'at->'aIO_run.tendvalflush:unit->unitIO_flush.tvalrun:(unit->unitIO_run.t)->unitvalflushed:unit->boolvalupon_unreleasable_issue:[`CR|`Warning_for_collector_testing]endmoduleIO_run=structtype'at='aletreturnx=xletbindt~f=ftendmoduleIO_flush=structincludeIO_runletto_runt=tendletflush()=()(* the runtime already flushes [stdout] *)letrunf=f()letflushed()=true(* the runtime flushed [stdout] before calling this function *)letupon_unreleasable_issue=`CR