diff options
author | Alec Theriault <alec.theriault@gmail.com> | 2018-03-21 01:16:57 -0700 |
---|---|---|
committer | Alexander Biehl <alexbiehl@gmail.com> | 2018-03-21 09:16:57 +0100 |
commit | b7a74c6702f087fde99f44f12d99c66afcf5790d (patch) | |
tree | 9f751803eb5c13adfef9e991469a2a9bf1bbb2c6 | |
parent | e787b5712157bb0acbb8d886ef793cda5dc1b821 (diff) |
Show where instances are defined (#748)
* Indicate source module of instances
Above instance, we now also display a link to the module where the
instance was defined. This is sometimes helpful in figuring out
what to import.
* Source module for type/data families too
* Remove parens
* Accept tests
24 files changed, 530 insertions, 112 deletions
diff --git a/haddock-api/src/Haddock/Backends/LaTeX.hs b/haddock-api/src/Haddock/Backends/LaTeX.hs index 1043453d..38fccf0c 100644 --- a/haddock-api/src/Haddock/Backends/LaTeX.hs +++ b/haddock-api/src/Haddock/Backends/LaTeX.hs @@ -530,14 +530,14 @@ ppDocInstances unicode (i : rest) (is, rest') = spanWith isUndocdInstance rest isUndocdInstance :: DocInstance a -> Maybe (InstHead a) -isUndocdInstance (i,Nothing,_) = Just i +isUndocdInstance (i,Nothing,_,_) = Just i isUndocdInstance _ = Nothing -- | Print a possibly commented instance. The instance header is printed inside -- an 'argBox'. The comment is printed to the right of the box in normal comment -- style. ppDocInstance :: Bool -> DocInstance DocNameI -> LaTeX -ppDocInstance unicode (instHead, doc, _) = +ppDocInstance unicode (instHead, doc, _, _) = declWithDoc (ppInstDecl unicode instHead) (fmap docToLaTeX $ fmap _doc doc) diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs index 6e733373..d92bdd3a 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs @@ -566,8 +566,8 @@ ppInstances links origin instances splice unicode qual where instName = getOccString origin instDecl :: Int -> DocInstance DocNameI -> (SubDecl,Located DocName) - instDecl no (inst, mdoc, loc) = - ((ppInstHead links splice unicode qual mdoc origin False no inst), loc) + instDecl no (inst, mdoc, loc, mdl) = + ((ppInstHead links splice unicode qual mdoc origin False no inst mdl), loc) ppOrphanInstances :: LinksInfo @@ -581,8 +581,8 @@ ppOrphanInstances links instances splice unicode qual instOrigin inst = OriginClass (ihdClsName inst) instDecl :: Int -> DocInstance DocNameI -> (SubDecl,Located DocName) - instDecl no (inst, mdoc, loc) = - ((ppInstHead links splice unicode qual mdoc (instOrigin inst) True no inst), loc) + instDecl no (inst, mdoc, loc, mdl) = + ((ppInstHead links splice unicode qual mdoc (instOrigin inst) True no inst mdl), loc) ppInstHead :: LinksInfo -> Splice -> Unicode -> Qualification @@ -591,13 +591,14 @@ ppInstHead :: LinksInfo -> Splice -> Unicode -> Qualification -> Bool -- ^ Is instance orphan -> Int -- ^ Normal -> InstHead DocNameI + -> Maybe Module -> SubDecl -ppInstHead links splice unicode qual mdoc origin orphan no ihd@(InstHead {..}) = +ppInstHead links splice unicode qual mdoc origin orphan no ihd@(InstHead {..}) mdl = case ihdInstType of ClassInst { .. } -> ( subInstHead iid $ ppContextNoLocs clsiCtx unicode qual HideEmptyContexts <+> typ , mdoc - , [subInstDetails iid ats sigs] + , [subInstDetails iid ats sigs mname] ) where sigs = ppInstanceSigs links splice unicode qual clsiSigs @@ -605,7 +606,7 @@ ppInstHead links splice unicode qual mdoc origin orphan no ihd@(InstHead {..}) = TypeInst rhs -> ( subInstHead iid ptype , mdoc - , [subFamInstDetails iid prhs] + , [subFamInstDetails iid prhs mname] ) where ptype = keyword "type" <+> typ @@ -614,11 +615,12 @@ ppInstHead links splice unicode qual mdoc origin orphan no ihd@(InstHead {..}) = DataInst dd -> ( subInstHead iid pdata , mdoc - , [subFamInstDetails iid pdecl]) + , [subFamInstDetails iid pdecl mname]) where pdata = keyword "data" <+> typ pdecl = pdata <+> ppShortDataDecl False True dd [] unicode qual where + mname = maybe noHtml (\m -> toHtml "Defined in" <+> ppModule m) mdl iid = instanceId origin no orphan ihd typ = ppAppNameTypes ihdClsName ihdTypes unicode qual diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs index e020b909..217ca2af 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs @@ -47,7 +47,7 @@ import Haddock.Backends.Xhtml.Utils import Haddock.Types import Haddock.Utils (makeAnchorId, nameAnchorId) import qualified Data.Map as Map -import Text.XHtml hiding ( name, title, p, quote ) +import Text.XHtml hiding ( name, title, quote ) import FastString ( unpackFS ) import GHC @@ -228,15 +228,17 @@ subInstHead iid hdr = subInstDetails :: String -- ^ Instance unique id (for anchor generation) -> [Html] -- ^ Associated type contents -> [Html] -- ^ Method contents (pretty-printed signatures) + -> Html -- ^ Source module -> Html -subInstDetails iid ats mets = - subInstSection iid << (subAssociatedTypes ats <+> subMethods mets) +subInstDetails iid ats mets mdl = + subInstSection iid << (p mdl <+> subAssociatedTypes ats <+> subMethods mets) subFamInstDetails :: String -- ^ Instance unique id (for anchor generation) -> Html -- ^ Type or data family instance + -> Html -- ^ Source module TODO: use this -> Html -subFamInstDetails iid fi = - subInstSection iid << thediv ! [theclass "src"] << fi +subFamInstDetails iid fi mdl = + subInstSection iid << (p mdl <+> (thediv ! [theclass "src"] << fi)) subInstSection :: String -- ^ Instance unique id (for anchor generation) -> Html diff --git a/haddock-api/src/Haddock/Interface/AttachInstances.hs b/haddock-api/src/Haddock/Interface/AttachInstances.hs index ec8b98c8..d0ed1698 100644 --- a/haddock-api/src/Haddock/Interface/AttachInstances.hs +++ b/haddock-api/src/Haddock/Interface/AttachInstances.hs @@ -69,7 +69,7 @@ attachInstances expInfo ifaces instIfaceMap = do attachOrphanInstances :: ExportInfo -> Interface -> IfaceMap -> InstIfaceMap -> [ClsInst] -> [DocInstance GhcRn] attachOrphanInstances expInfo iface ifaceMap instIfaceMap cls_instances = - [ (synifyInstHead i, instLookup instDocMap n iface ifaceMap instIfaceMap, (L (getSrcSpan n) n)) + [ (synifyInstHead i, instLookup instDocMap n iface ifaceMap instIfaceMap, (L (getSrcSpan n) n), Nothing) | let is = [ (instanceSig i, getName i) | i <- cls_instances, isOrphan (is_orphan i) ] , (i@(_,_,cls,tys), n) <- sortBy (comparing $ first instHead) is , not $ isInstanceHidden expInfo cls tys @@ -91,7 +91,11 @@ attachToExportItem index expInfo iface ifaceMap instIfaceMap export = let mb_instances = lookupNameEnv index (tcdName d) cls_instances = maybeToList mb_instances >>= fst fam_instances = maybeToList mb_instances >>= snd - fam_insts = [ (synifyFamInst i opaque, doc,spanNameE n (synifyFamInst i opaque) (L eSpan (tcdName d)) ) + fam_insts = [ ( synifyFamInst i opaque + , doc + , spanNameE n (synifyFamInst i opaque) (L eSpan (tcdName d)) + , nameModule_maybe n + ) | i <- sortBy (comparing instFam) fam_instances , let n = getName i , let doc = instLookup instDocMap n iface ifaceMap instIfaceMap @@ -99,14 +103,18 @@ attachToExportItem index expInfo iface ifaceMap instIfaceMap export = , not $ any (isTypeHidden expInfo) (fi_tys i) , let opaque = isTypeHidden expInfo (fi_rhs i) ] - cls_insts = [ (synifyInstHead i, instLookup instDocMap n iface ifaceMap instIfaceMap, spanName n (synifyInstHead i) (L eSpan (tcdName d))) + cls_insts = [ ( synifyInstHead i + , instLookup instDocMap n iface ifaceMap instIfaceMap + , spanName n (synifyInstHead i) (L eSpan (tcdName d)) + , nameModule_maybe n + ) | let is = [ (instanceSig i, getName i) | i <- cls_instances ] , (i@(_,_,cls,tys), n) <- sortBy (comparing $ first instHead) is , not $ isInstanceHidden expInfo cls tys ] -- fam_insts but with failing type fams filtered out - cleanFamInsts = [ (fi, n, L l r) | (Right fi, n, L l (Right r)) <- fam_insts ] - famInstErrs = [ errm | (Left errm, _, _) <- fam_insts ] + cleanFamInsts = [ (fi, n, L l r, m) | (Right fi, n, L l (Right r), m) <- fam_insts ] + famInstErrs = [ errm | (Left errm, _, _, _) <- fam_insts ] in do dfs <- getDynFlags let mkBug = (text "haddock-bug:" <+>) . text diff --git a/haddock-api/src/Haddock/Interface/Rename.hs b/haddock-api/src/Haddock/Interface/Rename.hs index df25e6a7..b2d0e1e1 100644 --- a/haddock-api/src/Haddock/Interface/Rename.hs +++ b/haddock-api/src/Haddock/Interface/Rename.hs @@ -627,11 +627,11 @@ renameWc rn_thing (HsWC { hswc_body = thing }) , hswc_wcs = PlaceHolder }) } renameDocInstance :: DocInstance GhcRn -> RnM (DocInstance DocNameI) -renameDocInstance (inst, idoc, L l n) = do +renameDocInstance (inst, idoc, L l n, m) = do inst' <- renameInstHead inst n' <- rename n idoc' <- mapM renameDoc idoc - return (inst', idoc',L l n') + return (inst', idoc', L l n', m) renameExportItem :: ExportItem GhcRn -> RnM (ExportItem DocNameI) renameExportItem item = case item of diff --git a/haddock-api/src/Haddock/Types.hs b/haddock-api/src/Haddock/Types.hs index 725606b2..2810862f 100644 --- a/haddock-api/src/Haddock/Types.hs +++ b/haddock-api/src/Haddock/Types.hs @@ -388,7 +388,7 @@ mkPseudoFamilyDecl (FamilyDecl { .. }) = PseudoFamilyDecl -- | An instance head that may have documentation and a source location. -type DocInstance name = (InstHead name, Maybe (MDoc (IdP name)), Located (IdP name)) +type DocInstance name = (InstHead name, Maybe (MDoc (IdP name)), Located (IdP name), Maybe Module) -- | The head of an instance. Consists of a class name, a list of type -- parameters (which may be annotated with kinds), and an instance type diff --git a/html-test/ref/Bug26.html b/html-test/ref/Bug26.html index 820fde3f..e50169ba 100644 --- a/html-test/ref/Bug26.html +++ b/html-test/ref/Bug26.html @@ -180,7 +180,11 @@ ><details id="i:ic:C:C:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug26</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/Bug294.html b/html-test/ref/Bug294.html index ec0e2e9c..0548646b 100644 --- a/html-test/ref/Bug294.html +++ b/html-test/ref/Bug294.html @@ -78,7 +78,11 @@ ><details id="i:id:A:DP:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Bug294</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Bug294" @@ -116,7 +120,11 @@ ><details id="i:id:A:TP:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Bug294</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Bug294" @@ -210,7 +218,11 @@ ><details id="i:if:TP:TP:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Bug294</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Bug294" @@ -268,7 +280,11 @@ ><details id="i:if:DP:DP:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Bug294</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Bug294" @@ -324,7 +340,11 @@ ><details id="i:if:TO-39-:TO-39-:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Bug294</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Bug294" diff --git a/html-test/ref/Bug548.html b/html-test/ref/Bug548.html index f38a1535..29216433 100644 --- a/html-test/ref/Bug548.html +++ b/html-test/ref/Bug548.html @@ -116,7 +116,11 @@ ><details id="i:id:WrappedArrow:Generic1:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -188,7 +192,11 @@ ><details id="i:id:WrappedArrow:Functor:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -240,7 +248,11 @@ ><details id="i:id:WrappedArrow:Applicative:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -330,7 +342,11 @@ ><details id="i:id:WrappedArrow:Alternative:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -396,7 +412,11 @@ ><details id="i:id:WrappedArrow:Generic:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -470,7 +490,11 @@ ><details id="i:id:WrappedArrow:Rep1:6" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="GHC.Generics" @@ -534,7 +558,11 @@ ><details id="i:id:WrappedArrow:Rep:7" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Control.Applicative</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="GHC.Generics" diff --git a/html-test/ref/Bug613.html b/html-test/ref/Bug613.html index 8228ad16..12717922 100644 --- a/html-test/ref/Bug613.html +++ b/html-test/ref/Bug613.html @@ -122,7 +122,11 @@ ><details id="i:ic:Functor:Functor:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug613</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -160,7 +164,11 @@ ><details id="i:ic:Functor:Functor:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug613</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -234,7 +242,11 @@ ><details id="i:id:ThreeVars:Functor:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug613</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/Bug679.html b/html-test/ref/Bug679.html index 0a216b4d..093c9046 100644 --- a/html-test/ref/Bug679.html +++ b/html-test/ref/Bug679.html @@ -90,7 +90,11 @@ ><details id="i:id:Bar:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug679</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -166,7 +170,11 @@ ><details id="i:ic:Foo:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Bug679</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/Bug7.html b/html-test/ref/Bug7.html index dac064f7..26a8e7a3 100644 --- a/html-test/ref/Bug7.html +++ b/html-test/ref/Bug7.html @@ -129,6 +129,10 @@ ><details id="i:id:Foo:Bar:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >Bug7</a + ></p ></details ></td ></tr @@ -179,6 +183,10 @@ ><details id="i:ic:Bar:Bar:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >Bug7</a + ></p ></details ></td ></tr diff --git a/html-test/ref/Hash.html b/html-test/ref/Hash.html index 966e9af2..8c48cee4 100644 --- a/html-test/ref/Hash.html +++ b/html-test/ref/Hash.html @@ -315,7 +315,11 @@ ><details id="i:ic:Hash:Hash:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Hash</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -353,7 +357,11 @@ ><details id="i:ic:Hash:Hash:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Hash</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -393,7 +401,11 @@ ><details id="i:ic:Hash:Hash:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Hash</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/HiddenInstances.html b/html-test/ref/HiddenInstances.html index 58a00e64..9594d8e1 100644 --- a/html-test/ref/HiddenInstances.html +++ b/html-test/ref/HiddenInstances.html @@ -102,6 +102,10 @@ ><details id="i:ic:VisibleClass:VisibleClass:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >HiddenInstances</a + ></p ></details ></td ></tr @@ -128,6 +132,10 @@ ><details id="i:ic:VisibleClass:VisibleClass:2" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >HiddenInstances</a + ></p ></details ></td ></tr @@ -176,7 +184,11 @@ ><details id="i:id:VisibleData:Num:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >HiddenInstances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -282,6 +294,10 @@ ><details id="i:id:VisibleData:VisibleClass:2" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >HiddenInstances</a + ></p ></details ></td ></tr diff --git a/html-test/ref/HiddenInstancesB.html b/html-test/ref/HiddenInstancesB.html index 92642eca..5b69947e 100644 --- a/html-test/ref/HiddenInstancesB.html +++ b/html-test/ref/HiddenInstancesB.html @@ -102,6 +102,10 @@ ><details id="i:ic:Foo:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >HiddenInstancesA</a + ></p ></details ></td ></tr @@ -150,6 +154,10 @@ ><details id="i:id:Bar:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >HiddenInstancesA</a + ></p ></details ></td ></tr diff --git a/html-test/ref/Instances.html b/html-test/ref/Instances.html index fb3ee280..3dc26133 100644 --- a/html-test/ref/Instances.html +++ b/html-test/ref/Instances.html @@ -90,7 +90,11 @@ ><details id="i:id:-60--126--126-:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -188,7 +192,11 @@ ><details id="i:ic:Foo:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -234,7 +242,11 @@ ><details id="i:ic:Foo:Foo:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -292,7 +304,11 @@ ><details id="i:ic:Foo:Foo:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -354,7 +370,11 @@ ><details id="i:ic:Foo:Foo:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -400,7 +420,11 @@ ><details id="i:ic:Foo:Foo:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -458,7 +482,11 @@ ><details id="i:ic:Foo:Foo:6" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -504,7 +532,11 @@ ><details id="i:ic:Foo:Foo:7" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -564,7 +596,11 @@ ><details id="i:ic:Foo:Foo:8" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -664,7 +700,11 @@ ><details id="i:ic:Bar:Bar:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -762,7 +802,11 @@ ><details id="i:ic:Bar:Bar:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -844,7 +888,11 @@ ><details id="i:ic:Bar:Bar:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -900,7 +948,11 @@ ><details id="i:ic:Bar:Bar:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -988,7 +1040,11 @@ ><details id="i:ic:Bar:Bar:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1044,7 +1100,11 @@ ><details id="i:ic:Bar:Bar:6" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1196,7 +1256,11 @@ ><details id="i:ic:Baz:Baz:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1254,7 +1318,11 @@ ><details id="i:ic:Baz:Baz:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1312,7 +1380,11 @@ ><details id="i:ic:Baz:Baz:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1372,7 +1444,11 @@ ><details id="i:ic:Baz:Baz:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1442,7 +1518,11 @@ ><details id="i:ic:Baz:Baz:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1550,7 +1630,11 @@ ><details id="i:id:Quux:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1610,7 +1694,11 @@ ><details id="i:id:Quux:Bar:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1708,7 +1796,11 @@ ><details id="i:id:Quux:Baz:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1784,7 +1876,11 @@ ><details id="i:id:Quux:Thud:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="Instances" @@ -1886,7 +1982,11 @@ ><details id="i:ic:Norf:Norf:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -1960,7 +2060,11 @@ ><details id="i:ic:Norf:Norf:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >Instances</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" diff --git a/html-test/ref/OrphanInstances.html b/html-test/ref/OrphanInstances.html index 15501b7e..16ac16d6 100644 --- a/html-test/ref/OrphanInstances.html +++ b/html-test/ref/OrphanInstances.html @@ -76,7 +76,9 @@ ><details id="i:o:ic:AClass:AClass:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/OrphanInstancesClass.html b/html-test/ref/OrphanInstancesClass.html index 5d2f0f0b..7b7085ea 100644 --- a/html-test/ref/OrphanInstancesClass.html +++ b/html-test/ref/OrphanInstancesClass.html @@ -100,7 +100,11 @@ ><details id="i:ic:AClass:AClass:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >OrphanInstances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/OrphanInstancesType.html b/html-test/ref/OrphanInstancesType.html index 55490b36..ddb85534 100644 --- a/html-test/ref/OrphanInstancesType.html +++ b/html-test/ref/OrphanInstancesType.html @@ -94,7 +94,11 @@ ><details id="i:id:AType:AClass:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >OrphanInstances</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/QuasiExpr.html b/html-test/ref/QuasiExpr.html index 062ebb8d..dfded323 100644 --- a/html-test/ref/QuasiExpr.html +++ b/html-test/ref/QuasiExpr.html @@ -126,7 +126,11 @@ ><details id="i:id:Expr:Show:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >QuasiExpr</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -242,7 +246,11 @@ ><details id="i:id:BinOp:Show:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >QuasiExpr</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/SpuriousSuperclassConstraints.html b/html-test/ref/SpuriousSuperclassConstraints.html index 3b865db3..cd80ed34 100644 --- a/html-test/ref/SpuriousSuperclassConstraints.html +++ b/html-test/ref/SpuriousSuperclassConstraints.html @@ -106,7 +106,11 @@ Fix spurious superclass constraints bug.</pre ><details id="i:id:SomeType:Functor:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >SpuriousSuperclassConstraints</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -156,7 +160,11 @@ Fix spurious superclass constraints bug.</pre ><details id="i:id:SomeType:Applicative:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >SpuriousSuperclassConstraints</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/Test.html b/html-test/ref/Test.html index 49a0cf04..369541f3 100644 --- a/html-test/ref/Test.html +++ b/html-test/ref/Test.html @@ -1672,7 +1672,11 @@ ><details id="i:ic:D:D:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Test</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" @@ -1720,7 +1724,11 @@ ><details id="i:ic:D:D:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs methods" + ><p + >Defined in <a href="#" + >Test</a + ></p + > <div class="subs methods" ><p class="caption" >Methods</p ><p class="src" diff --git a/html-test/ref/TypeFamilies.html b/html-test/ref/TypeFamilies.html index 53c45b45..190f376e 100644 --- a/html-test/ref/TypeFamilies.html +++ b/html-test/ref/TypeFamilies.html @@ -242,6 +242,10 @@ ><details id="i:id:X:-62--60-:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr @@ -268,7 +272,11 @@ ><details id="i:id:X:Assoc:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -322,6 +330,10 @@ ><details id="i:id:X:Test:3" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr @@ -348,7 +360,11 @@ ><details id="i:id:X:Foo:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies2" @@ -386,7 +402,11 @@ ><details id="i:id:X:-60--62-:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -424,7 +444,11 @@ ><details id="i:id:X:AssocD:6" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -460,7 +484,11 @@ ><details id="i:id:X:AssocT:7" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -502,7 +530,11 @@ ><details id="i:id:X:Bat:8" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -562,7 +594,11 @@ ><details id="i:id:X:Foo:9" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -600,7 +636,11 @@ ><details id="i:id:X:-60--62-:10" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -660,7 +700,11 @@ ><details id="i:id:Y:Assoc:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -714,6 +758,10 @@ ><details id="i:id:Y:Test:2" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr @@ -740,7 +788,11 @@ ><details id="i:id:Y:Bar:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies2" @@ -774,7 +826,11 @@ ><details id="i:id:Y:AssocD:4" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -810,7 +866,11 @@ ><details id="i:id:Y:AssocT:5" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -850,7 +910,11 @@ ><details id="i:id:Y:Bat:6" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -888,7 +952,11 @@ ><details id="i:id:Y:Foo:7" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -926,7 +994,11 @@ ><details id="i:id:Y:-60--62-:8" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1008,7 +1080,11 @@ ><details id="i:id:Z:Bat:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -1084,6 +1160,10 @@ ><details id="i:ic:Test:Test:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr @@ -1110,6 +1190,10 @@ ><details id="i:ic:Test:Test:2" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr @@ -1158,7 +1242,11 @@ ><details id="i:if:Foo:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1194,7 +1282,11 @@ ><details id="i:if:Foo:Foo:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1256,7 +1348,11 @@ ><details id="i:if:Bat:Bat:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -1312,7 +1408,11 @@ ><details id="i:if:Bat:Bat:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -1352,7 +1452,11 @@ ><details id="i:if:Bat:Bat:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies" @@ -1466,7 +1570,11 @@ ><details id="i:ic:Assoc:Assoc:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -1520,7 +1628,11 @@ ><details id="i:ic:Assoc:Assoc:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="subs associated-types" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="subs associated-types" ><p class="caption" >Associated Types</p ><p class="src" @@ -1638,7 +1750,11 @@ ><details id="i:if:-60--62-:-60--62-:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1678,7 +1794,11 @@ ><details id="i:if:-60--62-:-60--62-:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1716,7 +1836,11 @@ ><details id="i:if:-60--62-:-60--62-:3" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies" @@ -1772,6 +1896,10 @@ ><details id="i:ic:-62--60-:-62--60-:1" ><summary class="hide-when-js-enabled" >Instance details</summary + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p ></details ></td ></tr diff --git a/html-test/ref/TypeFamilies2.html b/html-test/ref/TypeFamilies2.html index b8e59df7..a5d0d9a9 100644 --- a/html-test/ref/TypeFamilies2.html +++ b/html-test/ref/TypeFamilies2.html @@ -110,7 +110,11 @@ ><details id="i:id:W:Bar:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies2</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies2" @@ -146,7 +150,11 @@ ><details id="i:id:W:Foo:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies2</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies2" @@ -202,7 +210,11 @@ ><details id="i:if:Foo:Foo:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies2</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies2" @@ -236,7 +248,11 @@ ><details id="i:if:Foo:Foo:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >type</span > <a href="#" title="TypeFamilies2" @@ -296,7 +312,11 @@ ><details id="i:if:Bar:Bar:1" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies2</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies2" @@ -332,7 +352,11 @@ ><details id="i:if:Bar:Bar:2" ><summary class="hide-when-js-enabled" >Instance details</summary - ><div class="src" + ><p + >Defined in <a href="#" + >TypeFamilies</a + ></p + > <div class="src" ><span class="keyword" >data</span > <a href="#" title="TypeFamilies2" |