Resume reporting incomplete pattern matches for record updates
authorSimon Peyton Jones <simonpj@microsoft.com>
Thu, 27 Nov 2014 14:18:35 +0000 (14:18 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 27 Nov 2014 14:25:19 +0000 (14:25 +0000)
They were being inadvertently suppressed, even if you said -fwarn-incomplete-record-updates

See Trac #5728

compiler/deSugar/DsExpr.lhs
compiler/deSugar/Match.lhs

index 03544bb..c9134c9 100644 (file)
@@ -489,8 +489,11 @@ dsExpr expr@(RecordUpd record_expr (HsRecFields { rec_flds = fields })
         -- so that everything works when we are doing fancy unboxing on the
         -- constructor aguments.
         ; alts <- mapM (mk_alt upd_fld_env) cons_to_upd
-        ; ([discrim_var], matching_code) 
-                <- matchWrapper RecUpd (MG { mg_alts = alts, mg_arg_tys = [in_ty], mg_res_ty = out_ty, mg_origin = Generated })
+        ; ([discrim_var], matching_code)
+                <- matchWrapper RecUpd (MG { mg_alts = alts, mg_arg_tys = [in_ty]
+                                           , mg_res_ty = out_ty, mg_origin = FromSource })
+                                           -- FromSource is not strictly right, but we
+                                           -- want incomplete pattern-match warnings
 
         ; return (add_field_binds field_binds' $
                   bindNonRec discrim_var record_expr' matching_code) }
index 8bc8a11..3bbb0ec 100644 (file)
@@ -79,7 +79,7 @@ matchCheck_really dflags ctx@(DsMatchContext hs_ctx _) vars ty qs
        ; match vars ty qs }
   where
     (pats, eqns_shadow) = check qs
-    incomplete = incomplete_flag hs_ctx && (notNull pats)
+    incomplete = incomplete_flag hs_ctx && notNull pats
     shadow     = wopt Opt_WarnOverlappingPatterns dflags
               && notNull eqns_shadow