[MLton] nonexhaustiveMatch, redundantMatch and nonexhaustiveExnMatch
   
    Matthew Fluet
     
    fluet@cs.cornell.edu
       
    Wed, 3 Aug 2005 20:42:23 -0400 (EDT)
    
    
  
I've committed the patch.
> I introduced a new datatype 
> 
> +      datatype diagnostic =
> +         Error
> +       | Ignore
> +       | Warn
> 
> in control-flags in order to implement the {warn|ignore|error}
> annotations. Although the constructor names start with a capital letter,
> the names used in annotations do not:
That is the correct convention.  I went a little bit futher and put the 
datatype in a Control.Elaborate.Diagnostic structure, which gave a place 
to define the toString and fromString functions.
> The new annotations do not change the "warnMatch" setting. I'm not sure
> whether this is the best way to do it. The code is basically adapted from
> "allowFFI". Probably neither "allowFFI" nor "warnMatch" should have state
> of their own. As with "allowFFI", it is possible to create potentially
> confusing specifications:
> 
>   "warnMatch true"
>   ...
>   "redundantMatch false"
>   "nonexhaustiveMatch false"
> 
> Now warnMatch would still be true. However, things should work as expected
> as long as one only uses either "warnMatch" or "redundantMatch" +
> "nonexhaustiveMatch", but not both.
Right.  I will be adding a fix that eliminates the controls associated 
with the deprecated annotations.