-fwarn-incomplete-record-updates

Ian Lynagh igloo at earth.li
Sun Oct 17 22:03:10 EDT 2004


Hi,

I like to keep my programs warning free, but I don't know of a sensible
way of silencing

    Warning: Pattern match(es) are non-exhaustive
             In a record-update construct: Patterns not matched: Bar

(which is generally intentional) without also silencing useful warnings.
The attached patch adds a -fwarn-incomplete-record-updates that takes
over control of this warning from -fwarn-incomplete-patterns.


Thanks
Ian

-------------- next part --------------
Index: ghc/compiler/deSugar/Match.lhs
===================================================================
RCS file: /home/cvs/root/fptools/ghc/compiler/deSugar/Match.lhs,v
retrieving revision 1.67
diff -u -r1.67 Match.lhs
--- ghc/compiler/deSugar/Match.lhs	15 Oct 2004 15:28:51 -0000	1.67
+++ ghc/compiler/deSugar/Match.lhs	18 Oct 2004 01:58:04 -0000
@@ -67,8 +67,12 @@
   | otherwise             =
       match vars ty qs
   where (pats, eqns_shadow) = check qs
-        incomplete    = dopt Opt_WarnIncompletePatterns dflags
-			&& (notNull pats)
+        incomplete    = want_incomplete && (notNull pats)
+        want_incomplete = case ctx of
+                              DsMatchContext RecUpd _ _ ->
+                                  dopt Opt_WarnIncompletePatternsRecUpd dflags
+                              _ ->
+                                  dopt Opt_WarnIncompletePatterns       dflags
         shadow        = dopt Opt_WarnOverlappingPatterns dflags
 			&& not (null eqns_shadow)
 \end{code}
Index: ghc/compiler/main/CmdLineOpts.lhs
===================================================================
RCS file: /home/cvs/root/fptools/ghc/compiler/main/CmdLineOpts.lhs,v
retrieving revision 1.190
diff -u -r1.190 CmdLineOpts.lhs
--- ghc/compiler/main/CmdLineOpts.lhs	7 Oct 2004 15:54:08 -0000	1.190
+++ ghc/compiler/main/CmdLineOpts.lhs	18 Oct 2004 01:58:04 -0000
@@ -256,6 +256,7 @@
    | Opt_WarnDuplicateExports
    | Opt_WarnHiShadows
    | Opt_WarnIncompletePatterns
+   | Opt_WarnIncompletePatternsRecUpd
    | Opt_WarnMissingFields
    | Opt_WarnMissingMethods
    | Opt_WarnMissingSigs
Index: ghc/compiler/main/DriverFlags.hs
===================================================================
RCS file: /home/cvs/root/fptools/ghc/compiler/main/DriverFlags.hs,v
retrieving revision 1.138
diff -u -r1.138 DriverFlags.hs
--- ghc/compiler/main/DriverFlags.hs	7 Oct 2004 15:54:10 -0000	1.138
+++ ghc/compiler/main/DriverFlags.hs	18 Oct 2004 01:58:05 -0000
@@ -441,6 +441,7 @@
   ( "warn-duplicate-exports",    	Opt_WarnDuplicateExports ),
   ( "warn-hi-shadowing",         	Opt_WarnHiShadows ),
   ( "warn-incomplete-patterns",  	Opt_WarnIncompletePatterns ),
+  ( "warn-incomplete-record-updates",  	Opt_WarnIncompletePatternsRecUpd ),
   ( "warn-missing-fields",       	Opt_WarnMissingFields ),
   ( "warn-missing-methods",      	Opt_WarnMissingMethods ),
   ( "warn-missing-signatures",   	Opt_WarnMissingSigs ),
Index: ghc/docs/users_guide/flags.xml
===================================================================
RCS file: /home/cvs/root/fptools/ghc/docs/users_guide/flags.xml,v
retrieving revision 1.3
diff -u -r1.3 flags.xml
--- ghc/docs/users_guide/flags.xml	5 Oct 2004 13:56:31 -0000	1.3
+++ ghc/docs/users_guide/flags.xml	18 Oct 2004 01:58:05 -0000
@@ -591,6 +591,13 @@
 	  </row>
 
 	  <row>
+	    <entry><option>-fwarn-incomplete-record-updates</option></entry>
+	    <entry>warn when a record update could fail</entry>
+	    <entry>dynamic</entry>
+	    <entry><option>-fno-warn-incomplete-record-updates</option></entry>
+	  </row>
+
+	  <row>
 	    <entry><option>-fwarn-misc</option></entry>
 	    <entry>enable miscellaneous warnings</entry>
 	    <entry>dynamic</entry>


More information about the Cvs-ghc mailing list