The following demonstrates a weird preprocessing issue with invalid OCaml-code:

camlp4o -str "let () = if true then then () else ()"

The above will print the valid OCaml code one might expect. It's nice that the preprocessor attempts to transform the code into one that the user may have intended, though this raises the questions whether it always has the same notion of correctness as the user... ;-)