I expect the following code to give a “this pattern-matching is not exhaustive” error:
type _ bar =
| Flag : int bar
| Other : 'a bar
let foo : unit -> int bar -> unit =
fun () Other -> ()
And it does, in the toplevel and when compiled at the command-line. However, tuareg-mode reports “No errors”. (It does report an error if I change the code in minor ways, such as removing the unit
argument, or moving the match against Other
out of the fun
into a let
or match
.)
This seems to me like a bug in something (although if it isn’t, please enlighten me!). But I don’t know where to report it, or how to figure out where to report it. Is it a bug in tuareg-mode, or a bug in the part of ocaml that interacts with it?