Skip to content

Literal type "casting" does not work inside modules

The strange literal type "casting" behavior does not work inside modules:

(* works *)
let works = (0 : timestamp)

(* does not work: *)
(* Invalid type(s).
   Expected: "timestamp", but got: "int". *)
module Does_not_work = struct
  let does_not_work = (0 : timestamp)
end

let main (_ : unit * timestamp) : operation list * timestamp =
  (([] : operation list), works)