(* TEST_BELOW
(* Blank lines added here to preserve locations. *)







*)

let empty_tuple = [%tuple];;
let empty_record = [%record];;
let empty_apply = [%no_args f];;
let f = function [%record_with_functor_fields] -> ();;
[%%empty_let];;
[%%empty_type];;
module type s = sig
 [%%missing_rhs]
end;;

let x: [%empty_poly_binder] = 0;;

let f (x:[%empty_poly_binder]) = 0;;

let f x = (x:[%empty_poly_binder]);;
let g: int -> [%empty_poly_binder] = fun n x -> x;;

let f (x : [%tfunctor_opt_arg]) = ();;

let f ([%empty_open_tuple_pat]) = ();;
let f ([%short_closed_tuple_pat]) = ();;

(* TEST
 readonly_files = "illegal_ppx.ml";
 setup-ocamlc.byte-build-env;
 all_modules = "illegal_ppx.ml";
 program = "ppx.exe";
 ocamlc.byte with ocamlcommon;
 all_modules = "broken_invariants.ml";
 flags = "-ppx '${ocamlrun} ${test_build_directory_prefix}/ocamlc.byte/ppx.exe'";
 toplevel;
*)
