More modules that need LANGUAGE BangPatterns
[ghc-hetmet.git] / compiler / types / InstEnv.lhs
index b3d8dcc..7327992 100644 (file)
@@ -45,7 +45,6 @@ import Data.Maybe     ( isJust, isNothing )
 %************************************************************************
 
 \begin{code}
-type DFunId = Id
 data Instance 
   = Instance { is_cls  :: Name         -- Class name
        
@@ -59,7 +58,7 @@ data Instance
                -- INVARIANT: is_dfun Id has type 
                --      forall is_tvs. (...) => is_cls is_tys
 
-            , is_dfun :: DFunId
+            , is_dfun :: DFunId -- See Note [Haddock assumptions]
             , is_flag :: OverlapFlag   -- See detailed comments with
                                        -- the decl of BasicTypes.OverlapFlag
     }
@@ -99,7 +98,20 @@ However, note that:
    (This is so that we can use the matching substitution to
     instantiate the dfun's context.)
 
+Note [Haddock assumptions]
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+For normal user-written instances, Haddock relies on
 
+ * the SrcSpan of
+ * the Name of
+ * the is_dfun of
+ * an Instance
+
+being equal to
+
+  * the SrcSpan of
+  * the instance head type of
+  * the InstDecl used to construct the Instance.
 
 \begin{code}
 instanceDFunId :: Instance -> DFunId
@@ -528,7 +540,7 @@ insert_overlapping new_item (item:items)
 \begin{code}
 instanceBindFun :: TyVar -> BindFlag
 instanceBindFun tv | isTcTyVar tv && isExistentialTyVar tv = Skolem
-                  | otherwise                          = BindMe
+                  | otherwise                             = BindMe
    -- Note [Binding when looking up instances]
 \end{code}