Migrate cvs diff from fptools-assoc branch
[ghc-hetmet.git] / compiler / hsSyn / HsBinds.lhs
index b5c2179..31c1cae 100644 (file)
@@ -59,14 +59,15 @@ type LHsBind  id  = Located (HsBind id)
 data HsBind id
   = FunBind {  -- FunBind is used for both functions   f x = e
                -- and variables                        f = \x -> e
--- Reason 1: the Match stuff lets us have an optional
---        result type sig      f :: a->a = ...mentions a...
+-- Reason 1: Special case for type inference: see TcBinds.tcMonoBinds
 --
--- Reason 2: Special case for type inference: see TcBinds.tcMonoBinds
---
--- Reason 3: instance decls can only have FunBinds, which is convenient
+-- Reason 2: instance decls can only have FunBinds, which is convenient
 --          If you change this, you'll need tochange e.g. rnMethodBinds
 
+-- But note that the form      f :: a->a = ...
+-- parses as a pattern binding, just like
+--                     (f :: a -> a) = ... 
+
        fun_id :: Located id,
 
        fun_infix :: Bool,      -- True => infix declaration
@@ -156,6 +157,8 @@ instance OutputableBndr id => Outputable (HsValBinds id) where
 -- 'where' include a list of HsBindGroups and we don't want
 -- several groups of bindings each with braces around.
 -- Sort by location before printing
+pprValBindsForUser :: (OutputableBndr id1, OutputableBndr id2)
+                  => LHsBinds id1 -> [LSig id2] -> SDoc
 pprValBindsForUser binds sigs
   = vcat (map snd (sort_by_loc decls))
   where