Fix to-iface conversion of RULES involving coercions in argument pattterns
authorSimon Peyton Jones <simonpj@microsoft.com>
Thu, 23 Aug 2012 15:33:36 +0000 (16:33 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 23 Aug 2012 15:33:36 +0000 (16:33 +0100)
This is part of the fix to Trac #7165

compiler/iface/MkIface.lhs

index c94b19a..93ca385 100644 (file)
@@ -1782,10 +1782,9 @@ coreRuleToIfaceRule mod rule@(Rule { ru_name = name, ru_fn = fn,
         -- level.  Reason: so that when we read it back in we'll
         -- construct the same ru_rough field as we have right now;
         -- see tcIfaceRule
-    do_arg (Type ty) = IfaceType (toIfaceType (deNoteType ty))
-    do_arg (Coercion co) = IfaceType (coToIfaceType co)
-                           
-    do_arg arg       = toIfaceExpr arg
+    do_arg (Type ty)     = IfaceType (toIfaceType (deNoteType ty))
+    do_arg (Coercion co) = IfaceCo   (coToIfaceType co)
+    do_arg arg           = toIfaceExpr arg
 
         -- Compute orphanhood.  See Note [Orphans] in IfaceSyn
         -- A rule is an orphan only if none of the variables