Tidy up the treatment of SPECIALISE pragmas
[ghc-hetmet.git] / compiler / hsSyn / HsBinds.lhs
index ccd0f0a..211a3c1 100644 (file)
@@ -264,7 +264,7 @@ instance (OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL id
 ppr_monobind :: (OutputableBndr idL, OutputableBndr idR) => HsBindLR idL idR -> SDoc
 
 ppr_monobind (PatBind { pat_lhs = pat, pat_rhs = grhss })      = pprPatBind pat grhss
-ppr_monobind (VarBind { var_id = var, var_rhs = rhs })         = ppr var <+> equals <+> pprExpr (unLoc rhs)
+ppr_monobind (VarBind { var_id = var, var_rhs = rhs })         = pprBndr CaseBind var <+> equals <+> pprExpr (unLoc rhs)
 ppr_monobind (FunBind { fun_id = fun, fun_infix = inf,
                        fun_matches = matches,
                        fun_tick = tick }) = 
@@ -343,8 +343,8 @@ data HsWrapper
 
   | WpApp Var                  -- [] d         the 'd' is a type-class dictionary
   | WpTyApp Type               -- [] t         the 't' is a type or corecion
-  | WpLam Id                   -- \d. []       the 'd' is a type-class dictionary
-  | WpTyLam TyVar              -- \a. []       the 'a' is a type or coercion variable
+  | WpLam Var                  -- \d. []       the 'd' is a type-class dictionary or coercion variable
+  | WpTyLam TyVar              -- \a. []       the 'a' is a type variable (not coercion var)
   | WpInline                   -- inline_me []   Wrap inline around the thing
 
        -- Non-empty bindings, so that the identity coercion
@@ -454,9 +454,6 @@ data Prag
   | SpecPrag   
        (HsExpr Id)     -- An expression, of the given specialised type, which
        PostTcType      -- specialises the polymorphic function
-       [Id]            -- Dicts mentioned free in the expression
-                       --   Apr07: I think this is pretty useless
-                       --          see Note [Const rule dicts] in DsBinds
        InlineSpec      -- Inlining spec for the specialised function
 
 isInlinePrag (InlinePrag _) = True
@@ -573,7 +570,7 @@ pprSpec :: (Outputable id, Outputable ty) => id -> ty -> InlineSpec -> SDoc
 pprSpec var ty inl = sep [ptext SLIT("SPECIALIZE") <+> ppr inl <+> pprVarSig var ty]
 
 pprPrag :: Outputable id => id -> LPrag -> SDoc
-pprPrag var (L _ (InlinePrag inl))         = ppr inl <+> ppr var
-pprPrag var (L _ (SpecPrag expr ty _ inl)) = pprSpec var ty inl
+pprPrag var (L _ (InlinePrag inl))       = ppr inl <+> ppr var
+pprPrag var (L _ (SpecPrag expr ty inl)) = pprSpec var ty inl
 \end{code}