diff options
95 files changed, 3658 insertions, 613 deletions
@@ -11,6 +11,32 @@ Full documentation can be found in the `doc/` subdirectory, in [reStructedText format](http://www.sphinx-doc.org/en/stable/rest.html) format. + +## Project overview + +This project consists of three packages: + +* haddock +* haddock-api +* haddock-library + +### haddock + +The haddock package provides the `haddock` executable. It is implemented as a +tiny wrapper around haddock-api's `Documentation.Haddock.haddock` function. + +### haddock-api + +haddock-api contains the program logic of the `haddock` tool. [The haddocks for +the `Documentation.Haddock` module](http://hackage.haskell.org/package/haddock-api-2.19.0.1/docs/Documentation-Haddock.html) +offer a good overview of haddock-api's functionality. + +### haddock-library + +haddock-library is concerned with the parsing and processing of the Haddock +markup language. + + ## Contributing Please create issues when you have any problems and pull requests if you have some code. @@ -33,7 +59,7 @@ and then proceed using your favourite build tool. ```bash cabal new-build -w ghc-8.4.1 # build & run the test suite -cabal new-test -w ghc-8.4.1 +cabal new-test -w ghc-8.4.1 all ``` #### Using Cabal sandboxes @@ -65,11 +91,16 @@ stack test ### Git Branches If you're a GHC developer and want to update Haddock to work with your -changes, you should be working on `ghc-head` branch instead of `master`. +changes, you should be working on `ghc-head` branch. See instructions at https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Git/Submodules for an example workflow. -The `master` branch usually requires a GHC from the latest GHC stable -branch. The required GHC version can be inferred from the version -bounds on `ghc` in the respective `.cabal` files. +### Updating `html-test` + +When accepting any changes in the output of `html-test`, it is important +to use the `--haddock-path` option. For example: + +``` +cabal new-run -- html-test --haddock-path $(find dist-newstyle/ -executable -type f -name haddock) --accept +``` diff --git a/doc/markup.rst b/doc/markup.rst index 1a278da3..a9878837 100644 --- a/doc/markup.rst +++ b/doc/markup.rst @@ -859,10 +859,13 @@ Hyperlinked Identifiers ~~~~~~~~~~~~~~~~~~~~~~~ Referring to a Haskell identifier, whether it be a type, class, -constructor, or function, is done by surrounding it with single quotes: :: +constructor, or function, is done by surrounding it with a combination +of single quotes and backticks. For example: :: -- | This module defines the type 'T'. +```T``` is also ok. ``'T``` and ```T'`` are accepted but less common. + If there is an entity ``T`` in scope in the current module, then the documentation will hyperlink the reference in the text to the definition of ``T`` (if the output format supports hyperlinking, of course; in a @@ -890,14 +893,6 @@ apostrophes themselves: to hyperlink ``foo'`` one would simply type ``'foo''``. To hyperlink identifiers written in infix form, simply put them in quotes as always: ``'`elem`'``. -For compatibility with other systems, the following alternative form of -markup is accepted [3]_: ```T'``. - -.. [3] - We chose not to use this as the primary markup for identifiers - because strictly speaking the ````` character should not be used as a - left quote, it is a grave accent. - Emphasis, Bold and Monospaced Text ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal index e1a52824..6a7a932b 100644 --- a/haddock-api/haddock-api.cabal +++ b/haddock-api/haddock-api.cabal @@ -42,7 +42,7 @@ library -- this package typically supports only single major versions build-depends: base ^>= 4.12.0 , Cabal ^>= 2.3.0 - , ghc ^>= 8.6 + , ghc ^>= 8.5 , ghc-paths ^>= 0.1.0.9 , haddock-library ^>= 1.6.0 , xhtml ^>= 3000.2.2 @@ -167,7 +167,7 @@ test-suite spec Haddock.Backends.Hyperlinker.Types build-depends: Cabal ^>= 2.3 - , ghc ^>= 8.6 + , ghc ^>= 8.5 , ghc-paths ^>= 0.1.0.9 , haddock-library ^>= 1.6.0 , xhtml ^>= 3000.2.2 diff --git a/haddock-api/src/Haddock/Backends/Hoogle.hs b/haddock-api/src/Haddock/Backends/Hoogle.hs index 257a8d6d..885c608b 100644 --- a/haddock-api/src/Haddock/Backends/Hoogle.hs +++ b/haddock-api/src/Haddock/Backends/Hoogle.hs @@ -46,13 +46,15 @@ prefix = ["-- Hoogle documentation, generated by Haddock" ppHoogle :: DynFlags -> String -> Version -> String -> Maybe (Doc RdrName) -> [Interface] -> FilePath -> IO () ppHoogle dflags package version synopsis prologue ifaces odir = do - let filename = package ++ ".txt" + let -- Since Hoogle is line based, we want to avoid breaking long lines. + dflags' = dflags{ pprCols = maxBound } + filename = package ++ ".txt" contents = prefix ++ - docWith dflags (drop 2 $ dropWhile (/= ':') synopsis) prologue ++ + docWith dflags' (drop 2 $ dropWhile (/= ':') synopsis) prologue ++ ["@package " ++ package] ++ ["@version " ++ showVersion version | not (null (versionBranch version)) ] ++ - concat [ppModule dflags i | i <- ifaces, OptHide `notElem` ifaceOptions i] + concat [ppModule dflags' i | i <- ifaces, OptHide `notElem` ifaceOptions i] createDirectoryIfMissing True odir h <- openFile (odir </> filename) WriteMode hSetEncoding h utf8 @@ -89,7 +91,7 @@ dropHsDocTy = f outHsType :: (a ~ GhcPass p, OutputableBndrId a) => DynFlags -> HsType a -> String -outHsType dflags = out dflags . dropHsDocTy +outHsType dflags = out dflags . reparenType . dropHsDocTy dropComment :: String -> String @@ -123,7 +125,7 @@ ppExport dflags ExportDecl { expItemDecl = L _ decl , expItemMbDoc = (dc, _) , expItemSubDocs = subdocs , expItemFixities = fixities - } = ppDocumentation dflags dc ++ f decl + } = ppDocumentation dflags dc ++ f decl ++ ppFixities where f (TyClD _ d@DataDecl{}) = ppData dflags d subdocs f (TyClD _ d@SynDecl{}) = ppSynonym dflags d @@ -131,7 +133,7 @@ ppExport dflags ExportDecl { expItemDecl = L _ decl f (TyClD _ (FamDecl _ d)) = ppFam dflags d f (ForD _ (ForeignImport _ name typ _)) = [pp_sig dflags [name] (hsSigType typ)] f (ForD _ (ForeignExport _ name typ _)) = [pp_sig dflags [name] (hsSigType typ)] - f (SigD _ sig) = ppSig dflags sig ++ ppFixities + f (SigD _ sig) = ppSig dflags sig f _ = [] ppFixities = concatMap (ppFixity dflags) fixities diff --git a/haddock-api/src/Haddock/Backends/LaTeX.hs b/haddock-api/src/Haddock/Backends/LaTeX.hs index c0da1f0c..4a3e9d03 100644 --- a/haddock-api/src/Haddock/Backends/LaTeX.hs +++ b/haddock-api/src/Haddock/Backends/LaTeX.hs @@ -906,24 +906,6 @@ sumParens = ubxparens . hsep . punctuate (text " | ") -- Stolen from Html and tweaked for LaTeX generation ------------------------------------------------------------------------------- - -pREC_TOP, pREC_FUN, pREC_OP, pREC_CON :: Int - -pREC_TOP = (0 :: Int) -- type in ParseIface.y in GHC -pREC_FUN = (1 :: Int) -- btype in ParseIface.y in GHC - -- Used for LH arg of (->) -pREC_OP = (2 :: Int) -- Used for arg of any infix operator - -- (we don't keep their fixities around) -pREC_CON = (3 :: Int) -- Used for arg of type applicn: - -- always parenthesise unless atomic - -maybeParen :: Int -- Precedence of context - -> Int -- Precedence of top-level operator - -> LaTeX -> LaTeX -- Wrap in parens if (ctxt >= op) -maybeParen ctxt_prec op_prec p | ctxt_prec >= op_prec = parens p - | otherwise = p - - ppLType, ppLParendType, ppLFunLhType :: Bool -> Located (HsType DocNameI) -> LaTeX ppLType unicode y = ppType unicode (unLoc y) ppLParendType unicode y = ppParendType unicode (unLoc y) @@ -931,72 +913,70 @@ ppLFunLhType unicode y = ppFunLhType unicode (unLoc y) ppType, ppParendType, ppFunLhType :: Bool -> HsType DocNameI -> LaTeX -ppType unicode ty = ppr_mono_ty pREC_TOP ty unicode -ppParendType unicode ty = ppr_mono_ty pREC_CON ty unicode -ppFunLhType unicode ty = ppr_mono_ty pREC_FUN ty unicode +ppType unicode ty = ppr_mono_ty (reparenTypePrec PREC_TOP ty) unicode +ppParendType unicode ty = ppr_mono_ty (reparenTypePrec PREC_TOP ty) unicode +ppFunLhType unicode ty = ppr_mono_ty (reparenTypePrec PREC_FUN ty) unicode ppLKind :: Bool -> LHsKind DocNameI -> LaTeX ppLKind unicode y = ppKind unicode (unLoc y) ppKind :: Bool -> HsKind DocNameI -> LaTeX -ppKind unicode ki = ppr_mono_ty pREC_TOP ki unicode +ppKind unicode ki = ppr_mono_ty (reparenTypePrec PREC_TOP ki) unicode -- Drop top-level for-all type variables in user style -- since they are implicit in Haskell -ppr_mono_lty :: Int -> LHsType DocNameI -> Bool -> LaTeX -ppr_mono_lty ctxt_prec ty unicode = ppr_mono_ty ctxt_prec (unLoc ty) unicode - - -ppr_mono_ty :: Int -> HsType DocNameI -> Bool -> LaTeX -ppr_mono_ty ctxt_prec (HsForAllTy _ tvs ty) unicode - = maybeParen ctxt_prec pREC_FUN $ - sep [ hsep (forallSymbol unicode : ppTyVars tvs) <> dot - , ppr_mono_lty pREC_TOP ty unicode ] -ppr_mono_ty ctxt_prec (HsQualTy _ ctxt ty) unicode - = maybeParen ctxt_prec pREC_FUN $ - sep [ ppLContext ctxt unicode - , ppr_mono_lty pREC_TOP ty unicode ] - -ppr_mono_ty _ (HsBangTy _ b ty) u = ppBang b <> ppLParendType u ty -ppr_mono_ty _ (HsTyVar _ NotPromoted (L _ name)) _ = ppDocName name -ppr_mono_ty _ (HsTyVar _ Promoted (L _ name)) _ = char '\'' <> ppDocName name -ppr_mono_ty ctxt_prec (HsFunTy _ ty1 ty2) u = ppr_fun_ty ctxt_prec ty1 ty2 u -ppr_mono_ty _ (HsTupleTy _ con tys) u = tupleParens con (map (ppLType u) tys) -ppr_mono_ty _ (HsSumTy _ tys) u = sumParens (map (ppLType u) tys) -ppr_mono_ty _ (HsKindSig _ ty kind) u = parens (ppr_mono_lty pREC_TOP ty u <+> dcolon u <+> ppLKind u kind) -ppr_mono_ty _ (HsListTy _ ty) u = brackets (ppr_mono_lty pREC_TOP ty u) -ppr_mono_ty _ (HsIParamTy _ (L _ n) ty) u = brackets (ppIPName n <+> dcolon u <+> ppr_mono_lty pREC_TOP ty u) -ppr_mono_ty _ (HsSpliceTy {}) _ = error "ppr_mono_ty HsSpliceTy" -ppr_mono_ty _ (HsRecTy {}) _ = text "{..}" -ppr_mono_ty _ (XHsType (NHsCoreTy {})) _ = error "ppr_mono_ty HsCoreTy" -ppr_mono_ty _ (HsExplicitListTy _ Promoted tys) u = Pretty.quote $ brackets $ hsep $ punctuate comma $ map (ppLType u) tys -ppr_mono_ty _ (HsExplicitListTy _ NotPromoted tys) u = brackets $ hsep $ punctuate comma $ map (ppLType u) tys -ppr_mono_ty _ (HsExplicitTupleTy _ tys) u = Pretty.quote $ parenList $ map (ppLType u) tys - -ppr_mono_ty ctxt_prec (HsAppTy _ fun_ty arg_ty) unicode - = maybeParen ctxt_prec pREC_CON $ - hsep [ppr_mono_lty pREC_FUN fun_ty unicode, ppr_mono_lty pREC_CON arg_ty unicode] - -ppr_mono_ty ctxt_prec (HsOpTy _ ty1 op ty2) unicode - = maybeParen ctxt_prec pREC_FUN $ - ppr_mono_lty pREC_OP ty1 unicode <+> ppr_op <+> ppr_mono_lty pREC_OP ty2 unicode +ppr_mono_lty :: LHsType DocNameI -> Bool -> LaTeX +ppr_mono_lty ty unicode = ppr_mono_ty (unLoc ty) unicode + + +ppr_mono_ty :: HsType DocNameI -> Bool -> LaTeX +ppr_mono_ty (HsForAllTy _ tvs ty) unicode + = sep [ hsep (forallSymbol unicode : ppTyVars tvs) <> dot + , ppr_mono_lty ty unicode ] +ppr_mono_ty (HsQualTy _ ctxt ty) unicode + = sep [ ppLContext ctxt unicode + , ppr_mono_lty ty unicode ] +ppr_mono_ty (HsFunTy _ ty1 ty2) u + = sep [ ppr_mono_lty ty1 u + , arrow u <+> ppr_mono_lty ty2 u ] + +ppr_mono_ty (HsBangTy _ b ty) u = ppBang b <> ppLParendType u ty +ppr_mono_ty (HsTyVar _ NotPromoted (L _ name)) _ = ppDocName name +ppr_mono_ty (HsTyVar _ Promoted (L _ name)) _ = char '\'' <> ppDocName name +ppr_mono_ty (HsTupleTy _ con tys) u = tupleParens con (map (ppLType u) tys) +ppr_mono_ty (HsSumTy _ tys) u = sumParens (map (ppLType u) tys) +ppr_mono_ty (HsKindSig _ ty kind) u = parens (ppr_mono_lty ty u <+> dcolon u <+> ppLKind u kind) +ppr_mono_ty (HsListTy _ ty) u = brackets (ppr_mono_lty ty u) +ppr_mono_ty (HsIParamTy _ (L _ n) ty) u = brackets (ppIPName n <+> dcolon u <+> ppr_mono_lty ty u) +ppr_mono_ty (HsSpliceTy {}) _ = error "ppr_mono_ty HsSpliceTy" +ppr_mono_ty (HsRecTy {}) _ = text "{..}" +ppr_mono_ty (XHsType (NHsCoreTy {})) _ = error "ppr_mono_ty HsCoreTy" +ppr_mono_ty (HsExplicitListTy _ Promoted tys) u = Pretty.quote $ brackets $ hsep $ punctuate comma $ map (ppLType u) tys +ppr_mono_ty (HsExplicitListTy _ NotPromoted tys) u = brackets $ hsep $ punctuate comma $ map (ppLType u) tys +ppr_mono_ty (HsExplicitTupleTy _ tys) u = Pretty.quote $ parenList $ map (ppLType u) tys + +ppr_mono_ty (HsAppTy _ fun_ty arg_ty) unicode + = hsep [ppr_mono_lty fun_ty unicode, ppr_mono_lty arg_ty unicode] + +ppr_mono_ty (HsOpTy _ ty1 op ty2) unicode + = ppr_mono_lty ty1 unicode <+> ppr_op <+> ppr_mono_lty ty2 unicode where ppr_op = if not (isSymOcc occName) then char '`' <> ppLDocName op <> char '`' else ppLDocName op occName = nameOccName . getName . unLoc $ op -ppr_mono_ty ctxt_prec (HsParTy _ ty) unicode --- = parens (ppr_mono_lty pREC_TOP ty) - = ppr_mono_lty ctxt_prec ty unicode +ppr_mono_ty (HsParTy _ ty) unicode + = parens (ppr_mono_lty ty unicode) +-- = ppr_mono_lty ty unicode -ppr_mono_ty ctxt_prec (HsDocTy _ ty _) unicode - = ppr_mono_lty ctxt_prec ty unicode +ppr_mono_ty (HsDocTy _ ty _) unicode + = ppr_mono_lty ty unicode -ppr_mono_ty _ (HsWildCardTy (AnonWildCard _)) _ = char '_' +ppr_mono_ty (HsWildCardTy (AnonWildCard _)) _ = char '_' -ppr_mono_ty _ (HsTyLit _ t) u = ppr_tylit t u -ppr_mono_ty _ (HsStarTy _ isUni) unicode = starSymbol (isUni || unicode) +ppr_mono_ty (HsTyLit _ t) u = ppr_tylit t u +ppr_mono_ty (HsStarTy _ isUni) unicode = starSymbol (isUni || unicode) ppr_tylit :: HsTyLit -> Bool -> LaTeX @@ -1006,15 +986,6 @@ ppr_tylit (HsStrTy _ s) _ = text (show s) -- XXX: Do something with Unicode parameter? -ppr_fun_ty :: Int -> LHsType DocNameI -> LHsType DocNameI -> Bool -> LaTeX -ppr_fun_ty ctxt_prec ty1 ty2 unicode - = let p1 = ppr_mono_lty pREC_FUN ty1 unicode - p2 = ppr_mono_lty pREC_TOP ty2 unicode - in - maybeParen ctxt_prec pREC_FUN $ - sep [p1, arrow unicode <+> p2] - - ------------------------------------------------------------------------------- -- * Names ------------------------------------------------------------------------------- diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs index fdb80141..cc271fef 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs @@ -620,9 +620,9 @@ ppInstances links origin instances splice unicode pkg qual -- force Splice = True to use line URLs where instName = getOccString origin - instDecl :: Int -> DocInstance DocNameI -> (SubDecl,Located DocName) + instDecl :: Int -> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName) instDecl no (inst, mdoc, loc, mdl) = - ((ppInstHead links splice unicode qual mdoc origin False no inst mdl), loc) + ((ppInstHead links splice unicode qual mdoc origin False no inst mdl), mdl, loc) ppOrphanInstances :: LinksInfo @@ -635,9 +635,9 @@ ppOrphanInstances links instances splice unicode pkg qual instOrigin :: InstHead name -> InstOrigin (IdP name) instOrigin inst = OriginClass (ihdClsName inst) - instDecl :: Int -> DocInstance DocNameI -> (SubDecl,Located DocName) + instDecl :: Int -> DocInstance DocNameI -> (SubDecl, Maybe Module, Located DocName) instDecl no (inst, mdoc, loc, mdl) = - ((ppInstHead links splice unicode qual mdoc (instOrigin inst) True no inst mdl), loc) + ((ppInstHead links splice unicode qual mdoc (instOrigin inst) True no inst Nothing), mdl, loc) ppInstHead :: LinksInfo -> Splice -> Unicode -> Qualification @@ -1101,38 +1101,18 @@ sumParens = ubxSumList -- * Rendering of HsType -------------------------------------------------------------------------------- - -pREC_TOP, pREC_CTX, pREC_FUN, pREC_OP, pREC_CON :: Int - -pREC_TOP = 0 :: Int -- type in ParseIface.y in GHC -pREC_CTX = 1 :: Int -- Used for single contexts, eg. ctx => type - -- (as opposed to (ctx1, ctx2) => type) -pREC_FUN = 2 :: Int -- btype in ParseIface.y in GHC - -- Used for LH arg of (->) -pREC_OP = 3 :: Int -- Used for arg of any infix operator - -- (we don't keep their fixities around) -pREC_CON = 4 :: Int -- Used for arg of type applicn: - -- always parenthesise unless atomic - -maybeParen :: Int -- Precedence of context - -> Int -- Precedence of top-level operator - -> Html -> Html -- Wrap in parens if (ctxt >= op) -maybeParen ctxt_prec op_prec p | ctxt_prec >= op_prec = parens p - | otherwise = p - - ppLType, ppLParendType, ppLFunLhType :: Unicode -> Qualification -> HideEmptyContexts -> Located (HsType DocNameI) -> Html ppLType unicode qual emptyCtxts y = ppType unicode qual emptyCtxts (unLoc y) ppLParendType unicode qual emptyCtxts y = ppParendType unicode qual emptyCtxts (unLoc y) ppLFunLhType unicode qual emptyCtxts y = ppFunLhType unicode qual emptyCtxts (unLoc y) ppCtxType :: Unicode -> Qualification -> HsType DocNameI -> Html -ppCtxType unicode qual ty = ppr_mono_ty pREC_CTX ty unicode qual HideEmptyContexts +ppCtxType unicode qual ty = ppr_mono_ty (reparenTypePrec PREC_CTX ty) unicode qual HideEmptyContexts ppType, ppParendType, ppFunLhType :: Unicode -> Qualification -> HideEmptyContexts -> HsType DocNameI -> Html -ppType unicode qual emptyCtxts ty = ppr_mono_ty pREC_TOP ty unicode qual emptyCtxts -ppParendType unicode qual emptyCtxts ty = ppr_mono_ty pREC_CON ty unicode qual emptyCtxts -ppFunLhType unicode qual emptyCtxts ty = ppr_mono_ty pREC_FUN ty unicode qual emptyCtxts +ppType unicode qual emptyCtxts ty = ppr_mono_ty (reparenTypePrec PREC_TOP ty) unicode qual emptyCtxts +ppParendType unicode qual emptyCtxts ty = ppr_mono_ty (reparenTypePrec PREC_CON ty) unicode qual emptyCtxts +ppFunLhType unicode qual emptyCtxts ty = ppr_mono_ty (reparenTypePrec PREC_FUN ty) unicode qual emptyCtxts ppHsTyVarBndr :: Unicode -> Qualification -> HsTyVarBndr DocNameI -> Html ppHsTyVarBndr _ qual (UserTyVar _ (L _ name)) = @@ -1146,7 +1126,7 @@ ppLKind :: Unicode -> Qualification -> LHsKind DocNameI -> Html ppLKind unicode qual y = ppKind unicode qual (unLoc y) ppKind :: Unicode -> Qualification -> HsKind DocNameI -> Html -ppKind unicode qual ki = ppr_mono_ty pREC_TOP ki unicode qual HideEmptyContexts +ppKind unicode qual ki = ppr_mono_ty (reparenTypePrec PREC_TOP ki) unicode qual HideEmptyContexts patSigContext :: LHsType name -> HideEmptyContexts patSigContext typ | hasNonEmptyContext typ && isFirstContextEmpty typ = ShowEmptyToplevelContexts @@ -1177,57 +1157,56 @@ ppPatSigType unicode qual typ = ppForAllPart :: Unicode -> Qualification -> [LHsTyVarBndr DocNameI] -> Html ppForAllPart unicode qual tvs = hsep (forallSymbol unicode : ppTyVars unicode qual tvs) +++ dot -ppr_mono_lty :: Int -> LHsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html -ppr_mono_lty ctxt_prec ty = ppr_mono_ty ctxt_prec (unLoc ty) +ppr_mono_lty :: LHsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html +ppr_mono_lty ty = ppr_mono_ty (unLoc ty) -ppr_mono_ty :: Int -> HsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html -ppr_mono_ty ctxt_prec (HsForAllTy _ tvs ty) unicode qual emptyCtxts - = maybeParen ctxt_prec pREC_FUN $ - ppForAllPart unicode qual tvs <+> ppr_mono_lty pREC_TOP ty unicode qual emptyCtxts +ppr_mono_ty :: HsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html +ppr_mono_ty (HsForAllTy _ tvs ty) unicode qual emptyCtxts + = ppForAllPart unicode qual tvs <+> ppr_mono_lty ty unicode qual emptyCtxts -ppr_mono_ty ctxt_prec (HsQualTy _ ctxt ty) unicode qual emptyCtxts - = maybeParen ctxt_prec pREC_FUN $ - ppLContext ctxt unicode qual emptyCtxts <+> ppr_mono_lty pREC_TOP ty unicode qual emptyCtxts +ppr_mono_ty (HsQualTy _ ctxt ty) unicode qual emptyCtxts + = ppLContext ctxt unicode qual emptyCtxts <+> ppr_mono_lty ty unicode qual emptyCtxts -- UnicodeSyntax alternatives -ppr_mono_ty _ (HsTyVar _ _ (L _ name)) True _ _ +ppr_mono_ty (HsTyVar _ _ (L _ name)) True _ _ | getOccString (getName name) == "(->)" = toHtml "(→)" -ppr_mono_ty _ (HsBangTy _ b ty) u q _ = +ppr_mono_ty (HsBangTy _ b ty) u q _ = ppBang b +++ ppLParendType u q HideEmptyContexts ty -ppr_mono_ty _ (HsTyVar _ _ (L _ name)) _ q _ = +ppr_mono_ty (HsTyVar _ _ (L _ name)) _ q _ = ppDocName q Prefix True name -ppr_mono_ty _ (HsStarTy _ isUni) u _ _ = +ppr_mono_ty (HsStarTy _ isUni) u _ _ = toHtml (if u || isUni then "★" else "*") -ppr_mono_ty ctxt_prec (HsFunTy _ ty1 ty2) u q e = - ppr_fun_ty ctxt_prec ty1 ty2 u q e -ppr_mono_ty _ (HsTupleTy _ con tys) u q _ = +ppr_mono_ty (HsFunTy _ ty1 ty2) u q e = + hsep [ ppr_mono_lty ty1 u q HideEmptyContexts + , arrow u <+> ppr_mono_lty ty2 u q e + ] +ppr_mono_ty (HsTupleTy _ con tys) u q _ = tupleParens con (map (ppLType u q HideEmptyContexts) tys) -ppr_mono_ty _ (HsSumTy _ tys) u q _ = +ppr_mono_ty (HsSumTy _ tys) u q _ = sumParens (map (ppLType u q HideEmptyContexts) tys) -ppr_mono_ty _ (HsKindSig _ ty kind) u q e = - parens (ppr_mono_lty pREC_TOP ty u q e <+> dcolon u <+> ppLKind u q kind) -ppr_mono_ty _ (HsListTy _ ty) u q _ = brackets (ppr_mono_lty pREC_TOP ty u q HideEmptyContexts) -ppr_mono_ty ctxt_prec (HsIParamTy _ (L _ n) ty) u q _ = - maybeParen ctxt_prec pREC_CTX $ ppIPName n <+> dcolon u <+> ppr_mono_lty pREC_TOP ty u q HideEmptyContexts -ppr_mono_ty _ (HsSpliceTy {}) _ _ _ = error "ppr_mono_ty HsSpliceTy" -ppr_mono_ty _ (HsRecTy {}) _ _ _ = toHtml "{..}" +ppr_mono_ty (HsKindSig _ ty kind) u q e = + parens (ppr_mono_lty ty u q e <+> dcolon u <+> ppLKind u q kind) +ppr_mono_ty (HsListTy _ ty) u q _ = brackets (ppr_mono_lty ty u q HideEmptyContexts) +ppr_mono_ty (HsIParamTy _ (L _ n) ty) u q _ = + ppIPName n <+> dcolon u <+> ppr_mono_lty ty u q HideEmptyContexts +ppr_mono_ty (HsSpliceTy {}) _ _ _ = error "ppr_mono_ty HsSpliceTy" +ppr_mono_ty (HsRecTy {}) _ _ _ = toHtml "{..}" -- Can now legally occur in ConDeclGADT, the output here is to provide a -- placeholder in the signature, which is followed by the field -- declarations. -ppr_mono_ty _ (XHsType (NHsCoreTy {})) _ _ _ = error "ppr_mono_ty HsCoreTy" -ppr_mono_ty _ (HsExplicitListTy _ Promoted tys) u q _ = promoQuote $ brackets $ hsep $ punctuate comma $ map (ppLType u q HideEmptyContexts) tys -ppr_mono_ty _ (HsExplicitListTy _ NotPromoted tys) u q _ = brackets $ hsep $ punctuate comma $ map (ppLType u q HideEmptyContexts) tys -ppr_mono_ty _ (HsExplicitTupleTy _ tys) u q _ = promoQuote $ parenList $ map (ppLType u q HideEmptyContexts) tys - -ppr_mono_ty ctxt_prec (HsAppTy _ fun_ty arg_ty) unicode qual _ - = maybeParen ctxt_prec pREC_CON $ - hsep [ppr_mono_lty pREC_FUN fun_ty unicode qual HideEmptyContexts, ppr_mono_lty pREC_CON arg_ty unicode qual HideEmptyContexts] - -ppr_mono_ty ctxt_prec (HsOpTy _ ty1 op ty2) unicode qual _ - = maybeParen ctxt_prec pREC_FUN $ - ppr_mono_lty pREC_OP ty1 unicode qual HideEmptyContexts <+> ppr_op <+> ppr_mono_lty pREC_OP ty2 unicode qual HideEmptyContexts +ppr_mono_ty (XHsType (NHsCoreTy {})) _ _ _ = error "ppr_mono_ty HsCoreTy" +ppr_mono_ty (HsExplicitListTy _ Promoted tys) u q _ = promoQuote $ brackets $ hsep $ punctuate comma $ map (ppLType u q HideEmptyContexts) tys +ppr_mono_ty (HsExplicitListTy _ NotPromoted tys) u q _ = brackets $ hsep $ punctuate comma $ map (ppLType u q HideEmptyContexts) tys +ppr_mono_ty (HsExplicitTupleTy _ tys) u q _ = promoQuote $ parenList $ map (ppLType u q HideEmptyContexts) tys + +ppr_mono_ty (HsAppTy _ fun_ty arg_ty) unicode qual _ + = hsep [ ppr_mono_lty fun_ty unicode qual HideEmptyContexts + , ppr_mono_lty arg_ty unicode qual HideEmptyContexts ] + +ppr_mono_ty (HsOpTy _ ty1 op ty2) unicode qual _ + = ppr_mono_lty ty1 unicode qual HideEmptyContexts <+> ppr_op <+> ppr_mono_lty ty2 unicode qual HideEmptyContexts where -- `(:)` is valid in type signature only as constructor to promoted list -- and needs to be quoted in code so we explicitly quote it here too. @@ -1236,24 +1215,17 @@ ppr_mono_ty ctxt_prec (HsOpTy _ ty1 op ty2) unicode qual _ | otherwise = ppr_op' ppr_op' = ppLDocName qual Infix op -ppr_mono_ty ctxt_prec (HsParTy _ ty) unicode qual emptyCtxts --- = parens (ppr_mono_lty pREC_TOP ty) - = ppr_mono_lty ctxt_prec ty unicode qual emptyCtxts +ppr_mono_ty (HsParTy _ ty) unicode qual emptyCtxts + = parens (ppr_mono_lty ty unicode qual emptyCtxts) +-- = parens (ppr_mono_lty ctxt_prec ty unicode qual emptyCtxts) -ppr_mono_ty ctxt_prec (HsDocTy _ ty _) unicode qual emptyCtxts - = ppr_mono_lty ctxt_prec ty unicode qual emptyCtxts +ppr_mono_ty (HsDocTy _ ty _) unicode qual emptyCtxts + = ppr_mono_lty ty unicode qual emptyCtxts -ppr_mono_ty _ (HsWildCardTy (AnonWildCard _)) _ _ _ = char '_' -ppr_mono_ty _ (HsTyLit _ n) _ _ _ = ppr_tylit n +ppr_mono_ty (HsWildCardTy (AnonWildCard _)) _ _ _ = char '_' +ppr_mono_ty (HsTyLit _ n) _ _ _ = ppr_tylit n ppr_tylit :: HsTyLit -> Html ppr_tylit (HsNumTy _ n) = toHtml (show n) ppr_tylit (HsStrTy _ s) = toHtml (show s) -ppr_fun_ty :: Int -> LHsType DocNameI -> LHsType DocNameI -> Unicode -> Qualification -> HideEmptyContexts -> Html -ppr_fun_ty ctxt_prec ty1 ty2 unicode qual emptyCtxts - = let p1 = ppr_mono_lty pREC_FUN ty1 unicode qual HideEmptyContexts - p2 = ppr_mono_lty pREC_TOP ty2 unicode qual emptyCtxts - in - maybeParen ctxt_prec pREC_FUN $ - hsep [p1, arrow unicode <+> p2] diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs index 501caa4b..1c44ffda 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs @@ -40,7 +40,6 @@ module Haddock.Backends.Xhtml.Layout ( topDeclElem, declElem, ) where - import Haddock.Backends.Xhtml.DocMarkup import Haddock.Backends.Xhtml.Types import Haddock.Backends.Xhtml.Utils @@ -48,6 +47,7 @@ import Haddock.Types import Haddock.Utils (makeAnchorId, nameAnchorId) import qualified Data.Map as Map import Text.XHtml hiding ( name, title, quote ) +import Data.Maybe (fromMaybe) import FastString ( unpackFS ) import GHC @@ -151,20 +151,22 @@ subTable pkg qual decls = Just $ table << aboves (concatMap subRow decls) -- | Sub table with source information (optional). subTableSrc :: Maybe Package -> Qualification -> LinksInfo -> Bool - -> [(SubDecl,Located DocName)] -> Maybe Html + -> [(SubDecl, Maybe Module, Located DocName)] -> Maybe Html subTableSrc _ _ _ _ [] = Nothing subTableSrc pkg qual lnks splice decls = Just $ table << aboves (concatMap subRow decls) where - subRow ((decl, mdoc, subs),L loc dn) = + subRow ((decl, mdoc, subs), mdl, L loc dn) = (td ! [theclass "src clearfix"] << (thespan ! [theclass "inst-left"] << decl) - <+> linkHtml loc dn + <+> linkHtml loc mdl dn <-> docElement td << fmap (docToHtml Nothing pkg qual) mdoc ) : map (cell . (td <<)) subs - linkHtml loc@(RealSrcSpan _) dn = links lnks loc splice dn - linkHtml _ _ = noHtml + + linkHtml :: SrcSpan -> Maybe Module -> DocName -> Html + linkHtml loc@(RealSrcSpan _) mdl dn = links lnks loc splice mdl dn + linkHtml _ _ _ = noHtml subBlock :: [Html] -> Maybe Html subBlock [] = Nothing @@ -197,7 +199,7 @@ subEquations pkg qual = divSubDecls "equations" "Equations" . subTable pkg qual subInstances :: Maybe Package -> Qualification -> String -- ^ Class name, used for anchor generation -> LinksInfo -> Bool - -> [(SubDecl,Located DocName)] -> Html + -> [(SubDecl, Maybe Module, Located DocName)] -> Html subInstances pkg qual nm lnks splice = maybe noHtml wrap . instTable where wrap contents = subSection (collapseDetails id_ DetailsOpen (summary +++ contents)) @@ -209,7 +211,7 @@ subInstances pkg qual nm lnks splice = maybe noHtml wrap . instTable subOrphanInstances :: Maybe Package -> Qualification -> LinksInfo -> Bool - -> [(SubDecl,Located DocName)] -> Html + -> [(SubDecl, Maybe Module, Located DocName)] -> Html subOrphanInstances pkg qual lnks splice = maybe noHtml wrap . instTable where wrap = ((h1 << "Orphan instances") +++) @@ -268,13 +270,13 @@ declElem = paragraph ! [theclass "src"] -- it adds a source and wiki link at the right hand side of the box topDeclElem :: LinksInfo -> SrcSpan -> Bool -> [DocName] -> Html -> Html topDeclElem lnks loc splice names html = - declElem << (html <+> (links lnks loc splice $ head names)) + declElem << (html <+> (links lnks loc splice Nothing $ head names)) -- FIXME: is it ok to simply take the first name? -- | Adds a source and wiki link at the right hand side of the box. -- Name must be documented, otherwise we wouldn't get here. -links :: LinksInfo -> SrcSpan -> Bool -> DocName -> Html -links ((_,_,sourceMap,lineMap), (_,_,maybe_wiki_url)) loc splice docName@(Documented n mdl) = +links :: LinksInfo -> SrcSpan -> Bool -> Maybe Module -> DocName -> Html +links ((_,_,sourceMap,lineMap), (_,_,maybe_wiki_url)) loc splice mdl' docName@(Documented n mdl) = srcLink <+> wikiLink <+> (selfLink ! [theclass "selflink"] << "#") where selfLink = linkedAnchor (nameAnchorId (nameOccName (getName docName))) @@ -298,12 +300,13 @@ links ((_,_,sourceMap,lineMap), (_,_,maybe_wiki_url)) loc splice docName@(Docume -- For source links, we want to point to the original module, -- because only that will have the source. - -- TODO: do something about type instances. They will point to - -- the module defining the type family, which is wrong. - origMod = nameModule n + -- + -- 'mdl'' is a way of "overriding" the module. Without it, instances + -- will point to the module defining the class/family, which is wrong. + origMod = fromMaybe (nameModule n) mdl' origPkg = moduleUnitId origMod fname = case loc of RealSrcSpan l -> unpackFS (srcSpanFile l) UnhelpfulSpan _ -> error "links: UnhelpfulSpan" -links _ _ _ _ = noHtml +links _ _ _ _ _ = noHtml diff --git a/haddock-api/src/Haddock/Convert.hs b/haddock-api/src/Haddock/Convert.hs index bf6fbab0..6eee353b 100644 --- a/haddock-api/src/Haddock/Convert.hs +++ b/haddock-api/src/Haddock/Convert.hs @@ -31,7 +31,7 @@ import NameSet ( emptyNameSet ) import RdrName ( mkVarUnqual ) import PatSyn import SrcLoc ( Located, noLoc, unLoc, GenLocated(..), srcLocSpan ) -import TcType ( tcSplitSigmaTy ) +import TcType import TyCon import Type import TyCoRep @@ -527,7 +527,7 @@ synifyType _ (FunTy t1 t2) = let s2 = synifyType WithinType t2 in noLoc $ HsFunTy noExt s1 s2 synifyType s forallty@(ForAllTy _tv _ty) = - let (tvs, ctx, tau) = tcSplitSigmaTy forallty + let (tvs, ctx, tau) = tcSplitSigmaTyPreserveSynonyms forallty sPhi = HsQualTy { hst_ctxt = synifyCtx ctx , hst_xqual = noExt , hst_body = synifyType WithinType tau } @@ -626,3 +626,47 @@ synifyFamInst fi opaque = do ts' = synifyTypes ts annot_ts = zipWith3 annotHsType is_poly_tvs ts ts' is_poly_tvs = mkIsPolyTvs (tyConVisibleTyVars fam_tc) + +{- +Note [Invariant: Never expand type synonyms] + +In haddock, we never want to expand a type synonym that may be presented to the +user, as we want to keep the link to the abstraction captured in the synonym. + +All code in Haddock.Convert must make sure that this invariant holds. + +See https://github.com/haskell/haddock/issues/879 for a bug where this +invariant didn't hold. +-} + +-- | A version of 'TcType.tcSplitSigmaTy' that preserves type synonyms. +-- +-- See Note [Invariant: Never expand type synonyms] +tcSplitSigmaTyPreserveSynonyms :: Type -> ([TyVar], ThetaType, Type) +tcSplitSigmaTyPreserveSynonyms ty = + case tcSplitForAllTysPreserveSynonyms ty of + (tvs, rho) -> case tcSplitPhiTyPreserveSynonyms rho of + (theta, tau) -> (tvs, theta, tau) + +-- | See Note [Invariant: Never expand type synonyms] +tcSplitForAllTysPreserveSynonyms :: Type -> ([TyVar], Type) +tcSplitForAllTysPreserveSynonyms ty = split ty ty [] + where + split _ (ForAllTy (TvBndr tv _) ty') tvs = split ty' ty' (tv:tvs) + split orig_ty _ tvs = (reverse tvs, orig_ty) + +-- | See Note [Invariant: Never expand type synonyms] +tcSplitPhiTyPreserveSynonyms :: Type -> (ThetaType, Type) +tcSplitPhiTyPreserveSynonyms ty0 = split ty0 [] + where + split ty ts + = case tcSplitPredFunTyPreserveSynonyms_maybe ty of + Just (pred_, ty') -> split ty' (pred_:ts) + Nothing -> (reverse ts, ty) + +-- | See Note [Invariant: Never expand type synonyms] +tcSplitPredFunTyPreserveSynonyms_maybe :: Type -> Maybe (PredType, Type) +tcSplitPredFunTyPreserveSynonyms_maybe (FunTy arg res) + | isPredTy arg = Just (arg, res) +tcSplitPredFunTyPreserveSynonyms_maybe _ + = Nothing diff --git a/haddock-api/src/Haddock/GhcUtils.hs b/haddock-api/src/Haddock/GhcUtils.hs index b2c34bb4..e7d80969 100644 --- a/haddock-api/src/Haddock/GhcUtils.hs +++ b/haddock-api/src/Haddock/GhcUtils.hs @@ -31,6 +31,8 @@ import GHC import Class import DynFlags +import HsTypes (HsType(..)) + moduleString :: Module -> String moduleString = moduleNameString . moduleName @@ -226,6 +228,100 @@ getGADTConTypeG (ConDeclH98 {}) = panic "getGADTConTypeG" -- Should only be called on ConDeclGADT getGADTConTypeG (XConDecl {}) = panic "getGADTConTypeG" + +------------------------------------------------------------------------------- +-- * Parenthesization +------------------------------------------------------------------------------- + +-- | Precedence level (inside the 'HsType' AST). +data Precedence + = PREC_TOP -- ^ precedence of 'type' production in GHC's parser + + | PREC_CTX -- ^ Used for single contexts, eg. ctx => type + -- (as opposed to (ctx1, ctx2) => type) + + | PREC_FUN -- ^ precedence of 'btype' production in GHC's parser + -- (used for LH arg of (->)) + + | PREC_OP -- ^ arg of any infix operator + -- (we don't keep have fixity info) + + | PREC_CON -- ^ arg of type application: always parenthesize unless atomic + deriving (Eq, Ord) + +-- | Add in extra 'HsParTy' where needed to ensure that what would be printed +-- out using 'ppr' has enough parentheses to be re-parsed properly. +-- +-- We cannot add parens that may be required by fixities because we do not have +-- any fixity information to work with in the first place :(. +reparenTypePrec :: (XParTy a ~ NoExt) => Precedence -> HsType a -> HsType a +reparenTypePrec = go + where + + -- Shorter name for 'reparenType' + go :: (XParTy a ~ NoExt) => Precedence -> HsType a -> HsType a + go _ (HsBangTy x b ty) = HsBangTy x b (reparenLType ty) + go _ (HsTupleTy x con tys) = HsTupleTy x con (map reparenLType tys) + go _ (HsSumTy x tys) = HsSumTy x (map reparenLType tys) + go _ (HsKindSig x ty kind) = HsKindSig x (reparenLType ty) (reparenLType kind) + go _ (HsListTy x ty) = HsListTy x (reparenLType ty) + go _ (HsRecTy x flds) = HsRecTy x (map (fmap reparenConDeclField) flds) + go p (HsDocTy x ty d) = HsDocTy x (goL p ty) d + go _ (HsExplicitListTy x p tys) = HsExplicitListTy x p (map reparenLType tys) + go _ (HsExplicitTupleTy x tys) = HsExplicitTupleTy x (map reparenLType tys) + go p (HsIParamTy x n ty) + = paren p PREC_CTX $ HsIParamTy x n (reparenLType ty) + go p (HsForAllTy x tvs ty) + = paren p PREC_CTX $ HsForAllTy x (map (fmap reparenTyVar) tvs) (reparenLType ty) + go p (HsQualTy x ctxt ty) + = paren p PREC_FUN $ HsQualTy x (fmap (map reparenLType) ctxt) (reparenLType ty) + go p (HsFunTy x ty1 ty2) + = paren p PREC_FUN $ HsFunTy x (goL PREC_FUN ty1) (goL PREC_TOP ty2) + go p (HsAppTy x fun_ty arg_ty) + = paren p PREC_CON $ HsAppTy x (goL PREC_FUN fun_ty) (goL PREC_CON arg_ty) + go p (HsOpTy x ty1 op ty2) + = paren p PREC_FUN $ HsOpTy x (goL PREC_OP ty1) op (goL PREC_OP ty2) + go p (HsParTy _ t) = unLoc $ goL p t -- pretend the paren doesn't exist - it will be added back if needed + go _ t@HsTyVar{} = t + go _ t@HsStarTy{} = t + go _ t@HsSpliceTy{} = t + go _ t@HsTyLit{} = t + go _ t@HsWildCardTy{} = t + go _ t@XHsType{} = t + + -- Located variant of 'go' + goL :: (XParTy a ~ NoExt) => Precedence -> LHsType a -> LHsType a + goL ctxt_prec = fmap (go ctxt_prec) + + -- Optionally wrap a type in parens + paren :: (XParTy a ~ NoExt) + => Precedence -- Precedence of context + -> Precedence -- Precedence of top-level operator + -> HsType a -> HsType a -- Wrap in parens if (ctxt >= op) + paren ctxt_prec op_prec | ctxt_prec >= op_prec = HsParTy NoExt . noLoc + | otherwise = id + + +-- | Add parenthesis around the types in a 'HsType' (see 'reparenTypePrec') +reparenType :: (XParTy a ~ NoExt) => HsType a -> HsType a +reparenType = reparenTypePrec PREC_TOP + +-- | Add parenthesis around the types in a 'LHsType' (see 'reparenTypePrec') +reparenLType :: (XParTy a ~ NoExt) => LHsType a -> LHsType a +reparenLType = fmap reparenType + +-- | Add parenthesis around the types in a 'HsTyVarBndr' (see 'reparenTypePrec') +reparenTyVar :: (XParTy a ~ NoExt) => HsTyVarBndr a -> HsTyVarBndr a +reparenTyVar (UserTyVar x n) = UserTyVar x n +reparenTyVar (KindedTyVar x n kind) = KindedTyVar x n (reparenLType kind) +reparenTyVar v@XTyVarBndr{} = v + +-- | Add parenthesis around the types in a 'ConDeclField' (see 'reparenTypePrec') +reparenConDeclField :: (XParTy a ~ NoExt) => ConDeclField a -> ConDeclField a +reparenConDeclField (ConDeclField x n t d) = ConDeclField x n (reparenLType t) d +reparenConDeclField c@XConDeclField{} = c + + ------------------------------------------------------------------------------- -- * Located ------------------------------------------------------------------------------- diff --git a/haddock-api/src/Haddock/Interface/Create.hs b/haddock-api/src/Haddock/Interface/Create.hs index 78242990..c4df2090 100644 --- a/haddock-api/src/Haddock/Interface/Create.hs +++ b/haddock-api/src/Haddock/Interface/Create.hs @@ -419,9 +419,12 @@ mkMaps dflags pkgName gre instances decls = do instanceMap = M.fromList [ (getSrcSpan n, n) | n <- instances ] names :: SrcSpan -> HsDecl GhcRn -> [Name] - names l (InstD _ d) = maybeToList (M.lookup loc instanceMap) -- See note [2]. + names _ (InstD _ d) = maybeToList (M.lookup loc instanceMap) -- See note [2]. where loc = case d of - TyFamInstD _ _ -> l -- The CoAx's loc is the whole line, but only for TFs + -- The CoAx's loc is the whole line, but only for TFs. The + -- workaround is to dig into the family instance declaration and + -- get the identifier with the right location. + TyFamInstD _ (TyFamInstDecl d') -> getLoc (feqn_tycon (hsib_body d')) _ -> getInstLoc d names l (DerivD {}) = maybeToList (M.lookup l instanceMap) -- See note [2]. names _ decl = getMainDeclBinder decl diff --git a/haddock-api/src/Haddock/Types.hs b/haddock-api/src/Haddock/Types.hs index da422562..ea74043d 100644 --- a/haddock-api/src/Haddock/Types.hs +++ b/haddock-api/src/Haddock/Types.hs @@ -28,6 +28,7 @@ module Haddock.Types ( import Control.Exception import Control.Arrow hiding ((<+>)) import Control.DeepSeq +import Control.Monad.IO.Class (MonadIO(..)) import Data.Typeable import Data.Map (Map) import Data.Data (Data) @@ -661,6 +662,8 @@ instance Monad ErrMsgGhc where m >>= k = WriterGhc $ runWriterGhc m >>= \ (a, msgs1) -> fmap (second (msgs1 ++)) (runWriterGhc (k a)) +instance MonadIO ErrMsgGhc where + liftIO m = WriterGhc (fmap (\x -> (x, [])) (liftIO m)) ----------------------------------------------------------------------------- -- * Pass sensitive types diff --git a/haddock-library/test/Documentation/Haddock/ParserSpec.hs b/haddock-library/test/Documentation/Haddock/ParserSpec.hs index 86ed3b35..0449c917 100644 --- a/haddock-library/test/Documentation/Haddock/ParserSpec.hs +++ b/haddock-library/test/Documentation/Haddock/ParserSpec.hs @@ -86,6 +86,18 @@ spec = do it "parses identifiers enclosed within backticks" $ do "`foo`" `shouldParseTo` DocIdentifier "foo" + it "parses identifiers preceded by a backtick and followed by a single quote" $ do + "`foo'" `shouldParseTo` DocIdentifier "foo" + + it "parses identifiers preceded by a single quote and followed by a backtick" $ do + "'foo`" `shouldParseTo` DocIdentifier "foo" + + it "can parse a constructor identifier" $ do + "'Foo'" `shouldParseTo` DocIdentifier "Foo" + + it "can parse a qualified identifier" $ do + "'Foo.bar'" `shouldParseTo` DocIdentifier "Foo.bar" + it "parses a word with an one of the delimiters in it as DocString" $ do "don't" `shouldParseTo` "don't" @@ -99,9 +111,43 @@ spec = do it "doesn't parse empty identifiers" $ do "``" `shouldParseTo` "``" - it "can parse infix identifiers" $ do + it "can parse an identifier in infix notation enclosed within backticks" $ do "``infix``" `shouldParseTo` "`" <> DocIdentifier "infix" <> "`" + it "can parse identifiers containing a single quote" $ do + "'don't'" `shouldParseTo` DocIdentifier "don't" + + it "can parse identifiers ending with a single quote" $ do + "'foo''" `shouldParseTo` DocIdentifier "foo'" + + it "can parse an identifier containing a digit" $ do + "'f0'" `shouldParseTo` DocIdentifier "f0" + + it "can parse an identifier containing unicode characters" $ do + "'λ'" `shouldParseTo` DocIdentifier "λ" + + it "can parse a single quote followed by an identifier" $ do + "''foo'" `shouldParseTo` "'" <> DocIdentifier "foo" + + it "can parse an identifier that starts with an underscore" $ do + "'_x'" `shouldParseTo` DocIdentifier "_x" + + context "when parsing operators" $ do + it "can parse an operator enclosed within single quotes" $ do + "'.='" `shouldParseTo` DocIdentifier ".=" + + it "can parse a qualified operator" $ do + "'F..'" `shouldParseTo` DocIdentifier "F.." + + it "can parse a constructor operator" $ do + "':='" `shouldParseTo` DocIdentifier ":=" + + it "can parse a qualified constructor operator" $ do + "'F.:='" `shouldParseTo` DocIdentifier "F.:=" + + it "can parse a unicode operator" $ do + "'∧'" `shouldParseTo` DocIdentifier "∧" + context "when parsing URLs" $ do it "parses a URL" $ do "<http://example.com/>" `shouldParseTo` hyperlink "http://example.com/" Nothing diff --git a/haddock-test/src/Test/Haddock.hs b/haddock-test/src/Test/Haddock.hs index f372f773..942c0587 100644 --- a/haddock-test/src/Test/Haddock.hs +++ b/haddock-test/src/Test/Haddock.hs @@ -158,7 +158,9 @@ maybeAcceptFile :: Config c -> FilePath -> CheckResult -> IO CheckResult maybeAcceptFile cfg file result | cfgAccept cfg && result `elem` [NoRef, Fail] = do Just out <- readOut cfg file - writeFile (refFile dcfg file) $ ccfgDump ccfg out + let ref = refFile dcfg file + createDirectoryIfMissing True (takeDirectory ref) + writeFile ref $ ccfgDump ccfg out pure Accepted where dcfg = cfgDirConfig cfg diff --git a/haddock.cabal b/haddock.cabal index 29d3d114..af606894 100644 --- a/haddock.cabal +++ b/haddock.cabal @@ -78,7 +78,7 @@ executable haddock xhtml >= 3000.2 && < 3000.3, Cabal >= 1.10, ghc-boot, - ghc == 8.6.*, + ghc == 8.5.*, bytestring, parsec, text, diff --git a/hoogle-test/ref/Bug722/test.txt b/hoogle-test/ref/Bug722/test.txt new file mode 100644 index 00000000..96f3747b --- /dev/null +++ b/hoogle-test/ref/Bug722/test.txt @@ -0,0 +1,16 @@ +-- Hoogle documentation, generated by Haddock +-- See Hoogle, http://www.haskell.org/hoogle/ + +@package test +@version 0.0.0 + +module Bug722 +class Foo a +(!@#) :: Foo a => a -> a -> a +infixl 4 !@# +type family &* :: * -> * -> * +infixr 3 &* +data a :-& b +(:^&) :: a -> b -> (:-&) a b +infixl 6 :-& +infixl 6 :^& diff --git a/hoogle-test/ref/Bug806/test.txt b/hoogle-test/ref/Bug806/test.txt index d9a908b3..67e9fd61 100644 --- a/hoogle-test/ref/Bug806/test.txt +++ b/hoogle-test/ref/Bug806/test.txt @@ -21,4 +21,5 @@ class C a where { -- | <a>AT</a> docs type family AT a; + type AT a = Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy))))))))); } diff --git a/hoogle-test/ref/Bug873/test.txt b/hoogle-test/ref/Bug873/test.txt new file mode 100644 index 00000000..19100212 --- /dev/null +++ b/hoogle-test/ref/Bug873/test.txt @@ -0,0 +1,26 @@ +-- Hoogle documentation, generated by Haddock +-- See Hoogle, http://www.haskell.org/hoogle/ + +@package test +@version 0.0.0 + +module Bug873 + +-- | Application operator. This operator is redundant, since ordinary +-- application <tt>(f x)</tt> means the same as <tt>(f <a>$</a> x)</tt>. +-- However, <a>$</a> has low, right-associative binding precedence, so it +-- sometimes allows parentheses to be omitted; for example: +-- +-- <pre> +-- f $ g $ h x = f (g (h x)) +-- </pre> +-- +-- It is also useful in higher-order situations, such as <tt><a>map</a> +-- (<a>$</a> 0) xs</tt>, or <tt><a>zipWith</a> (<a>$</a>) fs xs</tt>. +-- +-- Note that <tt>($)</tt> is levity-polymorphic in its result type, so +-- that foo $ True where foo :: Bool -> Int# is well-typed +($) :: () => (a -> b) -> a -> b +infixr 0 $ +($$) :: (a -> b) -> a -> b +infixr 0 $$ diff --git a/hoogle-test/ref/type-sigs/test.txt b/hoogle-test/ref/type-sigs/test.txt index ec5f5043..1209279c 100644 --- a/hoogle-test/ref/type-sigs/test.txt +++ b/hoogle-test/ref/type-sigs/test.txt @@ -6,11 +6,11 @@ module ReaderT newtype ReaderT r m a -ReaderT :: r -> m a -> ReaderT r m a +ReaderT :: (r -> m a) -> ReaderT r m a [runReaderT] :: ReaderT r m a -> r -> m a module ReaderTReexport newtype ReaderT r m a -ReaderT :: r -> m a -> ReaderT r m a +ReaderT :: (r -> m a) -> ReaderT r m a [runReaderT] :: ReaderT r m a -> r -> m a runReaderT :: ReaderT r m a -> r -> m a diff --git a/hoogle-test/src/Bug722/Bug722.hs b/hoogle-test/src/Bug722/Bug722.hs new file mode 100644 index 00000000..a33d5b24 --- /dev/null +++ b/hoogle-test/src/Bug722/Bug722.hs @@ -0,0 +1,13 @@ +{-# LANGUAGE TypeOperators, TypeFamilies #-} +module Bug722 where + +class Foo a where + (!@#) :: a -> a -> a +infixl 4 !@# + +type family (&*) :: * -> * -> * +infixr 3 &* + +data a :-& b = a :^& b +infixl 6 :-&, :^& + diff --git a/hoogle-test/src/Bug806/Bug806.hs b/hoogle-test/src/Bug806/Bug806.hs index 6efcb5cf..45efda77 100644 --- a/hoogle-test/src/Bug806/Bug806.hs +++ b/hoogle-test/src/Bug806/Bug806.hs @@ -21,3 +21,4 @@ v = 42 class C a where -- | 'AT' docs type AT a + type AT a = Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy (Proxy))))))))) diff --git a/hoogle-test/src/Bug873/Bug873.hs b/hoogle-test/src/Bug873/Bug873.hs new file mode 100644 index 00000000..3a9a5383 --- /dev/null +++ b/hoogle-test/src/Bug873/Bug873.hs @@ -0,0 +1,5 @@ +module Bug873 (($), ($$)) where +infixr 0 $$ + +($$) :: (a -> b) -> a -> b +f $$ x = f x diff --git a/html-test/ref/A.html b/html-test/ref/A.html index c6965abc..e4802966 100644 --- a/html-test/ref/A.html +++ b/html-test/ref/A.html @@ -54,11 +54,15 @@ ><li class="src short" ><a href="#" >other</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >test2</a - > :: Bool</li + > :: <a href="#" title="Data.Bool" + >Bool</a + ></li ><li class="src short" ><span class="keyword" >data</span @@ -70,7 +74,9 @@ ><li class="src short" ><a href="#" >reExport</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -105,7 +111,9 @@ ><p class="src" ><a id="v:other" class="def" >other</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -113,7 +121,9 @@ ><p class="src" ><a id="v:test2" class="def" >test2</a - > :: Bool <a href="#" class="selflink" + > :: <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -155,7 +165,9 @@ ><p class="src" ><a id="v:reExport" class="def" >reExport</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Bug280.html b/html-test/ref/Bug280.html index f2d25057..d37fc11f 100644 --- a/html-test/ref/Bug280.html +++ b/html-test/ref/Bug280.html @@ -61,7 +61,9 @@ ><p class="src" ><a id="v:x" class="def" >x</a - > :: [Char] <a href="#" class="selflink" + > :: [<a href="#" title="Data.Char" + >Char</a + >] <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/Bug3.html b/html-test/ref/Bug3.html index 2c716278..3c4b905c 100644 --- a/html-test/ref/Bug3.html +++ b/html-test/ref/Bug3.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Bug310.html b/html-test/ref/Bug310.html index e664eccd..8fef21a6 100644 --- a/html-test/ref/Bug310.html +++ b/html-test/ref/Bug310.html @@ -38,6 +38,28 @@ ><p class="caption" >Bug310</p ></div + ><div id="synopsis" + ><details id="syn" + ><summary + >Synopsis</summary + ><ul class="details-toggle" data-details-id="syn" + ><li class="src short" + ><span class="keyword" + >type family</span + > (a :: <a href="#" title="GHC.TypeNats" + >Nat</a + >) <a href="#" + >+</a + > (b :: <a href="#" title="GHC.TypeNats" + >Nat</a + >) :: <a href="#" title="GHC.TypeNats" + >Nat</a + > <span class="keyword" + >where ...</span + ></li + ></ul + ></details + ></div ><div id="interface" ><h1 >Documentation</h1 @@ -45,13 +67,31 @@ ><p class="src" ><span class="keyword" >type family</span - > (a :: Nat) <a id="t:-43-" class="def" + > (a :: <a href="#" title="GHC.TypeNats" + >Nat</a + >) <a id="t:-43-" class="def" >+</a - > (b :: Nat) :: Nat <span class="keyword" + > (b :: <a href="#" title="GHC.TypeNats" + >Nat</a + >) :: <a href="#" title="GHC.TypeNats" + >Nat</a + > <span class="keyword" >where ...</span + > <span class="fixity" + >infixl 6</span + ><span class="rightedge" + ></span > <a href="#" class="selflink" >#</a ></p + ><div class="doc" + ><p + >Addition of type-level naturals.</p + ><p + ><em + >Since: base-4.7.0.0</em + ></p + ></div ></div ></div ></div diff --git a/html-test/ref/Bug387.html b/html-test/ref/Bug387.html index da1b1ee5..ba2f5c91 100644 --- a/html-test/ref/Bug387.html +++ b/html-test/ref/Bug387.html @@ -60,11 +60,15 @@ ><li class="src short" ><a href="#" >test1</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >test2</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -79,7 +83,9 @@ ><p class="src" ><a id="v:test1" class="def" >test1</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -93,7 +99,9 @@ ><p class="src" ><a id="v:test2" class="def" >test2</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/Bug4.html b/html-test/ref/Bug4.html index 6bf822f7..6afd37fe 100644 --- a/html-test/ref/Bug4.html +++ b/html-test/ref/Bug4.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Bug546.html b/html-test/ref/Bug546.html index e2246475..221f7b6c 100644 --- a/html-test/ref/Bug546.html +++ b/html-test/ref/Bug546.html @@ -46,11 +46,17 @@ ><li class="src short" ><a href="#" >x</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ><li class="src short" ><a href="#" >compile</a - > :: String -> String</li + > :: <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="Data.String" + >String</a + ></li ></ul ></details ></div @@ -61,7 +67,9 @@ ><p class="src" ><a id="v:x" class="def" >x</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -81,7 +89,11 @@ ><p class="src" ><a id="v:compile" class="def" >compile</a - > :: String -> String <a href="#" class="selflink" + > :: <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="Data.String" + >String</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Bug548.html b/html-test/ref/Bug548.html index a8061eb2..b690b8ad 100644 --- a/html-test/ref/Bug548.html +++ b/html-test/ref/Bug548.html @@ -47,7 +47,13 @@ >newtype</span > <a id="t:WrappedArrow" class="def" >WrappedArrow</a - > (a :: * -> * -> *) b c <a href="#" class="selflink" + > (a :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + >) b c <a href="#" class="selflink" >#</a ></p ><div class="subs constructors" @@ -92,9 +98,15 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Generic1:1" ></span - > Generic1 (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Generic1</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b :: * -> *)</span + > a b :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + >)</span ></td ><td class="doc empty" ></td @@ -114,9 +126,15 @@ ><p class="src" ><span class="keyword" >type</span - > Rep1 (<a href="#" title="Bug548" - >WrappedArrow</a - > a b) :: k -> *</p + > <a href="#" title="GHC.Generics" + >Rep1</a + > (<a href="#" title="Bug548" + >WrappedArrow</a + > a b) :: k -> <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" + >#</a + ></p ></div > <div class="subs methods" ><p class="caption" @@ -126,17 +144,25 @@ >from1</a > :: <a href="#" title="Bug548" >WrappedArrow</a - > a b a0 -> Rep1 (<a href="#" title="Bug548" + > a b a0 -> <a href="#" title="GHC.Generics" + >Rep1</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b) a0</p + > a b) a0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >to1</a - > :: Rep1 (<a href="#" title="Bug548" + > :: <a href="#" title="GHC.Generics" + >Rep1</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b) a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -146,12 +172,20 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Functor:2" ></span - > Arrow a => Functor (<a href="#" title="Bug548" + > <a href="#" title="Control.Arrow" + >Arrow</a + > a => <a href="#" title="Data.Functor" + >Functor</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b)</span ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + ><em + >Since: base-2.1</em + ></p + ></td ></tr ><tr ><td colspan="2" @@ -172,7 +206,9 @@ >WrappedArrow</a > a b a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b b0</p + > a b b0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<$)</a @@ -180,7 +216,9 @@ >WrappedArrow</a > a b b0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -190,12 +228,20 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Applicative:3" ></span - > Arrow a => Applicative (<a href="#" title="Bug548" + > <a href="#" title="Control.Arrow" + >Arrow</a + > a => <a href="#" title="Control.Applicative" + >Applicative</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b)</span ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + ><em + >Since: base-2.1</em + ></p + ></td ></tr ><tr ><td colspan="2" @@ -214,7 +260,9 @@ >pure</a > :: a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<*>)</a @@ -224,7 +272,9 @@ >WrappedArrow</a > a b a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b b0</p + > a b b0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >liftA2</a @@ -234,7 +284,9 @@ >WrappedArrow</a > a b b0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b c</p + > a b c <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(*>)</a @@ -244,7 +296,9 @@ >WrappedArrow</a > a b b0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b b0</p + > a b b0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<*)</a @@ -254,7 +308,9 @@ >WrappedArrow</a > a b b0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -264,12 +320,22 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Alternative:4" ></span - > (ArrowZero a, ArrowPlus a) => Alternative (<a href="#" title="Bug548" + > (<a href="#" title="Control.Arrow" + >ArrowZero</a + > a, <a href="#" title="Control.Arrow" + >ArrowPlus</a + > a) => <a href="#" title="Control.Applicative" + >Alternative</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b)</span ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + ><em + >Since: base-2.1</em + ></p + ></td ></tr ><tr ><td colspan="2" @@ -288,7 +354,9 @@ >empty</a > :: <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<|>)</a @@ -298,7 +366,9 @@ >WrappedArrow</a > a b a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b a0</p + > a b a0 <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >some</a @@ -306,7 +376,9 @@ >WrappedArrow</a > a b a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b [a0]</p + > a b [a0] <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >many</a @@ -314,7 +386,9 @@ >WrappedArrow</a > a b a0 -> <a href="#" title="Bug548" >WrappedArrow</a - > a b [a0]</p + > a b [a0] <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -324,7 +398,9 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:WrappedArrow:Generic:5" ></span - > Generic (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Generic</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b c)</span ></td @@ -346,9 +422,17 @@ ><p class="src" ><span class="keyword" >type</span - > Rep (<a href="#" title="Bug548" - >WrappedArrow</a - > a b c) :: * -> *</p + > <a href="#" title="GHC.Generics" + >Rep</a + > (<a href="#" title="Bug548" + >WrappedArrow</a + > a b c) :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" + >#</a + ></p ></div > <div class="subs methods" ><p class="caption" @@ -358,17 +442,25 @@ >from</a > :: <a href="#" title="Bug548" >WrappedArrow</a - > a b c -> Rep (<a href="#" title="Bug548" + > a b c -> <a href="#" title="GHC.Generics" + >Rep</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b c) x</p + > a b c) x <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >to</a - > :: Rep (<a href="#" title="Bug548" + > :: <a href="#" title="GHC.Generics" + >Rep</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b c) x -> <a href="#" title="Bug548" >WrappedArrow</a - > a b c</p + > a b c <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -380,12 +472,22 @@ ></span > <span class="keyword" >type</span - > Rep1 (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Rep1</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b :: * -> *)</span + > a b :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + >)</span + ></td + ><td class="doc" + ><p + ><em + >Since: base-4.7.0.0</em + ></p ></td - ><td class="doc empty" - ></td ></tr ><tr ><td colspan="2" @@ -399,9 +501,43 @@ > <div class="src" ><span class="keyword" >type</span - > Rep1 (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Rep1</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b :: * -> *) = D1 (MetaData "WrappedArrow" "Control.Applicative" "base" True) (C1 (MetaCons "WrapArrow" PrefixI True) (S1 (MetaSel (Just "unwrapArrow") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 (a b))))</div + > a b :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + >) = <a href="#" title="GHC.Generics" + >D1</a + > (<a href="#" title="GHC.Generics" + >MetaData</a + > "WrappedArrow" "Control.Applicative" "base" <a href="#" title="Data.Bool" + >True</a + >) (<a href="#" title="GHC.Generics" + >C1</a + > (<a href="#" title="GHC.Generics" + >MetaCons</a + > "WrapArrow" <a href="#" title="GHC.Generics" + >PrefixI</a + > <a href="#" title="Data.Bool" + >True</a + >) (<a href="#" title="GHC.Generics" + >S1</a + > (<a href="#" title="GHC.Generics" + >MetaSel</a + > (<a href="#" title="GHC.Maybe" + >Just</a + > "unwrapArrow") <a href="#" title="GHC.Generics" + >NoSourceUnpackedness</a + > <a href="#" title="GHC.Generics" + >NoSourceStrictness</a + > <a href="#" title="GHC.Generics" + >DecidedLazy</a + >) (<a href="#" title="GHC.Generics" + >Rec1</a + > (a b))))</div ></details ></td ></tr @@ -412,12 +548,18 @@ ></span > <span class="keyword" >type</span - > Rep (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Rep</a + > (<a href="#" title="Bug548" >WrappedArrow</a > a b c)</span ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + ><em + >Since: base-4.7.0.0</em + ></p + ></td ></tr ><tr ><td colspan="2" @@ -431,9 +573,39 @@ > <div class="src" ><span class="keyword" >type</span - > Rep (<a href="#" title="Bug548" + > <a href="#" title="GHC.Generics" + >Rep</a + > (<a href="#" title="Bug548" >WrappedArrow</a - > a b c) = D1 (MetaData "WrappedArrow" "Control.Applicative" "base" True) (C1 (MetaCons "WrapArrow" PrefixI True) (S1 (MetaSel (Just "unwrapArrow") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (a b c))))</div + > a b c) = <a href="#" title="GHC.Generics" + >D1</a + > (<a href="#" title="GHC.Generics" + >MetaData</a + > "WrappedArrow" "Control.Applicative" "base" <a href="#" title="Data.Bool" + >True</a + >) (<a href="#" title="GHC.Generics" + >C1</a + > (<a href="#" title="GHC.Generics" + >MetaCons</a + > "WrapArrow" <a href="#" title="GHC.Generics" + >PrefixI</a + > <a href="#" title="Data.Bool" + >True</a + >) (<a href="#" title="GHC.Generics" + >S1</a + > (<a href="#" title="GHC.Generics" + >MetaSel</a + > (<a href="#" title="GHC.Maybe" + >Just</a + > "unwrapArrow") <a href="#" title="GHC.Generics" + >NoSourceUnpackedness</a + > <a href="#" title="GHC.Generics" + >NoSourceStrictness</a + > <a href="#" title="GHC.Generics" + >DecidedLazy</a + >) (<a href="#" title="GHC.Generics" + >Rec0</a + > (a b c))))</div ></details ></td ></tr diff --git a/html-test/ref/Bug574.html b/html-test/ref/Bug574.html new file mode 100644 index 00000000..ed0a5e15 --- /dev/null +++ b/html-test/ref/Bug574.html @@ -0,0 +1,86 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head + ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" + /><title + >Bug574</title + ><link href="#" rel="stylesheet" type="text/css" title="Ocean" + /><link rel="stylesheet" type="text/css" href="#" + /><script src="haddock-bundle.min.js" async="async" type="text/javascript" + ></script + ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" + ></script + ></head + ><body + ><div id="package-header" + ><ul class="links" id="page-menu" + ><li + ><a href="#" + >Contents</a + ></li + ><li + ><a href="#" + >Index</a + ></li + ></ul + ><p class="caption empty" + ></p + ></div + ><div id="content" + ><div id="module-header" + ><table class="info" + ><tr + ><th + >Safe Haskell</th + ><td + >None</td + ></tr + ></table + ><p class="caption" + >Bug574</p + ></div + ><div id="synopsis" + ><details id="syn" + ><summary + >Synopsis</summary + ><ul class="details-toggle" data-details-id="syn" + ><li class="src short" + ><a href="#" + >foo</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + ></li + ></ul + ></details + ></div + ><div id="interface" + ><h1 + >Documentation</h1 + ><div class="top" + ><p class="src" + ><a id="v:foo" class="def" + >foo</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" + >#</a + ></p + ><div class="doc" + ><p + >Somthing with a spliced type</p + ></div + ></div + ></div + ></div + ><div id="footer" + ></div + ></body + ></html +>
\ No newline at end of file diff --git a/html-test/ref/Bug6.html b/html-test/ref/Bug6.html index 27f73d64..15842547 100644 --- a/html-test/ref/Bug6.html +++ b/html-test/ref/Bug6.html @@ -58,7 +58,9 @@ >A</a > = <a href="#" >A</a - > Int</li + > <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><span class="keyword" >data</span @@ -66,13 +68,17 @@ >B</a > = <a href="#" >B</a - > Int</li + > <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >b</a > :: <a href="#" title="Bug6" >B</a - > -> Int</li + > -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><span class="keyword" >data</span @@ -84,11 +90,15 @@ ><li ><a href="#" >c1</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li ><a href="#" >c2</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul >}</li ><li class="src short" @@ -98,7 +108,11 @@ >D</a > = <a href="#" >D</a - > Int Int</li + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><span class="keyword" >newtype</span @@ -106,7 +120,9 @@ >E</a > = <a href="#" >E</a - > Int</li + > <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -134,7 +150,9 @@ ><td class="src" ><a id="v:A" class="def" >A</a - > Int</td + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc empty" ></td ></tr @@ -163,7 +181,9 @@ ><td class="src" ><a id="v:B" class="def" >B</a - > Int</td + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc empty" ></td ></tr @@ -176,7 +196,9 @@ >b</a > :: <a href="#" title="Bug6" >B</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -215,7 +237,9 @@ ><dfn class="src" ><a id="v:c1" class="def" >c1</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc empty" ></div ></li @@ -223,7 +247,9 @@ ><dfn class="src" ><a id="v:c2" class="def" >c2</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc empty" ></div ></li @@ -256,7 +282,11 @@ ><td class="src" ><a id="v:D" class="def" >D</a - > Int Int</td + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc empty" ></td ></tr @@ -284,7 +314,9 @@ ><td class="src" ><a id="v:E" class="def" >E</a - > Int</td + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc empty" ></td ></tr diff --git a/html-test/ref/Bug613.html b/html-test/ref/Bug613.html index e8089fc8..71e30832 100644 --- a/html-test/ref/Bug613.html +++ b/html-test/ref/Bug613.html @@ -104,7 +104,9 @@ ></span > <a href="#" title="Bug613" >Functor</a - > (Either a)</span + > (<a href="#" title="Data.Either" + >Either</a + > a)</span > <a href="#" class="selflink" >#</a ></td @@ -126,7 +128,11 @@ ><p class="src" ><a href="#" >fmap</a - > :: (a0 -> b) -> Either a a0 -> Either a b <a href="#" class="selflink" + > :: (a0 -> b) -> <a href="#" title="Data.Either" + >Either</a + > a a0 -> <a href="#" title="Data.Either" + >Either</a + > a b <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/Bug8.html b/html-test/ref/Bug8.html index 7aa562f2..9de7cca6 100644 --- a/html-test/ref/Bug8.html +++ b/html-test/ref/Bug8.html @@ -99,7 +99,9 @@ ><p class="src" ><a id="v:-45--45--45--62-" class="def" >(--->)</a - > :: Foldable t0 => t0 t -> <a href="#" title="Bug8" + > :: <a href="#" title="Data.Foldable" + >Foldable</a + > t0 => t0 t -> <a href="#" title="Bug8" >Typ</a > -> <a href="#" title="Bug8" >Typ</a diff --git a/html-test/ref/BugDeprecated.html b/html-test/ref/BugDeprecated.html index 393a78ab..4efe3da2 100644 --- a/html-test/ref/BugDeprecated.html +++ b/html-test/ref/BugDeprecated.html @@ -46,27 +46,39 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >bar</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >baz</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >one</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >two</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >three</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -77,7 +89,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -91,7 +105,9 @@ ><p class="src" ><a id="v:bar" class="def" >bar</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -105,7 +121,9 @@ ><p class="src" ><a id="v:baz" class="def" >baz</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -119,7 +137,9 @@ ><p class="src" ><a id="v:one" class="def" >one</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -135,7 +155,9 @@ ><p class="src" ><a id="v:two" class="def" >two</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -149,7 +171,9 @@ ><p class="src" ><a id="v:three" class="def" >three</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/BugExportHeadings.html b/html-test/ref/BugExportHeadings.html index 17378531..78af3351 100644 --- a/html-test/ref/BugExportHeadings.html +++ b/html-test/ref/BugExportHeadings.html @@ -76,27 +76,39 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >bar</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >baz</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >one</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >two</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >three</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -109,7 +121,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -121,7 +135,9 @@ ><p class="src" ><a id="v:bar" class="def" >bar</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -133,7 +149,9 @@ ><p class="src" ><a id="v:baz" class="def" >baz</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -145,7 +163,9 @@ ><p class="src" ><a id="v:one" class="def" >one</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -163,7 +183,9 @@ ><p class="src" ><a id="v:two" class="def" >two</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -181,7 +203,9 @@ ><p class="src" ><a id="v:three" class="def" >three</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Bugs.html b/html-test/ref/Bugs.html index 348ae6bc..abe20dc2 100644 --- a/html-test/ref/Bugs.html +++ b/html-test/ref/Bugs.html @@ -58,7 +58,9 @@ ><td class="src" ><a id="v:A" class="def" >A</a - > a (a -> Int)</td + > a (a -> <a href="#" title="Data.Int" + >Int</a + >)</td ><td class="doc empty" ></td ></tr diff --git a/html-test/ref/BundledPatterns.html b/html-test/ref/BundledPatterns.html index 7a602ae1..e9c77612 100644 --- a/html-test/ref/BundledPatterns.html +++ b/html-test/ref/BundledPatterns.html @@ -48,7 +48,9 @@ >data</span > <a href="#" >Vec</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span ><ul class="subs" ><li @@ -76,7 +78,9 @@ >data</span > <a href="#" >RTree</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span ><ul class="subs" ><li @@ -115,7 +119,9 @@ >data</span > <a id="t:Vec" class="def" >Vec</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span > <a href="#" class="selflink" >#</a @@ -136,7 +142,9 @@ > subscript starting from 0 and ending at <code ><code - >length</code + ><a href="#" title="Data.Foldable" + >length</a + ></code > - 1</code >.</li ></ul @@ -273,7 +281,9 @@ >data</span > <a id="t:RTree" class="def" >RTree</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span > <a href="#" class="selflink" >#</a diff --git a/html-test/ref/BundledPatterns2.html b/html-test/ref/BundledPatterns2.html index 6a60c748..2f456728 100644 --- a/html-test/ref/BundledPatterns2.html +++ b/html-test/ref/BundledPatterns2.html @@ -48,7 +48,9 @@ >data</span > <a href="#" >Vec</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span ><ul class="subs" ><li @@ -78,7 +80,9 @@ >data</span > <a href="#" >RTree</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span ><ul class="subs" ><li @@ -117,7 +121,9 @@ >data</span > <a id="t:Vec" class="def" >Vec</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span > <a href="#" class="selflink" >#</a @@ -138,7 +144,9 @@ > subscript starting from 0 and ending at <code ><code - >length</code + ><a href="#" title="Data.Foldable" + >length</a + ></code > - 1</code >.</li ></ul @@ -271,7 +279,9 @@ >data</span > <a id="t:RTree" class="def" >RTree</a - > :: Nat -> * -> * <span class="keyword" + > :: <a href="#" title="GHC.TypeNats" + >Nat</a + > -> * -> * <span class="keyword" >where</span > <a href="#" class="selflink" >#</a diff --git a/html-test/ref/ConstructorArgs.html b/html-test/ref/ConstructorArgs.html new file mode 100644 index 00000000..9aad9c86 --- /dev/null +++ b/html-test/ref/ConstructorArgs.html @@ -0,0 +1,720 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head + ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" + /><title + >ConstructorArgs</title + ><link href="#" rel="stylesheet" type="text/css" title="Ocean" + /><link rel="stylesheet" type="text/css" href="#" + /><script src="haddock-bundle.min.js" async="async" type="text/javascript" + ></script + ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" + ></script + ></head + ><body + ><div id="package-header" + ><ul class="links" id="page-menu" + ><li + ><a href="#" + >Contents</a + ></li + ><li + ><a href="#" + >Index</a + ></li + ></ul + ><p class="caption empty" + ></p + ></div + ><div id="content" + ><div id="module-header" + ><table class="info" + ><tr + ><th + >Safe Haskell</th + ><td + >Safe</td + ></tr + ></table + ><p class="caption" + >ConstructorArgs</p + ></div + ><div id="synopsis" + ><details id="syn" + ><summary + >Synopsis</summary + ><ul class="details-toggle" data-details-id="syn" + ><li class="src short" + ><span class="keyword" + >data</span + > <a href="#" + >Foo</a + ><ul class="subs" + ><li + >= <a href="#" + >Rec</a + > { <ul class="subs" + ><li + ><a href="#" + >x</a + > :: <a href="#" title="Data.String" + >String</a + ></li + ><li + ><a href="#" + >y</a + > :: <a href="#" title="Data.String" + >String</a + ></li + ></ul + > }</li + ><li + >| <a href="#" + >Baz</a + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.String" + >String</a + ></li + ><li + >| <a href="#" + >Boa</a + > !<a href="#" title="Data.Int" + >Int</a + > !<a href="#" title="Data.String" + >String</a + ></li + ><li + >| <a href="#" title="Data.Int" + >Int</a + > <a href="#" + >:|</a + > <a href="#" title="Data.String" + >String</a + ></li + ><li + >| <a href="#" title="Data.Int" + >Int</a + > <a href="#" + >:*</a + > <a href="#" title="Data.String" + >String</a + ></li + ></ul + ></li + ><li class="src short" + ><span class="keyword" + >data</span + > <a href="#" + >Boo</a + > <span class="keyword" + >where</span + ><ul class="subs" + ><li + ><a href="#" + >Foo</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ><li + ><a href="#" + >Foa</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ><li + ><span class="keyword" + >pattern</span + > <a href="#" + >Fo</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ><li + ><span class="keyword" + >pattern</span + > <a href="#" + >Fo'</a + > :: <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ></ul + ></li + ><li class="src short" + ><span class="keyword" + >pattern</span + > <a href="#" + >Bo</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ><li class="src short" + ><span class="keyword" + >pattern</span + > <a href="#" + >Bo'</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></li + ></ul + ></details + ></div + ><div id="interface" + ><h1 + >Documentation</h1 + ><div class="top" + ><p class="src" + ><span class="keyword" + >data</span + > <a id="t:Foo" class="def" + >Foo</a + > <span class="fixity" + >infixr 1</span + ><span class="rightedge" + ></span + > <a href="#" class="selflink" + >#</a + ></p + ><div class="subs constructors" + ><p class="caption" + >Constructors</p + ><table + ><tr + ><td class="src" + ><a id="v:Rec" class="def" + >Rec</a + ></td + ><td class="doc" + ><p + >doc on a record</p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + ><a id="v:x" class="def" + >x</a + > :: <a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.String" + >String</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Rec</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + ><a id="v:y" class="def" + >y</a + > :: <a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.String" + >String</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Rec</a + ></code + ></p + ></div + ></li + ></ul + ></div + ></td + ></tr + ><tr + ><td class="src" + ><a id="v:Baz" class="def" + >Baz</a + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.String" + >String</a + ></td + ><td class="doc" + ><p + >old prefix doc style</p + ></td + ></tr + ><tr + ><td class="src" + ><a id="v:Boa" class="def" + >Boa</a + > <span class="fixity" + >infixr 2</span + ><span class="rightedge" + ></span + ></td + ><td class="doc" + ><p + >doc on the <code + ><a href="#" title="ConstructorArgs" + >Boa</a + ></code + > constrictor</p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + >!<a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.Int" + >Int</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Boa</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >!<a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.String" + >String</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Boa</a + ></code + ></p + ></div + ></li + ></ul + ></div + ></td + ></tr + ><tr + ><td class="src" + ><a href="#" title="Data.Int" + >Int</a + > <a id="v::-124-" class="def" + >:|</a + > <a href="#" title="Data.String" + >String</a + ></td + ><td class="doc" + ><p + >old infix doc style</p + ></td + ></tr + ><tr + ><td class="src" + ><a id="v::-42-" class="def" + >(:*)</a + > <span class="fixity" + >infixr 3</span + ><span class="rightedge" + ></span + ></td + ><td class="doc" + ><p + >doc on the <code + ><a href="#" title="ConstructorArgs" + >:*</a + ></code + > constructor</p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + ><a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.Int" + >Int</a + ></code + > field of the <code + ><a href="#" title="ConstructorArgs" + >:*</a + ></code + > constructor</p + ></div + ></li + ><li + ><dfn class="src" + ><a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + >doc on the <code + ><a href="#" title="Data.String" + >String</a + ></code + > field of the <code + ><a href="#" title="ConstructorArgs" + >:*</a + ></code + > constructor</p + ></div + ></li + ></ul + ></div + ></td + ></tr + ></table + ></div + ></div + ><div class="top" + ><p class="src" + ><span class="keyword" + >data</span + > <a id="t:Boo" class="def" + >Boo</a + > <span class="keyword" + >where</span + > <span class="fixity" + >infixr 4</span + ><span class="rightedge" + ></span + > <a href="#" class="selflink" + >#</a + ></p + ><div class="subs constructors" + ><p class="caption" + >Constructors</p + ><table + ><tr + ><td class="src" + ><a id="v:Foo" class="def" + >Foo</a + > <span class="fixity" + >infixr 1</span + ><span class="rightedge" + ></span + ></td + ><td class="doc" + ><p + >Info about a <code + ><a href="#" title="ConstructorArgs" + >Foo</a + ></code + ></p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + >:: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + ><code + ><a href="#" title="Data.Int" + >Int</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Foo</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >-> <a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + ><code + ><a href="#" title="Data.String" + >String</a + ></code + > field of <code + ><a href="#" title="ConstructorArgs" + >Foo</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >-> <a href="#" title="ConstructorArgs" + >Boo</a + ></dfn + ><div class="doc" + ><p + >Make a <code + ><a href="#" title="ConstructorArgs" + >Boo</a + ></code + ></p + ></div + ></li + ></ul + ></div + ></td + ></tr + ><tr + ><td class="src" + ><a id="v:Foa" class="def" + >Foa</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + ></td + ><td class="doc" + ><p + >no argument docs GADT</p + ></td + ></tr + ></table + ></div + ><div class="subs bundled-patterns" + ><p class="caption" + >Bundled Patterns</p + ><table + ><tr + ><td class="src" + ><span class="keyword" + >pattern</span + > <a id="v:Fo" class="def" + >Fo</a + > <span class="fixity" + >infixr 5</span + ><span class="rightedge" + ></span + ></td + ><td class="doc" + ><p + >Info about bundled <code + ><a href="#" title="ConstructorArgs" + >Fo</a + ></code + ></p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + >:: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >an <code + ><a href="#" title="Data.Int" + >Int</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >-> <a href="#" title="Data.String" + >String</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="Data.String" + >String</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >-> <a href="#" title="ConstructorArgs" + >Boo</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="ConstructorArgs" + >Boo</a + ></code + ></p + ></div + ></li + ></ul + ></div + ></td + ></tr + ><tr + ><td class="src" + ><span class="keyword" + >pattern</span + > <a id="v:Fo-39-" class="def" + >Fo'</a + > :: <a href="#" title="ConstructorArgs" + >Boo</a + ></td + ><td class="doc" + ><p + >Bundled and no argument docs</p + ></td + ></tr + ></table + ></div + ></div + ><div class="top" + ><p class="src" + ><span class="keyword" + >pattern</span + > <a id="v:Bo" class="def" + >Bo</a + > <span class="fixity" + >infixr 6</span + ><span class="rightedge" + ></span + > <a href="#" class="selflink" + >#</a + ></p + ><div class="subs arguments" + ><p class="caption" + >Arguments</p + ><table + ><tr + ><td class="src" + >:: <a href="#" title="Data.Int" + >Int</a + ></td + ><td class="doc" + ><p + >an <code + ><a href="#" title="Data.Int" + >Int</a + ></code + ></p + ></td + ></tr + ><tr + ><td class="src" + >-> <a href="#" title="Data.String" + >String</a + ></td + ><td class="doc" + ><p + >a <code + ><a href="#" title="Data.String" + >String</a + ></code + ></p + ></td + ></tr + ><tr + ><td class="src" + >-> <a href="#" title="ConstructorArgs" + >Boo</a + ></td + ><td class="doc" + ><p + >a <code + ><a href="#" title="ConstructorArgs" + >Boo</a + ></code + > pattern</p + ></td + ></tr + ></table + ></div + ><div class="doc" + ><p + >Info about not-bundled <code + ><a href="#" title="ConstructorArgs" + >Bo</a + ></code + ></p + ></div + ></div + ><div class="top" + ><p class="src" + ><span class="keyword" + >pattern</span + > <a id="v:Bo-39-" class="def" + >Bo'</a + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="ConstructorArgs" + >Boo</a + > <a href="#" class="selflink" + >#</a + ></p + ><div class="doc" + ><p + >Not bunded and no argument docs</p + ></div + ></div + ></div + ></div + ><div id="footer" + ></div + ></body + ></html +>
\ No newline at end of file diff --git a/html-test/ref/ConstructorPatternExport.html b/html-test/ref/ConstructorPatternExport.html index 548cd729..6f091de7 100644 --- a/html-test/ref/ConstructorPatternExport.html +++ b/html-test/ref/ConstructorPatternExport.html @@ -47,7 +47,9 @@ >pattern</span > <a id="v:FooCons" class="def" >FooCons</a - > :: String -> a -> Foo a <a href="#" class="selflink" + > :: <a href="#" title="Data.String" + >String</a + > -> a -> Foo a <a href="#" class="selflink" >#</a ></p ></div @@ -57,7 +59,11 @@ >pattern</span > <a id="v:MyRecCons" class="def" >MyRecCons</a - > :: Bool -> Int -> MyRec <a href="#" class="selflink" + > :: <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Data.Int" + >Int</a + > -> MyRec <a href="#" class="selflink" >#</a ></p ></div @@ -67,7 +73,9 @@ >pattern</span > <a id="v::-43-" class="def" >(:+)</a - > :: String -> a -> MyInfix a <a href="#" class="selflink" + > :: <a href="#" title="Data.String" + >String</a + > -> a -> MyInfix a <a href="#" class="selflink" >#</a ></p ></div @@ -77,7 +85,9 @@ >pattern</span > <a id="v:BlubCons" class="def" >BlubCons</a - > :: () => Show b => b -> Blub <a href="#" class="selflink" + > :: () => <a href="#" title="Text.Show" + >Show</a + > b => b -> Blub <a href="#" class="selflink" >#</a ></p ></div @@ -87,7 +97,13 @@ >pattern</span > <a id="v:MyGADTCons" class="def" >MyGADTCons</a - > :: a -> Int -> MyGADT (Maybe String) <a href="#" class="selflink" + > :: a -> <a href="#" title="Data.Int" + >Int</a + > -> MyGADT (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.String" + >String</a + >) <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/DeprecatedFunction.html b/html-test/ref/DeprecatedFunction.html index 5682128f..b43526ba 100644 --- a/html-test/ref/DeprecatedFunction.html +++ b/html-test/ref/DeprecatedFunction.html @@ -46,11 +46,15 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >bar</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -61,7 +65,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -81,7 +87,9 @@ ><p class="src" ><a id="v:bar" class="def" >bar</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/DeprecatedFunction2.html b/html-test/ref/DeprecatedFunction2.html index d4e19e7a..db0098b2 100644 --- a/html-test/ref/DeprecatedFunction2.html +++ b/html-test/ref/DeprecatedFunction2.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/DeprecatedFunction3.html b/html-test/ref/DeprecatedFunction3.html index 58cffae8..950c5203 100644 --- a/html-test/ref/DeprecatedFunction3.html +++ b/html-test/ref/DeprecatedFunction3.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/DeprecatedModule.html b/html-test/ref/DeprecatedModule.html index eb92dad9..91150577 100644 --- a/html-test/ref/DeprecatedModule.html +++ b/html-test/ref/DeprecatedModule.html @@ -61,7 +61,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/DeprecatedModule2.html b/html-test/ref/DeprecatedModule2.html index 81f2e024..6688781f 100644 --- a/html-test/ref/DeprecatedModule2.html +++ b/html-test/ref/DeprecatedModule2.html @@ -55,7 +55,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/DeprecatedNewtype.html b/html-test/ref/DeprecatedNewtype.html index 2640cbb5..8158f61d 100644 --- a/html-test/ref/DeprecatedNewtype.html +++ b/html-test/ref/DeprecatedNewtype.html @@ -50,7 +50,9 @@ >SomeNewType</a > = <a href="#" >SomeNewTypeConst</a - > String</li + > <a href="#" title="Data.String" + >String</a + ></li ><li class="src short" ><span class="keyword" >newtype</span @@ -58,7 +60,9 @@ >SomeOtherNewType</a > = <a href="#" >SomeOtherNewTypeConst</a - > String</li + > <a href="#" title="Data.String" + >String</a + ></li ></ul ></details ></div @@ -90,7 +94,9 @@ ><td class="src" ><a id="v:SomeNewTypeConst" class="def" >SomeNewTypeConst</a - > String</td + > <a href="#" title="Data.String" + >String</a + ></td ><td class="doc" ><div class="warning" ><p @@ -126,7 +132,9 @@ ><td class="src" ><a id="v:SomeOtherNewTypeConst" class="def" >SomeOtherNewTypeConst</a - > String</td + > <a href="#" title="Data.String" + >String</a + ></td ><td class="doc" ><div class="warning" ><p diff --git a/html-test/ref/DeprecatedReExport.html b/html-test/ref/DeprecatedReExport.html index 214be4f4..f2bbb766 100644 --- a/html-test/ref/DeprecatedReExport.html +++ b/html-test/ref/DeprecatedReExport.html @@ -72,7 +72,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -85,7 +87,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/DeprecatedRecord.html b/html-test/ref/DeprecatedRecord.html index 5ff532a4..c2de1538 100644 --- a/html-test/ref/DeprecatedRecord.html +++ b/html-test/ref/DeprecatedRecord.html @@ -54,11 +54,15 @@ ><li ><a href="#" >fooName</a - > :: String</li + > :: <a href="#" title="Data.String" + >String</a + ></li ><li ><a href="#" >fooValue</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul >}</li ></ul @@ -102,7 +106,9 @@ ><dfn class="src" ><a id="v:fooName" class="def" >fooName</a - > :: String</dfn + > :: <a href="#" title="Data.String" + >String</a + ></dfn ><div class="doc" ><p >some name</p @@ -112,7 +118,9 @@ ><dfn class="src" ><a id="v:fooValue" class="def" >fooValue</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><div class="warning" ><p diff --git a/html-test/ref/DeprecatedTypeSynonym.html b/html-test/ref/DeprecatedTypeSynonym.html index 25526d72..fcb7f5ce 100644 --- a/html-test/ref/DeprecatedTypeSynonym.html +++ b/html-test/ref/DeprecatedTypeSynonym.html @@ -48,13 +48,17 @@ >type</span > <a href="#" >TypeSyn</a - > = String</li + > = <a href="#" title="Data.String" + >String</a + ></li ><li class="src short" ><span class="keyword" >type</span > <a href="#" >OtherTypeSyn</a - > = String</li + > = <a href="#" title="Data.String" + >String</a + ></li ></ul ></details ></div @@ -67,7 +71,9 @@ >type</span > <a id="t:TypeSyn" class="def" >TypeSyn</a - > = String <a href="#" class="selflink" + > = <a href="#" title="Data.String" + >String</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -85,7 +91,9 @@ >type</span > <a id="t:OtherTypeSyn" class="def" >OtherTypeSyn</a - > = String <a href="#" class="selflink" + > = <a href="#" title="Data.String" + >String</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Examples.html b/html-test/ref/Examples.html index 7eeb5f7c..77a341f0 100644 --- a/html-test/ref/Examples.html +++ b/html-test/ref/Examples.html @@ -46,7 +46,11 @@ ><li class="src short" ><a href="#" >fib</a - > :: Integer -> Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + > -> <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -57,13 +61,19 @@ ><p class="src" ><a id="v:fib" class="def" >fib</a - > :: Integer -> Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > -> <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" ><p >Fibonacci number of given <code - >Integer</code + ><a href="#" title="Prelude" + >Integer</a + ></code >.</p ><p >Examples:</p diff --git a/html-test/ref/FunArgs.html b/html-test/ref/FunArgs.html index ae890105..97c9a3c5 100644 --- a/html-test/ref/FunArgs.html +++ b/html-test/ref/FunArgs.html @@ -54,13 +54,17 @@ ><table ><tr ><td class="src" - >:: Ord a</td + >:: <a href="#" title="Data.Ord" + >Ord</a + > a</td ><td class="doc empty" ></td ></tr ><tr ><td class="src" - >=> Int</td + >=> <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc" ><p >First argument</p @@ -76,7 +80,9 @@ ></tr ><tr ><td class="src" - >-> Bool</td + >-> <a href="#" title="Data.Bool" + >Bool</a + ></td ><td class="doc" ><p >Third argument</p @@ -208,7 +214,9 @@ ><td class="src" >:: <span class="keyword" >forall</span - > (b :: ()). d ~ ()</td + > (b :: ()). d ~ <a href="#" title="GHC.Tuple" + >()</a + ></td ><td class="doc empty" ></td ></tr diff --git a/html-test/ref/GADTRecords.html b/html-test/ref/GADTRecords.html index 1f0c87e8..5f6141db 100644 --- a/html-test/ref/GADTRecords.html +++ b/html-test/ref/GADTRecords.html @@ -60,7 +60,9 @@ ><li ><a href="#" >C2</a - > :: Ord a => [a] -> <a href="#" title="GADTRecords" + > :: <a href="#" title="Data.Ord" + >Ord</a + > a => [a] -> <a href="#" title="GADTRecords" >H1</a > a a</li ><li @@ -68,13 +70,19 @@ >C3</a > :: {..} -> <a href="#" title="GADTRecords" >H1</a - > Int Int</li + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></li ><li ><a href="#" >C4</a > :: {..} -> <a href="#" title="GADTRecords" >H1</a - > Int a</li + > <a href="#" title="Data.Int" + >Int</a + > a</li ></ul ></li ></ul @@ -116,7 +124,9 @@ ><td class="src" ><a id="v:C2" class="def" >C2</a - > :: Ord a => [a] -> <a href="#" title="GADTRecords" + > :: <a href="#" title="Data.Ord" + >Ord</a + > a => [a] -> <a href="#" title="GADTRecords" >H1</a > a a</td ><td class="doc empty" @@ -140,7 +150,9 @@ ><dfn class="src" >:: { <a id="v:field" class="def" >field</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >hello docs</p @@ -150,7 +162,11 @@ ><dfn class="src" >} -> <a href="#" title="GADTRecords" >H1</a - > Int Int</dfn + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc empty" ></div ></li @@ -186,7 +202,9 @@ ><dfn class="src" >} -> <a href="#" title="GADTRecords" >H1</a - > Int a</dfn + > <a href="#" title="Data.Int" + >Int</a + > a</dfn ><div class="doc empty" ></div ></li diff --git a/html-test/ref/GadtConstructorArgs.html b/html-test/ref/GadtConstructorArgs.html new file mode 100644 index 00000000..7497de83 --- /dev/null +++ b/html-test/ref/GadtConstructorArgs.html @@ -0,0 +1,192 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head + ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" + /><title + >GadtConstructorArgs</title + ><link href="#" rel="stylesheet" type="text/css" title="Ocean" + /><link rel="stylesheet" type="text/css" href="#" + /><script src="haddock-bundle.min.js" async="async" type="text/javascript" + ></script + ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" + ></script + ></head + ><body + ><div id="package-header" + ><ul class="links" id="page-menu" + ><li + ><a href="#" + >Contents</a + ></li + ><li + ><a href="#" + >Index</a + ></li + ></ul + ><p class="caption empty" + ></p + ></div + ><div id="content" + ><div id="module-header" + ><table class="info" + ><tr + ><th + >Safe Haskell</th + ><td + >Safe</td + ></tr + ></table + ><p class="caption" + >GadtConstructorArgs</p + ></div + ><div id="interface" + ><h1 + >Documentation</h1 + ><div class="top" + ><p class="src" + ><span class="keyword" + >data</span + > <a id="t:Boo" class="def" + >Boo</a + > <span class="keyword" + >where</span + > <a href="#" class="selflink" + >#</a + ></p + ><div class="subs constructors" + ><p class="caption" + >Constructors</p + ><table + ><tr + ><td class="src" + ><a id="v:Fot" class="def" + >Fot</a + ></td + ><td class="doc empty" + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + >:: { <a id="v:x" class="def" + >x</a + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >an <code + ><a href="#" title="GadtConstructorArgs" + >x</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >, <a id="v:y" class="def" + >y</a + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="GadtConstructorArgs" + >y</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >} -> <a href="#" title="GadtConstructorArgs" + >Boo</a + ></dfn + ><div class="doc empty" + ></div + ></li + ></ul + ></div + ></td + ></tr + ><tr + ><td class="src" + ><a id="v:Fob" class="def" + >Fob</a + ></td + ><td class="doc" + ><p + >Record GADT with docs</p + ></td + ></tr + ><tr + ><td colspan="2" + ><div class="subs fields" + ><p class="caption" + >Fields</p + ><ul + ><li + ><dfn class="src" + >:: { <a id="v:w" class="def" + >w</a + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="GadtConstructorArgs" + >w</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >, <a id="v:z" class="def" + >z</a + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="GadtConstructorArgs" + >z</a + ></code + ></p + ></div + ></li + ><li + ><dfn class="src" + >} -> <a href="#" title="GadtConstructorArgs" + >Boo</a + ></dfn + ><div class="doc" + ><p + >a <code + ><a href="#" title="GadtConstructorArgs" + >Boo</a + ></code + ></p + ></div + ></li + ></ul + ></div + ></td + ></tr + ></table + ></div + ></div + ></div + ></div + ><div id="footer" + ></div + ></body + ></html +>
\ No newline at end of file diff --git a/html-test/ref/Hash.html b/html-test/ref/Hash.html index c4f04f2c..8fd04bb4 100644 --- a/html-test/ref/Hash.html +++ b/html-test/ref/Hash.html @@ -87,23 +87,37 @@ ><li class="src short" ><a href="#" >new</a - > :: (Eq key, <a href="#" title="Hash" + > :: (<a href="#" title="Data.Eq" + >Eq</a + > key, <a href="#" title="Hash" >Hash</a - > key) => Int -> IO (<a href="#" title="Hash" + > key) => <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="System.IO" + >IO</a + > (<a href="#" title="Hash" >HashTable</a > key val)</li ><li class="src short" ><a href="#" >insert</a - > :: (Eq key, <a href="#" title="Hash" + > :: (<a href="#" title="Data.Eq" + >Eq</a + > key, <a href="#" title="Hash" >Hash</a - > key) => key -> val -> IO ()</li + > key) => key -> val -> <a href="#" title="System.IO" + >IO</a + > ()</li ><li class="src short" ><a href="#" >lookup</a > :: <a href="#" title="Hash" >Hash</a - > key => key -> IO (Maybe val)</li + > key => key -> <a href="#" title="System.IO" + >IO</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > val)</li ><li class="src short" ><span class="keyword" >class</span @@ -115,7 +129,9 @@ ><li ><a href="#" >hash</a - > :: a -> Int</li + > :: a -> <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></li ></ul @@ -147,7 +163,9 @@ The type <code >key</code > should be an instance of <code - >Eq</code + ><a href="#" title="Data.Eq" + >Eq</a + ></code >.</p ></div ></div @@ -161,9 +179,15 @@ ><p class="src" ><a id="v:new" class="def" >new</a - > :: (Eq key, <a href="#" title="Hash" + > :: (<a href="#" title="Data.Eq" + >Eq</a + > key, <a href="#" title="Hash" >Hash</a - > key) => Int -> IO (<a href="#" title="Hash" + > key) => <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="System.IO" + >IO</a + > (<a href="#" title="Hash" >HashTable</a > key val) <a href="#" class="selflink" >#</a @@ -177,9 +201,13 @@ ><p class="src" ><a id="v:insert" class="def" >insert</a - > :: (Eq key, <a href="#" title="Hash" + > :: (<a href="#" title="Data.Eq" + >Eq</a + > key, <a href="#" title="Hash" >Hash</a - > key) => key -> val -> IO () <a href="#" class="selflink" + > key) => key -> val -> <a href="#" title="System.IO" + >IO</a + > () <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -193,18 +221,26 @@ >lookup</a > :: <a href="#" title="Hash" >Hash</a - > key => key -> IO (Maybe val) <a href="#" class="selflink" + > key => key -> <a href="#" title="System.IO" + >IO</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > val) <a href="#" class="selflink" >#</a ></p ><div class="doc" ><p >Looks up a key in the hash table, returns <code ><code - >Just</code + ><a href="#" title="GHC.Maybe" + >Just</a + ></code > val</code > if the key was found, or <code - >Nothing</code + ><a href="#" title="GHC.Maybe" + >Nothing</a + ></code > otherwise.</p ></div ></div @@ -235,7 +271,9 @@ ><p class="src" ><a id="v:hash" class="def" >hash</a - > :: a -> Int <a href="#" class="selflink" + > :: a -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -243,7 +281,9 @@ >hashes the value of type <code >a</code > into an <code - >Int</code + ><a href="#" title="Data.Int" + >Int</a + ></code ></p ></div ></div @@ -259,7 +299,9 @@ ></span > <a href="#" title="Hash" >Hash</a - > Float</span + > <a href="#" title="Prelude" + >Float</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -281,7 +323,11 @@ ><p class="src" ><a href="#" >hash</a - > :: Float -> Int <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Float</a + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -295,7 +341,9 @@ ></span > <a href="#" title="Hash" >Hash</a - > Int</span + > <a href="#" title="Data.Int" + >Int</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -317,7 +365,11 @@ ><p class="src" ><a href="#" >hash</a - > :: Int -> Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -357,7 +409,9 @@ ><p class="src" ><a href="#" >hash</a - > :: (a, b) -> Int <a href="#" class="selflink" + > :: (a, b) -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/HiddenInstances.html b/html-test/ref/HiddenInstances.html index eb39dafc..9594d8e1 100644 --- a/html-test/ref/HiddenInstances.html +++ b/html-test/ref/HiddenInstances.html @@ -86,7 +86,9 @@ ></span > <a href="#" title="HiddenInstances" >VisibleClass</a - > Int</span + > <a href="#" title="Data.Int" + >Int</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -164,7 +166,9 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:VisibleData:Num:1" ></span - > Num <a href="#" title="HiddenInstances" + > <a href="#" title="Prelude" + >Num</a + > <a href="#" title="HiddenInstances" >VisibleData</a ></span > <a href="#" class="selflink" @@ -196,6 +200,8 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" @@ -206,6 +212,8 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" @@ -216,6 +224,8 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" @@ -224,6 +234,8 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" @@ -232,6 +244,8 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" @@ -240,12 +254,18 @@ >VisibleData</a > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ><p class="src" ><a href="#" >fromInteger</a - > :: Integer -> <a href="#" title="HiddenInstances" + > :: <a href="#" title="Prelude" + >Integer</a + > -> <a href="#" title="HiddenInstances" >VisibleData</a + > <a href="#" class="selflink" + >#</a ></p ></div ></details diff --git a/html-test/ref/Hyperlinks.html b/html-test/ref/Hyperlinks.html index 58d012a5..f331e741 100644 --- a/html-test/ref/Hyperlinks.html +++ b/html-test/ref/Hyperlinks.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >foo</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Instances.html b/html-test/ref/Instances.html index 40b1045c..a23f9eb9 100644 --- a/html-test/ref/Instances.html +++ b/html-test/ref/Instances.html @@ -102,7 +102,9 @@ >foo</a > :: (a <a href="#" title="Instances" ><~~</a - > Int) -> a0 -> a <a href="#" title="Instances" + > <a href="#" title="Data.Int" + >Int</a + >) -> a0 -> a <a href="#" title="Instances" ><~~</a > a0 <a href="#" class="selflink" >#</a @@ -114,11 +116,15 @@ ><~~</a > (a <a href="#" title="Instances" ><~~</a - > a0)) -> Int -> a <a href="#" title="Instances" + > a0)) -> <a href="#" title="Data.Int" + >Int</a + > -> a <a href="#" title="Instances" ><~~</a > (a <a href="#" title="Instances" ><~~</a - > Int) <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -152,13 +158,19 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: f Int -> a -> f a <a href="#" class="selflink" + > :: f <a href="#" title="Data.Int" + >Int</a + > -> a -> f a <a href="#" class="selflink" >#</a ></p ><p class="src" ><a id="v:foo-39-" class="def" >foo'</a - > :: f (f a) -> Int -> f (f Int) <a href="#" class="selflink" + > :: f (f a) -> <a href="#" title="Data.Int" + >Int</a + > -> f (f <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -196,13 +208,19 @@ ><p class="src" ><a href="#" >foo</a - > :: [Int] -> a -> [a] <a href="#" class="selflink" + > :: [<a href="#" title="Data.Int" + >Int</a + >] -> a -> [a] <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: [[a]] -> Int -> [[Int]] <a href="#" class="selflink" + > :: [[a]] -> <a href="#" title="Data.Int" + >Int</a + > -> [[<a href="#" title="Data.Int" + >Int</a + >]] <a href="#" class="selflink" >#</a ></p ></div @@ -216,7 +234,9 @@ ></span > <a href="#" title="Instances" >Foo</a - > Maybe</span + > <a href="#" title="GHC.Maybe" + >Maybe</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -238,13 +258,31 @@ ><p class="src" ><a href="#" >foo</a - > :: Maybe Int -> a -> Maybe a <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Int" + >Int</a + > -> a -> <a href="#" title="GHC.Maybe" + >Maybe</a + > a <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: Maybe (Maybe a) -> Int -> Maybe (Maybe Int) <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > a) -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -258,7 +296,9 @@ ></span > <a href="#" title="Instances" >Foo</a - > (Either a)</span + > (<a href="#" title="Data.Either" + >Either</a + > a)</span > <a href="#" class="selflink" >#</a ></td @@ -280,13 +320,31 @@ ><p class="src" ><a href="#" >foo</a - > :: Either a Int -> a0 -> Either a a0 <a href="#" class="selflink" + > :: <a href="#" title="Data.Either" + >Either</a + > a <a href="#" title="Data.Int" + >Int</a + > -> a0 -> <a href="#" title="Data.Either" + >Either</a + > a a0 <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: Either a (Either a a0) -> Int -> Either a (Either a Int) <a href="#" class="selflink" + > :: <a href="#" title="Data.Either" + >Either</a + > a (<a href="#" title="Data.Either" + >Either</a + > a a0) -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Either" + >Either</a + > a (<a href="#" title="Data.Either" + >Either</a + > a <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -298,11 +356,15 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:4" ></span - > (Eq a, <a href="#" title="Instances" + > (<a href="#" title="Data.Eq" + >Eq</a + > a, <a href="#" title="Instances" >Foo</a > f) => <a href="#" title="Instances" >Foo</a - > ((,) (f a))</span + > (<a href="#" title="GHC.Tuple" + >(,)</a + > (f a))</span > <a href="#" class="selflink" >#</a ></td @@ -324,13 +386,19 @@ ><p class="src" ><a href="#" >foo</a - > :: (f a, Int) -> a0 -> (f a, a0) <a href="#" class="selflink" + > :: (f a, <a href="#" title="Data.Int" + >Int</a + >) -> a0 -> (f a, a0) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: (f a, (f a, a0)) -> Int -> (f a, (f a, Int)) <a href="#" class="selflink" + > :: (f a, (f a, a0)) -> <a href="#" title="Data.Int" + >Int</a + > -> (f a, (f a, <a href="#" title="Data.Int" + >Int</a + >)) <a href="#" class="selflink" >#</a ></p ></div @@ -370,7 +438,9 @@ >foo</a > :: (a <a href="#" title="Instances" ><~~</a - > Int) -> a0 -> a <a href="#" title="Instances" + > <a href="#" title="Data.Int" + >Int</a + >) -> a0 -> a <a href="#" title="Instances" ><~~</a > a0 <a href="#" class="selflink" >#</a @@ -382,11 +452,15 @@ ><~~</a > (a <a href="#" title="Instances" ><~~</a - > a0)) -> Int -> a <a href="#" title="Instances" + > a0)) -> <a href="#" title="Data.Int" + >Int</a + > -> a <a href="#" title="Instances" ><~~</a > (a <a href="#" title="Instances" ><~~</a - > Int) <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -400,7 +474,9 @@ ></span > <a href="#" title="Instances" >Foo</a - > ((,,) a a)</span + > (<a href="#" title="GHC.Tuple" + >(,,)</a + > a a)</span > <a href="#" class="selflink" >#</a ></td @@ -422,13 +498,19 @@ ><p class="src" ><a href="#" >foo</a - > :: (a, a, Int) -> a0 -> (a, a, a0) <a href="#" class="selflink" + > :: (a, a, <a href="#" title="Data.Int" + >Int</a + >) -> a0 -> (a, a, a0) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: (a, a, (a, a, a0)) -> Int -> (a, a, (a, a, Int)) <a href="#" class="selflink" + > :: (a, a, (a, a, a0)) -> <a href="#" title="Data.Int" + >Int</a + > -> (a, a, (a, a, <a href="#" title="Data.Int" + >Int</a + >)) <a href="#" class="selflink" >#</a ></p ></div @@ -468,7 +550,9 @@ >foo</a > :: <a href="#" title="Instances" >Quux</a - > a b Int -> a0 -> <a href="#" title="Instances" + > a b <a href="#" title="Data.Int" + >Int</a + > -> a0 -> <a href="#" title="Instances" >Quux</a > a b a0 <a href="#" class="selflink" >#</a @@ -480,11 +564,15 @@ >Quux</a > a b (<a href="#" title="Instances" >Quux</a - > a b a0) -> Int -> <a href="#" title="Instances" + > a b a0) -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Instances" >Quux</a > a b (<a href="#" title="Instances" >Quux</a - > a b Int) <a href="#" class="selflink" + > a b <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -498,7 +586,11 @@ ></span > <a href="#" title="Instances" >Foo</a - > ((->) a :: * -> *)</span + > ((->) a :: <a href="#" title="Data.Kind" + >Type</a + > -> <a href="#" title="Data.Kind" + >Type</a + >)</span > <a href="#" class="selflink" >#</a ></td @@ -520,13 +612,19 @@ ><p class="src" ><a href="#" >foo</a - > :: (a -> Int) -> a0 -> a -> a0 <a href="#" class="selflink" + > :: (a -> <a href="#" title="Data.Int" + >Int</a + >) -> a0 -> a -> a0 <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >foo'</a - > :: (a -> (a -> a0)) -> Int -> a -> (a -> Int) <a href="#" class="selflink" + > :: (a -> (a -> a0)) -> <a href="#" title="Data.Int" + >Int</a + > -> a -> (a -> <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -562,7 +660,9 @@ ><p class="src" ><a id="v:bar" class="def" >bar</a - > :: f a -> f Bool -> a <a href="#" class="selflink" + > :: f a -> f <a href="#" title="Data.Bool" + >Bool</a + > -> a <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -596,7 +696,11 @@ ></span > <a href="#" title="Instances" >Bar</a - > Maybe Bool</span + > <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -618,25 +722,71 @@ ><p class="src" ><a href="#" >bar</a - > :: Maybe Bool -> Maybe Bool -> Bool <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar'</a - > :: Maybe (Maybe Bool) -> Maybe (Maybe (Maybe b)) <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + >) -> <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > b)) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar0</a - > :: (Maybe Bool, Maybe Bool) -> (Maybe b, Maybe c) <a href="#" class="selflink" + > :: (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + >, <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + >) -> (<a href="#" title="GHC.Maybe" + >Maybe</a + > b, <a href="#" title="GHC.Maybe" + >Maybe</a + > c) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar1</a - > :: (Maybe Bool, Maybe Bool) -> (Maybe b, Maybe c) <a href="#" class="selflink" + > :: (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + >, <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + >) -> (<a href="#" title="GHC.Maybe" + >Maybe</a + > b, <a href="#" title="GHC.Maybe" + >Maybe</a + > c) <a href="#" class="selflink" >#</a ></p ></div @@ -650,7 +800,9 @@ ></span > <a href="#" title="Instances" >Bar</a - > Maybe [a]</span + > <a href="#" title="GHC.Maybe" + >Maybe</a + > [a]</span > <a href="#" class="selflink" >#</a ></td @@ -672,25 +824,57 @@ ><p class="src" ><a href="#" >bar</a - > :: Maybe [a] -> Maybe Bool -> [a] <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > [a] -> <a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> [a] <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar'</a - > :: Maybe (Maybe [a]) -> Maybe (Maybe (Maybe b)) <a href="#" class="selflink" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > [a]) -> <a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > b)) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar0</a - > :: (Maybe [a], Maybe [a]) -> (Maybe b, Maybe c) <a href="#" class="selflink" + > :: (<a href="#" title="GHC.Maybe" + >Maybe</a + > [a], <a href="#" title="GHC.Maybe" + >Maybe</a + > [a]) -> (<a href="#" title="GHC.Maybe" + >Maybe</a + > b, <a href="#" title="GHC.Maybe" + >Maybe</a + > c) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar1</a - > :: (Maybe [a], Maybe [a]) -> (Maybe b, Maybe c) <a href="#" class="selflink" + > :: (<a href="#" title="GHC.Maybe" + >Maybe</a + > [a], <a href="#" title="GHC.Maybe" + >Maybe</a + > [a]) -> (<a href="#" title="GHC.Maybe" + >Maybe</a + > b, <a href="#" title="GHC.Maybe" + >Maybe</a + > c) <a href="#" class="selflink" >#</a ></p ></div @@ -726,7 +910,9 @@ ><p class="src" ><a href="#" >bar</a - > :: [(a, a)] -> [Bool] -> (a, a) <a href="#" class="selflink" + > :: [(a, a)] -> [<a href="#" title="Data.Bool" + >Bool</a + >] -> (a, a) <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -760,7 +946,9 @@ >Foo</a > f => <a href="#" title="Instances" >Bar</a - > (Either a) (f a)</span + > (<a href="#" title="Data.Either" + >Either</a + > a) (f a)</span > <a href="#" class="selflink" >#</a ></td @@ -782,25 +970,57 @@ ><p class="src" ><a href="#" >bar</a - > :: Either a (f a) -> Either a Bool -> f a <a href="#" class="selflink" + > :: <a href="#" title="Data.Either" + >Either</a + > a (f a) -> <a href="#" title="Data.Either" + >Either</a + > a <a href="#" title="Data.Bool" + >Bool</a + > -> f a <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar'</a - > :: Either a (Either a (f a)) -> Either a (Either a (Either a b)) <a href="#" class="selflink" + > :: <a href="#" title="Data.Either" + >Either</a + > a (<a href="#" title="Data.Either" + >Either</a + > a (f a)) -> <a href="#" title="Data.Either" + >Either</a + > a (<a href="#" title="Data.Either" + >Either</a + > a (<a href="#" title="Data.Either" + >Either</a + > a b)) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar0</a - > :: (Either a (f a), Either a (f a)) -> (Either a b, Either a c) <a href="#" class="selflink" + > :: (<a href="#" title="Data.Either" + >Either</a + > a (f a), <a href="#" title="Data.Either" + >Either</a + > a (f a)) -> (<a href="#" title="Data.Either" + >Either</a + > a b, <a href="#" title="Data.Either" + >Either</a + > a c) <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >bar1</a - > :: (Either a (f a), Either a (f a)) -> (Either a b, Either a c) <a href="#" class="selflink" + > :: (<a href="#" title="Data.Either" + >Either</a + > a (f a), <a href="#" title="Data.Either" + >Either</a + > a (f a)) -> (<a href="#" title="Data.Either" + >Either</a + > a b, <a href="#" title="Data.Either" + >Either</a + > a c) <a href="#" class="selflink" >#</a ></p ></div @@ -814,9 +1034,13 @@ ></span > <a href="#" title="Instances" >Foo</a - > ((,,) a b) => <a href="#" title="Instances" + > (<a href="#" title="GHC.Tuple" + >(,,)</a + > a b) => <a href="#" title="Instances" >Bar</a - > ((,,) a b) (a, b, a)</span + > (<a href="#" title="GHC.Tuple" + >(,,)</a + > a b) (a, b, a)</span > <a href="#" class="selflink" >#</a ></td @@ -838,7 +1062,9 @@ ><p class="src" ><a href="#" >bar</a - > :: (a, b, (a, b, a)) -> (a, b, Bool) -> (a, b, a) <a href="#" class="selflink" + > :: (a, b, (a, b, a)) -> (a, b, <a href="#" title="Data.Bool" + >Bool</a + >) -> (a, b, a) <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -902,7 +1128,9 @@ >Quux</a > a b c) -> <a href="#" title="Instances" >Quux</a - > a c Bool -> <a href="#" title="Instances" + > a c <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Instances" >Quux</a > a b c <a href="#" class="selflink" >#</a @@ -1432,7 +1660,9 @@ >foo</a > :: <a href="#" title="Instances" >Quux</a - > a b Int -> a0 -> <a href="#" title="Instances" + > a b <a href="#" title="Data.Int" + >Int</a + > -> a0 -> <a href="#" title="Instances" >Quux</a > a b a0 <a href="#" class="selflink" >#</a @@ -1444,11 +1674,15 @@ >Quux</a > a b (<a href="#" title="Instances" >Quux</a - > a b a0) -> Int -> <a href="#" title="Instances" + > a b a0) -> <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Instances" >Quux</a > a b (<a href="#" title="Instances" >Quux</a - > a b Int) <a href="#" class="selflink" + > a b <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -1494,7 +1728,9 @@ >Quux</a > a b c) -> <a href="#" title="Instances" >Quux</a - > a c Bool -> <a href="#" title="Instances" + > a c <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Instances" >Quux</a > a b c <a href="#" class="selflink" >#</a @@ -1642,7 +1878,9 @@ >data</span > <a href="#" title="Instances" >Thud</a - > Int (<a href="#" title="Instances" + > <a href="#" title="Data.Int" + >Int</a + > (<a href="#" title="Instances" >Quux</a > a [a] c)</span > <a href="#" class="selflink" @@ -1665,7 +1903,9 @@ >data</span > <a href="#" title="Instances" >Thud</a - > Int (<a href="#" title="Instances" + > <a href="#" title="Data.Int" + >Int</a + > (<a href="#" title="Instances" >Quux</a > a [a] c) <ul class="inst" ><li class="inst" @@ -1675,7 +1915,11 @@ ><li class="inst" >| <a id="v:Thuuud" class="def" >Thuuud</a - > Int Int</li + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></div ></details @@ -1746,7 +1990,11 @@ ></span > <a href="#" title="Instances" >Norf</a - > Int Bool</span + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Bool" + >Bool</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -1770,7 +2018,13 @@ >type</span > <a href="#" title="Instances" >Plugh</a - > Int c Bool :: * <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + > c <a href="#" title="Data.Bool" + >Bool</a + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -1778,7 +2032,11 @@ >data</span > <a href="#" title="Instances" >Thud</a - > Int c :: * <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + > c :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1790,7 +2048,17 @@ >norf</a > :: <a href="#" title="Instances" >Plugh</a - > Int c Bool -> Int -> (Int -> c) -> Bool <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + > c <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Data.Int" + >Int</a + > -> (<a href="#" title="Data.Int" + >Int</a + > -> c) -> <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1828,7 +2096,9 @@ >type</span > <a href="#" title="Instances" >Plugh</a - > [a] c [b] :: * <a href="#" class="selflink" + > [a] c [b] :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -1836,7 +2106,9 @@ >data</span > <a href="#" title="Instances" >Thud</a - > [a] c :: * <a href="#" class="selflink" + > [a] c :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/Math.html b/html-test/ref/Math.html index ebdf6385..71079bdd 100644 --- a/html-test/ref/Math.html +++ b/html-test/ref/Math.html @@ -62,7 +62,9 @@ ><li class="src short" ><a href="#" >f</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -73,7 +75,9 @@ ><p class="src" ><a id="v:f" class="def" >f</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/ModuleWithWarning.html b/html-test/ref/ModuleWithWarning.html index c29b20d9..7a045575 100644 --- a/html-test/ref/ModuleWithWarning.html +++ b/html-test/ref/ModuleWithWarning.html @@ -61,7 +61,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/NoLayout.html b/html-test/ref/NoLayout.html index 1f908ba3..a92d1a34 100644 --- a/html-test/ref/NoLayout.html +++ b/html-test/ref/NoLayout.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >g</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:g" class="def" >g</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/OrphanInstances.html b/html-test/ref/OrphanInstances.html index a70c9640..16ac16d6 100644 --- a/html-test/ref/OrphanInstances.html +++ b/html-test/ref/OrphanInstances.html @@ -86,7 +86,9 @@ >aClass</a > :: <a href="#" title="OrphanInstancesType" >AType</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/OrphanInstancesClass.html b/html-test/ref/OrphanInstancesClass.html index c59c43dd..81651e18 100644 --- a/html-test/ref/OrphanInstancesClass.html +++ b/html-test/ref/OrphanInstancesClass.html @@ -58,7 +58,9 @@ ><p class="src" ><a id="v:aClass" class="def" >aClass</a - > :: a -> Int <a href="#" class="selflink" + > :: a -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -102,7 +104,9 @@ >aClass</a > :: <a href="#" title="OrphanInstancesType" >AType</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/OrphanInstancesType.html b/html-test/ref/OrphanInstancesType.html index 2714bb1f..ddb85534 100644 --- a/html-test/ref/OrphanInstancesType.html +++ b/html-test/ref/OrphanInstancesType.html @@ -58,7 +58,9 @@ ><td class="src" ><a id="v:AType" class="def" >AType</a - > Int</td + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc empty" ></td ></tr @@ -104,7 +106,9 @@ >aClass</a > :: <a href="#" title="OrphanInstancesType" >AType</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/PatternSyns.html b/html-test/ref/PatternSyns.html index fce20f96..19c1fecf 100644 --- a/html-test/ref/PatternSyns.html +++ b/html-test/ref/PatternSyns.html @@ -100,7 +100,9 @@ >data</span > <a href="#" >BlubType</a - > = Show x => <a href="#" + > = <a href="#" title="Text.Show" + >Show</a + > x => <a href="#" >BlubCtor</a > x</li ><li class="src short" @@ -110,7 +112,9 @@ >Blub</a > :: () => <span class="keyword" >forall</span - > x. Show x => x -> <a href="#" title="PatternSyns" + > x. <a href="#" title="Text.Show" + >Show</a + > x => x -> <a href="#" title="PatternSyns" >BlubType</a ></li ><li class="src short" @@ -136,7 +140,9 @@ >pattern</span > <a href="#" >PatWithExplicitSig</a - > :: Eq somex => somex -> <a href="#" title="PatternSyns" + > :: <a href="#" title="Data.Eq" + >Eq</a + > somex => somex -> <a href="#" title="PatternSyns" >FooType</a > somex</li ></ul @@ -264,7 +270,9 @@ ><table ><tr ><td class="src" - >Show x => <a id="v:BlubCtor" class="def" + ><a href="#" title="Text.Show" + >Show</a + > x => <a id="v:BlubCtor" class="def" >BlubCtor</a > x</td ><td class="doc empty" @@ -281,7 +289,9 @@ >Blub</a > :: () => <span class="keyword" >forall</span - > x. Show x => x -> <a href="#" title="PatternSyns" + > x. <a href="#" title="Text.Show" + >Show</a + > x => x -> <a href="#" title="PatternSyns" >BlubType</a > <a href="#" class="selflink" >#</a @@ -355,7 +365,9 @@ >pattern</span > <a id="v:PatWithExplicitSig" class="def" >PatWithExplicitSig</a - > :: Eq somex => somex -> <a href="#" title="PatternSyns" + > :: <a href="#" title="Data.Eq" + >Eq</a + > somex => somex -> <a href="#" title="PatternSyns" >FooType</a > somex <a href="#" class="selflink" >#</a diff --git a/html-test/ref/PromotedTypes.html b/html-test/ref/PromotedTypes.html index 46a70845..712dde5c 100644 --- a/html-test/ref/PromotedTypes.html +++ b/html-test/ref/PromotedTypes.html @@ -104,7 +104,9 @@ ><td class="src" ><a id="v:Cons" class="def" >Cons</a - > :: Maybe h -> <a href="#" title="PromotedTypes" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > h -> <a href="#" title="PromotedTypes" >Pattern</a > t -> <a href="#" title="PromotedTypes" >Pattern</a @@ -148,7 +150,9 @@ ><td class="src" ><a id="v:RevCons" class="def" >RevCons</a - > :: Maybe h -> <a href="#" title="PromotedTypes" + > :: <a href="#" title="GHC.Maybe" + >Maybe</a + > h -> <a href="#" title="PromotedTypes" >RevPattern</a > t -> <a href="#" title="PromotedTypes" >RevPattern</a diff --git a/html-test/ref/Properties.html b/html-test/ref/Properties.html index 9299486c..daabe6c4 100644 --- a/html-test/ref/Properties.html +++ b/html-test/ref/Properties.html @@ -46,7 +46,11 @@ ><li class="src short" ><a href="#" >fib</a - > :: Integer -> Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + > -> <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -57,13 +61,19 @@ ><p class="src" ><a id="v:fib" class="def" >fib</a - > :: Integer -> Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > -> <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" ><p >Fibonacci number of given <code - >Integer</code + ><a href="#" title="Prelude" + >Integer</a + ></code >.</p ><pre >fib n <= fib (n + 1)</pre diff --git a/html-test/ref/QuantifiedConstraints.html b/html-test/ref/QuantifiedConstraints.html new file mode 100644 index 00000000..fa2c18ec --- /dev/null +++ b/html-test/ref/QuantifiedConstraints.html @@ -0,0 +1,100 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head + ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" + /><title + >QuantifiedConstraints</title + ><link href="#" rel="stylesheet" type="text/css" title="Ocean" + /><link rel="stylesheet" type="text/css" href="#" + /><script src="haddock-bundle.min.js" async="async" type="text/javascript" + ></script + ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" + ></script + ></head + ><body + ><div id="package-header" + ><ul class="links" id="page-menu" + ><li + ><a href="#" + >Contents</a + ></li + ><li + ><a href="#" + >Index</a + ></li + ></ul + ><p class="caption empty" + ></p + ></div + ><div id="content" + ><div id="module-header" + ><table class="info" + ><tr + ><th + >Safe Haskell</th + ><td + >Safe</td + ></tr + ></table + ><p class="caption" + >QuantifiedConstraints</p + ></div + ><div id="interface" + ><h1 + >Documentation</h1 + ><div class="top" + ><p class="src" + ><span class="keyword" + >class</span + > <a id="t:Foo" class="def" + >Foo</a + > a <span class="keyword" + >where</span + > <a href="#" class="selflink" + >#</a + ></p + ><div class="subs methods" + ><p class="caption" + >Methods</p + ><p class="src" + ><a id="v:fooed" class="def" + >fooed</a + > :: a <a href="#" class="selflink" + >#</a + ></p + ></div + ></div + ><div class="top" + ><p class="src" + ><a id="v:needsParensAroundContext" class="def" + >needsParensAroundContext</a + > :: (<span class="keyword" + >forall</span + > x. <a href="#" title="QuantifiedConstraints" + >Foo</a + > (f x)) => f <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" + >#</a + ></p + ></div + ><div class="top" + ><p class="src" + ><a id="v:needsNoParensAroundContext" class="def" + >needsNoParensAroundContext</a + > :: <a href="#" title="QuantifiedConstraints" + >Foo</a + > (f <a href="#" title="Data.Int" + >Int</a + >) => f <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" + >#</a + ></p + ></div + ></div + ></div + ><div id="footer" + ></div + ></body + ></html +>
\ No newline at end of file diff --git a/html-test/ref/QuasiExpr.html b/html-test/ref/QuasiExpr.html index 42b21f70..dfded323 100644 --- a/html-test/ref/QuasiExpr.html +++ b/html-test/ref/QuasiExpr.html @@ -58,7 +58,9 @@ ><td class="src" ><a id="v:IntExpr" class="def" >IntExpr</a - > Integer</td + > <a href="#" title="Prelude" + >Integer</a + ></td ><td class="doc empty" ></td ></tr @@ -66,7 +68,9 @@ ><td class="src" ><a id="v:AntiIntExpr" class="def" >AntiIntExpr</a - > String</td + > <a href="#" title="Data.String" + >String</a + ></td ><td class="doc empty" ></td ></tr @@ -88,7 +92,9 @@ ><td class="src" ><a id="v:AntiExpr" class="def" >AntiExpr</a - > String</td + > <a href="#" title="Data.String" + >String</a + ></td ><td class="doc empty" ></td ></tr @@ -104,7 +110,9 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Expr:Show:1" ></span - > Show <a href="#" title="QuasiExpr" + > <a href="#" title="Text.Show" + >Show</a + > <a href="#" title="QuasiExpr" >Expr</a ></span > <a href="#" class="selflink" @@ -128,21 +136,35 @@ ><p class="src" ><a href="#" >showsPrec</a - > :: Int -> <a href="#" title="QuasiExpr" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="QuasiExpr" >Expr</a - > -> ShowS</p + > -> <a href="#" title="Text.Show" + >ShowS</a + > <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >show</a > :: <a href="#" title="QuasiExpr" >Expr</a - > -> String</p + > -> <a href="#" title="Data.String" + >String</a + > <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >showList</a > :: [<a href="#" title="QuasiExpr" >Expr</a - >] -> ShowS</p + >] -> <a href="#" title="Text.Show" + >ShowS</a + > <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -208,7 +230,9 @@ ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:BinOp:Show:1" ></span - > Show <a href="#" title="QuasiExpr" + > <a href="#" title="Text.Show" + >Show</a + > <a href="#" title="QuasiExpr" >BinOp</a ></span > <a href="#" class="selflink" @@ -232,21 +256,35 @@ ><p class="src" ><a href="#" >showsPrec</a - > :: Int -> <a href="#" title="QuasiExpr" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="QuasiExpr" >BinOp</a - > -> ShowS</p + > -> <a href="#" title="Text.Show" + >ShowS</a + > <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >show</a > :: <a href="#" title="QuasiExpr" >BinOp</a - > -> String</p + > -> <a href="#" title="Data.String" + >String</a + > <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >showList</a > :: [<a href="#" title="QuasiExpr" >BinOp</a - >] -> ShowS</p + >] -> <a href="#" title="Text.Show" + >ShowS</a + > <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -261,7 +299,9 @@ >eval</a > :: <a href="#" title="QuasiExpr" >Expr</a - > -> Integer <a href="#" class="selflink" + > -> <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -269,7 +309,9 @@ ><p class="src" ><a id="v:expr" class="def" >expr</a - > :: QuasiQuoter <a href="#" class="selflink" + > :: <a href="#" title="Language.Haskell.TH.Quote" + >QuasiQuoter</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -277,7 +319,13 @@ ><p class="src" ><a id="v:parseExprExp" class="def" >parseExprExp</a - > :: String -> Q Exp <a href="#" class="selflink" + > :: <a href="#" title="Data.String" + >String</a + > -> <a href="#" title="Language.Haskell.TH.Syntax" + >Q</a + > <a href="#" title="Language.Haskell.TH.Syntax" + >Exp</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/QuasiQuote.html b/html-test/ref/QuasiQuote.html index e9451d8a..c73250b8 100644 --- a/html-test/ref/QuasiQuote.html +++ b/html-test/ref/QuasiQuote.html @@ -45,7 +45,9 @@ ><p class="src" ><a id="v:val" class="def" >val</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/SpuriousSuperclassConstraints.html b/html-test/ref/SpuriousSuperclassConstraints.html index 00cea04a..47dfd6cd 100644 --- a/html-test/ref/SpuriousSuperclassConstraints.html +++ b/html-test/ref/SpuriousSuperclassConstraints.html @@ -86,7 +86,9 @@ Fix spurious superclass constraints bug.</pre ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SomeType:Functor:1" ></span - > Functor (<a href="#" title="SpuriousSuperclassConstraints" + > <a href="#" title="Data.Functor" + >Functor</a + > (<a href="#" title="SpuriousSuperclassConstraints" >SomeType</a > f)</span > <a href="#" class="selflink" @@ -114,7 +116,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f a -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f b</p + > f b <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<$)</a @@ -122,7 +126,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f b -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f a</p + > f a <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td @@ -132,7 +138,11 @@ Fix spurious superclass constraints bug.</pre ><span class="inst-left" ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SomeType:Applicative:2" ></span - > Applicative f => Applicative (<a href="#" title="SpuriousSuperclassConstraints" + > <a href="#" title="Control.Applicative" + >Applicative</a + > f => <a href="#" title="Control.Applicative" + >Applicative</a + > (<a href="#" title="SpuriousSuperclassConstraints" >SomeType</a > f)</span > <a href="#" class="selflink" @@ -158,7 +168,9 @@ Fix spurious superclass constraints bug.</pre >pure</a > :: a -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f a</p + > f a <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<*>)</a @@ -168,7 +180,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f a -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f b</p + > f b <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >liftA2</a @@ -178,7 +192,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f b -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f c</p + > f c <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(*>)</a @@ -188,7 +204,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f b -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f b</p + > f b <a href="#" class="selflink" + >#</a + ></p ><p class="src" ><a href="#" >(<*)</a @@ -198,7 +216,9 @@ Fix spurious superclass constraints bug.</pre >SomeType</a > f b -> <a href="#" title="SpuriousSuperclassConstraints" >SomeType</a - > f a</p + > f a <a href="#" class="selflink" + >#</a + ></p ></div ></details ></td diff --git a/html-test/ref/TH.html b/html-test/ref/TH.html index 403abe62..a35204ff 100644 --- a/html-test/ref/TH.html +++ b/html-test/ref/TH.html @@ -45,7 +45,11 @@ ><p class="src" ><a id="v:decl" class="def" >decl</a - > :: Q [Dec] <a href="#" class="selflink" + > :: <a href="#" title="Language.Haskell.TH.Syntax" + >Q</a + > [<a href="#" title="Language.Haskell.TH.Syntax" + >Dec</a + >] <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/ref/Test.html b/html-test/ref/Test.html index d4c2417c..ce180a19 100644 --- a/html-test/ref/Test.html +++ b/html-test/ref/Test.html @@ -165,7 +165,13 @@ ><li >= <a href="#" >A</a - > Int (Maybe Float)</li + > <a href="#" title="Data.Int" + >Int</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Prelude" + >Float</a + >)</li ><li >| <a href="#" >B</a @@ -173,7 +179,11 @@ >T</a > a b, <a href="#" title="Test" >T</a - > Int Float)</li + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Prelude" + >Float</a + >)</li ></ul ></li ><li class="src short" @@ -347,7 +357,9 @@ ><li ><a href="#" >p</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li ><a href="#" >q</a @@ -359,7 +371,9 @@ >r</a >, <a href="#" >s</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul > }</li ><li @@ -371,11 +385,23 @@ >t</a > :: T1 -> <a href="#" title="Test" >T2</a - > Int Int -> <a href="#" title="Test" + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Test" >T3</a - > Bool Bool -> <a href="#" title="Test" + > <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Test" >T4</a - > Float Float -> <a href="#" title="Test" + > <a href="#" title="Prelude" + >Float</a + > <a href="#" title="Prelude" + >Float</a + > -> <a href="#" title="Test" >T5</a > () ()</li ><li @@ -383,7 +409,9 @@ >u</a >, <a href="#" >v</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul > }</li ></ul @@ -399,15 +427,21 @@ ><li ><a href="#" >s1</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li ><a href="#" >s2</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li ><a href="#" >s3</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul >}</li ><li class="src short" @@ -415,7 +449,9 @@ >p</a > :: <a href="#" title="Test" >R</a - > -> Int</li + > -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >q</a @@ -429,7 +465,9 @@ >u</a > :: <a href="#" title="Test" >R</a - > -> Int</li + > -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><span class="keyword" >class</span @@ -443,7 +481,9 @@ ><li ><a href="#" >a</a - > :: IO a</li + > :: <a href="#" title="System.IO" + >IO</a + > a</li ><li ><a href="#" >b</a @@ -495,21 +535,33 @@ >a</a > :: <a href="#" title="Test" >C</a - > a => IO a</li + > a => <a href="#" title="System.IO" + >IO</a + > a</li ><li class="src short" ><a href="#" >f</a > :: <a href="#" title="Test" >C</a - > a => a -> Int</li + > a => a -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >g</a - > :: Int -> IO CInt</li + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="System.IO" + >IO</a + > CInt</li ><li class="src short" ><a href="#" >hidden</a - > :: Int -> Int</li + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" >module <a href="#" >Visible</a @@ -551,17 +603,39 @@ >T</a > () () -> <a href="#" title="Test" >T2</a - > Int Int -> (<a href="#" title="Test" + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + > -> (<a href="#" title="Test" >T3</a - > Bool Bool -> <a href="#" title="Test" + > <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Test" >T4</a - > Float Float) -> <a href="#" title="Test" + > <a href="#" title="Prelude" + >Float</a + > <a href="#" title="Prelude" + >Float</a + >) -> <a href="#" title="Test" >T5</a - > () () -> IO ()</li + > () () -> <a href="#" title="System.IO" + >IO</a + > ()</li ><li class="src short" ><a href="#" >l</a - > :: (Int, Int, Float) -> Int</li + > :: (<a href="#" title="Data.Int" + >Int</a + >, <a href="#" title="Data.Int" + >Int</a + >, <a href="#" title="Prelude" + >Float</a + >) -> <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >m</a @@ -569,19 +643,33 @@ >R</a > -> <a href="#" title="Test" >N1</a - > () -> IO Int</li + > () -> <a href="#" title="System.IO" + >IO</a + > <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >o</a - > :: Float -> IO Float</li + > :: <a href="#" title="Prelude" + >Float</a + > -> <a href="#" title="System.IO" + >IO</a + > <a href="#" title="Prelude" + >Float</a + ></li ><li class="src short" ><a href="#" >f'</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >withType</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ><li class="src short" ><a href="#" >withoutType</a @@ -622,7 +710,13 @@ ><td class="src" ><a id="v:A" class="def" >A</a - > Int (Maybe Float)</td + > <a href="#" title="Data.Int" + >Int</a + > (<a href="#" title="GHC.Maybe" + >Maybe</a + > <a href="#" title="Prelude" + >Float</a + >)</td ><td class="doc" ><p >This comment describes the <code @@ -640,7 +734,11 @@ >T</a > a b, <a href="#" title="Test" >T</a - > Int Float)</td + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Prelude" + >Float</a + >)</td ><td class="doc" ><p >This comment describes the <code @@ -1188,7 +1286,9 @@ ><dfn class="src" ><a id="v:p" class="def" >p</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >This comment applies to the <code @@ -1220,7 +1320,9 @@ >r</a >, <a id="v:s" class="def" >s</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >This comment applies to both <code @@ -1264,11 +1366,23 @@ >t</a > :: T1 -> <a href="#" title="Test" >T2</a - > Int Int -> <a href="#" title="Test" + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Test" >T3</a - > Bool Bool -> <a href="#" title="Test" + > <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Test" >T4</a - > Float Float -> <a href="#" title="Test" + > <a href="#" title="Prelude" + >Float</a + > <a href="#" title="Prelude" + >Float</a + > -> <a href="#" title="Test" >T5</a > () ()</dfn ><div class="doc empty" @@ -1280,7 +1394,9 @@ >u</a >, <a id="v:v" class="def" >v</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc empty" ></div ></li @@ -1332,7 +1448,9 @@ ><dfn class="src" ><a id="v:s1" class="def" >s1</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >The <code @@ -1346,7 +1464,9 @@ ><dfn class="src" ><a id="v:s2" class="def" >s2</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >The <code @@ -1360,7 +1480,9 @@ ><dfn class="src" ><a id="v:s3" class="def" >s3</a - > :: Int</dfn + > :: <a href="#" title="Data.Int" + >Int</a + ></dfn ><div class="doc" ><p >The <code @@ -1387,7 +1509,9 @@ >p</a > :: <a href="#" title="Test" >R</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -1425,7 +1549,9 @@ >u</a > :: <a href="#" title="Test" >R</a - > -> Int <a href="#" class="selflink" + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1462,7 +1588,9 @@ ><p class="src" ><a id="v:a" class="def" >a</a - > :: IO a <a href="#" class="selflink" + > :: <a href="#" title="System.IO" + >IO</a + > a <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -1534,7 +1662,9 @@ ></span > <a href="#" title="Test" >D</a - > Float</span + > <a href="#" title="Prelude" + >Float</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -1558,13 +1688,19 @@ >d</a > :: <a href="#" title="Test" >T</a - > Float b <a href="#" class="selflink" + > <a href="#" title="Prelude" + >Float</a + > b <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >e</a - > :: (Float, Float) <a href="#" class="selflink" + > :: (<a href="#" title="Prelude" + >Float</a + >, <a href="#" title="Prelude" + >Float</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -1578,7 +1714,9 @@ ></span > <a href="#" title="Test" >D</a - > Int</span + > <a href="#" title="Data.Int" + >Int</a + ></span > <a href="#" class="selflink" >#</a ></td @@ -1602,13 +1740,19 @@ >d</a > :: <a href="#" title="Test" >T</a - > Int b <a href="#" class="selflink" + > <a href="#" title="Data.Int" + >Int</a + > b <a href="#" class="selflink" >#</a ></p ><p class="src" ><a href="#" >e</a - > :: (Int, Int) <a href="#" class="selflink" + > :: (<a href="#" title="Data.Int" + >Int</a + >, <a href="#" title="Data.Int" + >Int</a + >) <a href="#" class="selflink" >#</a ></p ></div @@ -1671,7 +1815,9 @@ >a</a > :: <a href="#" title="Test" >C</a - > a => IO a <a href="#" class="selflink" + > a => <a href="#" title="System.IO" + >IO</a + > a <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -1693,7 +1839,9 @@ >f</a > :: <a href="#" title="Test" >C</a - > a => a -> Int <a href="#" class="selflink" + > a => a -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -1753,7 +1901,11 @@ using double quotes: <a href="#" ><p class="src" ><a id="v:g" class="def" >g</a - > :: Int -> IO CInt <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="System.IO" + >IO</a + > CInt <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -1864,7 +2016,11 @@ is at the beginning of the line).</pre ><p class="src" ><a id="v:hidden" class="def" >hidden</a - > :: Int -> Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1977,7 +2133,11 @@ is at the beginning of the line).</pre ><td class="src" >-> <a href="#" title="Test" >T2</a - > Int Int</td + > <a href="#" title="Data.Int" + >Int</a + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc" ><p >This argument has type 'T2 Int Int'</p @@ -1987,9 +2147,17 @@ is at the beginning of the line).</pre ><td class="src" >-> (<a href="#" title="Test" >T3</a - > Bool Bool -> <a href="#" title="Test" + > <a href="#" title="Data.Bool" + >Bool</a + > <a href="#" title="Data.Bool" + >Bool</a + > -> <a href="#" title="Test" >T4</a - > Float Float)</td + > <a href="#" title="Prelude" + >Float</a + > <a href="#" title="Prelude" + >Float</a + >)</td ><td class="doc" ><p >This argument has type <code @@ -2011,7 +2179,9 @@ is at the beginning of the line).</pre ></tr ><tr ><td class="src" - >-> IO ()</td + >-> <a href="#" title="System.IO" + >IO</a + > ()</td ><td class="doc" ><p >This is the result type</p @@ -2037,7 +2207,13 @@ is at the beginning of the line).</pre ><table ><tr ><td class="src" - >:: (Int, Int, Float)</td + >:: (<a href="#" title="Data.Int" + >Int</a + >, <a href="#" title="Data.Int" + >Int</a + >, <a href="#" title="Prelude" + >Float</a + >)</td ><td class="doc" ><p >takes a triple</p @@ -2045,11 +2221,15 @@ is at the beginning of the line).</pre ></tr ><tr ><td class="src" - >-> Int</td + >-> <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc" ><p >returns an <code - >Int</code + ><a href="#" title="Data.Int" + >Int</a + ></code ></p ></td ></tr @@ -2087,7 +2267,11 @@ is at the beginning of the line).</pre ></tr ><tr ><td class="src" - >-> IO Int</td + >-> <a href="#" title="System.IO" + >IO</a + > <a href="#" title="Data.Int" + >Int</a + ></td ><td class="doc" ><p >and the return value</p @@ -2113,7 +2297,9 @@ is at the beginning of the line).</pre ><table ><tr ><td class="src" - >:: Float</td + >:: <a href="#" title="Prelude" + >Float</a + ></td ><td class="doc" ><p >The input float</p @@ -2121,7 +2307,11 @@ is at the beginning of the line).</pre ></tr ><tr ><td class="src" - >-> IO Float</td + >-> <a href="#" title="System.IO" + >IO</a + > <a href="#" title="Prelude" + >Float</a + ></td ><td class="doc" ><p >The output float</p @@ -2154,7 +2344,9 @@ is at the beginning of the line).</pre ><p class="src" ><a id="v:f-39-" class="def" >f'</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -2171,7 +2363,9 @@ is at the beginning of the line).</pre ><p class="src" ><a id="v:withType" class="def" >withType</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Threaded.html b/html-test/ref/Threaded.html index 8728d4cd..e52ca96b 100644 --- a/html-test/ref/Threaded.html +++ b/html-test/ref/Threaded.html @@ -56,7 +56,9 @@ ><li class="src short" ><a href="#" >f</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -67,7 +69,9 @@ ><p class="src" ><a id="v:f" class="def" >f</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Threaded_TH.html b/html-test/ref/Threaded_TH.html index 7f80b127..14ebe8a9 100644 --- a/html-test/ref/Threaded_TH.html +++ b/html-test/ref/Threaded_TH.html @@ -57,7 +57,11 @@ ><li class="src short" ><a href="#" >forkTH</a - > :: Q Exp</li + > :: <a href="#" title="Language.Haskell.TH.Syntax" + >Q</a + > <a href="#" title="Language.Haskell.TH.Syntax" + >Exp</a + ></li ></ul ></details ></div @@ -68,7 +72,11 @@ ><p class="src" ><a id="v:forkTH" class="def" >forkTH</a - > :: Q Exp <a href="#" class="selflink" + > :: <a href="#" title="Language.Haskell.TH.Syntax" + >Q</a + > <a href="#" title="Language.Haskell.TH.Syntax" + >Exp</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Ticket112.html b/html-test/ref/Ticket112.html index a2c4ca1b..00258deb 100644 --- a/html-test/ref/Ticket112.html +++ b/html-test/ref/Ticket112.html @@ -63,7 +63,9 @@ ><div class="doc" ><p >...given a raw <code - >Addr#</code + ><a href="#" title="GHC.Exts" + >Addr#</a + ></code > to the string, and the length of the string.</p ></div ></div diff --git a/html-test/ref/Ticket75.html b/html-test/ref/Ticket75.html index 683a7184..70919c1b 100644 --- a/html-test/ref/Ticket75.html +++ b/html-test/ref/Ticket75.html @@ -54,7 +54,9 @@ ><li class="src short" ><a href="#" >f</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -89,7 +91,9 @@ ><p class="src" ><a id="v:f" class="def" >f</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/TitledPicture.html b/html-test/ref/TitledPicture.html index 1e6f50e0..eb6c12f4 100644 --- a/html-test/ref/TitledPicture.html +++ b/html-test/ref/TitledPicture.html @@ -46,11 +46,15 @@ ><li class="src short" ><a href="#" >foo</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ><li class="src short" ><a href="#" >bar</a - > :: Integer</li + > :: <a href="#" title="Prelude" + >Integer</a + ></li ></ul ></details ></div @@ -61,7 +65,9 @@ ><p class="src" ><a id="v:foo" class="def" >foo</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" @@ -78,7 +84,9 @@ ><p class="src" ><a id="v:bar" class="def" >bar</a - > :: Integer <a href="#" class="selflink" + > :: <a href="#" title="Prelude" + >Integer</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/TypeFamilies.html b/html-test/ref/TypeFamilies.html index 2195a05a..9a4945dd 100644 --- a/html-test/ref/TypeFamilies.html +++ b/html-test/ref/TypeFamilies.html @@ -280,7 +280,9 @@ >AssocD</a > <a href="#" title="TypeFamilies" >X</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -290,7 +292,9 @@ >AssocT</a > <a href="#" title="TypeFamilies" >X</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -342,8 +346,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >External instance</p + ></td ></tr ><tr ><td colspan="2" @@ -489,7 +495,9 @@ >Foo</a > <a href="#" title="TypeFamilies" >X</a - > :: *)</div + > :: <a href="#" title="Data.Kind" + >Type</a + >)</div ></details ></td ></tr @@ -574,8 +582,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Doc for: type instance Foo X = Y</p + ></td ></tr ><tr ><td colspan="2" @@ -610,7 +620,9 @@ >X</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *)</span + > (a :: <a href="#" title="Data.Kind" + >Type</a + >)</span > <a href="#" class="selflink" >#</a ></td @@ -633,7 +645,9 @@ >X</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *) = <a href="#" title="TypeFamilies" + > (a :: <a href="#" title="Data.Kind" + >Type</a + >) = <a href="#" title="TypeFamilies" >X</a ></div ></details @@ -698,7 +712,9 @@ >AssocD</a > <a href="#" title="TypeFamilies" >Y</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -708,7 +724,9 @@ >AssocT</a > <a href="#" title="TypeFamilies" >Y</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -924,8 +942,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Doc for: type instance Foo Y = X</p + ></td ></tr ><tr ><td colspan="2" @@ -960,7 +980,9 @@ >Y</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *)</span + > (a :: <a href="#" title="Data.Kind" + >Type</a + >)</span > <a href="#" class="selflink" >#</a ></td @@ -983,7 +1005,9 @@ >Y</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *) = a</div + > (a :: <a href="#" title="Data.Kind" + >Type</a + >) = a</div ></details ></td ></tr @@ -1220,8 +1244,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Doc for: type instance Foo Y = X</p + ></td ></tr ><tr ><td colspan="2" @@ -1260,8 +1286,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Doc for: type instance Foo X = Y</p + ></td ></tr ><tr ><td colspan="2" @@ -1574,7 +1602,9 @@ >AssocD</a > <a href="#" title="TypeFamilies" >Y</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -1584,7 +1614,9 @@ >AssocT</a > <a href="#" title="TypeFamilies" >Y</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1628,7 +1660,9 @@ >AssocD</a > <a href="#" title="TypeFamilies" >X</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ><p class="src" @@ -1638,7 +1672,9 @@ >AssocT</a > <a href="#" title="TypeFamilies" >X</a - > :: * <a href="#" class="selflink" + > :: <a href="#" title="Data.Kind" + >Type</a + > <a href="#" class="selflink" >#</a ></p ></div @@ -1762,7 +1798,9 @@ >Y</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *)</span + > (a :: <a href="#" title="Data.Kind" + >Type</a + >)</span > <a href="#" class="selflink" >#</a ></td @@ -1785,7 +1823,9 @@ >Y</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *) = a</div + > (a :: <a href="#" title="Data.Kind" + >Type</a + >) = a</div ></details ></td ></tr @@ -1800,7 +1840,9 @@ >X</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *)</span + > (a :: <a href="#" title="Data.Kind" + >Type</a + >)</span > <a href="#" class="selflink" >#</a ></td @@ -1823,7 +1865,9 @@ >X</a > <a href="#" title="TypeFamilies" ><></a - > (a :: *) = <a href="#" title="TypeFamilies" + > (a :: <a href="#" title="Data.Kind" + >Type</a + >) = <a href="#" title="TypeFamilies" >X</a ></div ></details diff --git a/html-test/ref/TypeFamilies2.html b/html-test/ref/TypeFamilies2.html index a5d0d9a9..1b4eed8c 100644 --- a/html-test/ref/TypeFamilies2.html +++ b/html-test/ref/TypeFamilies2.html @@ -142,8 +142,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Should be visible, but with a hidden right hand side</p + ></td ></tr ><tr ><td colspan="2" @@ -202,8 +204,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >Should be visible, but with a hidden right hand side</p + ></td ></tr ><tr ><td colspan="2" @@ -240,8 +244,10 @@ > <a href="#" class="selflink" >#</a ></td - ><td class="doc empty" - ></td + ><td class="doc" + ><p + >External instance</p + ></td ></tr ><tr ><td colspan="2" diff --git a/html-test/ref/Unicode.html b/html-test/ref/Unicode.html index 3cae7357..26d0d60e 100644 --- a/html-test/ref/Unicode.html +++ b/html-test/ref/Unicode.html @@ -46,7 +46,9 @@ ><li class="src short" ><a href="#" >x</a - > :: Int</li + > :: <a href="#" title="Data.Int" + >Int</a + ></li ></ul ></details ></div @@ -57,7 +59,9 @@ ><p class="src" ><a id="v:x" class="def" >x</a - > :: Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ><div class="doc" diff --git a/html-test/ref/Unicode2.html b/html-test/ref/Unicode2.html new file mode 100644 index 00000000..bf667bae --- /dev/null +++ b/html-test/ref/Unicode2.html @@ -0,0 +1,100 @@ +<html xmlns="http://www.w3.org/1999/xhtml" +><head + ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" + /><title + >Unicode2</title + ><link href="#" rel="stylesheet" type="text/css" title="Ocean" + /><link rel="stylesheet" type="text/css" href="#" + /><script src="haddock-bundle.min.js" async="async" type="text/javascript" + ></script + ><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript" + ></script + ></head + ><body + ><div id="package-header" + ><ul class="links" id="page-menu" + ><li + ><a href="#" + >Contents</a + ></li + ><li + ><a href="#" + >Index</a + ></li + ></ul + ><p class="caption empty" + ></p + ></div + ><div id="content" + ><div id="module-header" + ><table class="info" + ><tr + ><th + >Safe Haskell</th + ><td + >Safe</td + ></tr + ></table + ><p class="caption" + >Unicode2</p + ></div + ><div id="synopsis" + ><details id="syn" + ><summary + >Synopsis</summary + ><ul class="details-toggle" data-details-id="syn" + ><li class="src short" + ><a href="#" + >ü</a + > :: ()</li + ></ul + ></details + ></div + ><div id="interface" + ><h1 + >Documentation</h1 + ><div class="top" + ><p class="src" + ><a id="v:-252-" class="def" + >ü</a + > :: () <a href="#" class="selflink" + >#</a + ></p + ><div class="doc" + ><p + >All of the following work with a unicode character ü:</p + ><ul + ><li + >an italicized <em + >ü</em + ></li + ><li + >inline code <code + >ü</code + ></li + ><li + >a code block:</li + ></ul + ><pre + >ü</pre + ><ul + ><li + >a url <a href="#" + >https://www.google.com/search?q=ü</a + ></li + ><li + >a link to <code + ><a href="#" title="Unicode2" + >ü</a + ></code + ></li + ></ul + ></div + ></div + ></div + ></div + ><div id="footer" + ></div + ></body + ></html +>
\ No newline at end of file diff --git a/html-test/ref/Visible.html b/html-test/ref/Visible.html index 22c6be6c..308689e4 100644 --- a/html-test/ref/Visible.html +++ b/html-test/ref/Visible.html @@ -45,7 +45,11 @@ ><p class="src" ><a id="v:visible" class="def" >visible</a - > :: Int -> Int <a href="#" class="selflink" + > :: <a href="#" title="Data.Int" + >Int</a + > -> <a href="#" title="Data.Int" + >Int</a + > <a href="#" class="selflink" >#</a ></p ></div diff --git a/html-test/src/Bug745.hs b/html-test/src/Bug745.hs new file mode 100644 index 00000000..f26562c1 --- /dev/null +++ b/html-test/src/Bug745.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE TemplateHaskell, QuasiQuotes #-} + +module Bug574 where +-- See https://github.com/haskell/haddock/issues/574 + +-- | Somthing with a spliced type +foo :: Int -> $(let i = [t| Int |] in [t| $i -> $i |]) +foo x y = x + y diff --git a/html-test/src/ConstructorArgs.hs b/html-test/src/ConstructorArgs.hs new file mode 100644 index 00000000..6b0da711 --- /dev/null +++ b/html-test/src/ConstructorArgs.hs @@ -0,0 +1,56 @@ +{-# LANGUAGE GADTs, PatternSynonyms #-} + +module ConstructorArgs (Foo(..), Boo(Foo, Foa, Fo, Fo'), pattern Bo, pattern Bo') where + +data Foo + = Rec -- ^ doc on a record + { x :: String -- ^ doc on the `String` field of `Rec` + , y :: String -- ^ doc on the `String` field of `Rec` + } + | Baz Int String -- ^ old prefix doc style + | Boa -- ^ doc on the `Boa` constrictor + !Int -- ^ doc on the `Int` field of `Boa` + !String -- ^ doc on the `String` field of `Boa` + | Int :| String -- ^ old infix doc style + | Int -- ^ doc on the `Int` field of the `:*` constructor + :* -- ^ doc on the `:*` constructor + String -- ^ doc on the `String` field of the `:*` constructor + +infixr 1 `Foo` +infixr 2 `Boa` +infixr 3 :* + +data Boo where + -- | Info about a 'Foo' + Foo :: Int -- ^ `Int` field of `Foo` + -> String -- ^ `String` field of `Foo` + -> Boo -- ^ Make a `Boo` + + -- | no argument docs GADT + Foa :: Int -> Boo + +infixr 4 `Boo` + +-- | Info about bundled 'Fo' +pattern Fo :: Int -- ^ an 'Int' + -> String -- ^ a 'String' + -> Boo -- ^ a 'Boo' +pattern Fo x y = Foo x y + +-- | Bundled and no argument docs +pattern Fo' :: Boo +pattern Fo' = Foo 1 "hi" + +infixr 5 `Fo` + +-- | Info about not-bundled 'Bo' +pattern Bo :: Int -- ^ an 'Int' + -> String -- ^ a 'String' + -> Boo -- ^ a 'Boo' pattern +pattern Bo x y = Foo x y + +-- | Not bunded and no argument docs +pattern Bo' :: Int -> String -> Boo +pattern Bo' x y = Foo x y + +infixr 6 `Bo` diff --git a/html-test/src/GadtConstructorArgs.hs b/html-test/src/GadtConstructorArgs.hs new file mode 100644 index 00000000..79ffb4d3 --- /dev/null +++ b/html-test/src/GadtConstructorArgs.hs @@ -0,0 +1,13 @@ +{-# LANGUAGE GADTs, PatternSynonyms #-} + +module GadtConstructorArgs (Boo(..)) where + +data Boo where + Fot :: { x :: Int -- ^ an 'x' + , y :: Int -- ^ a 'y' + } -> Boo + + -- | Record GADT with docs + Fob :: { w :: Int -- ^ a 'w' + , z :: Int -- ^ a 'z' + } -> Boo -- ^ a 'Boo' diff --git a/html-test/src/QuantifiedConstraints.hs b/html-test/src/QuantifiedConstraints.hs new file mode 100644 index 00000000..82dd81e5 --- /dev/null +++ b/html-test/src/QuantifiedConstraints.hs @@ -0,0 +1,11 @@ +{-# LANGUAGE QuantifiedConstraints #-} +module QuantifiedConstraints where + +class Foo a where + fooed :: a + +needsParensAroundContext :: (forall x. Foo (f x)) => f Int +needsParensAroundContext = fooed + +needsNoParensAroundContext :: Foo (f Int) => f Int +needsNoParensAroundContext = fooed diff --git a/html-test/src/Unicode2.hs b/html-test/src/Unicode2.hs new file mode 100644 index 00000000..ca6b18ba --- /dev/null +++ b/html-test/src/Unicode2.hs @@ -0,0 +1,18 @@ +module Unicode2 where + +-- | All of the following work with a unicode character ü: +-- +-- * an italicized /ü/ +-- +-- * inline code @ü@ +-- +-- * a code block: +-- +-- > ü +-- +-- * a url <https://www.google.com/search?q=ü> +-- +-- * a link to 'ü' +-- +ü :: () +ü = () diff --git a/latex-test/ref/ConstructorArgs/ConstructorArgs.tex b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex new file mode 100644 index 00000000..44304f47 --- /dev/null +++ b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex @@ -0,0 +1,69 @@ +\haddockmoduleheading{ConstructorArgs} +\label{module:ConstructorArgs} +\haddockbeginheader +{\haddockverb\begin{verbatim} +module ConstructorArgs ( + Foo((:|), Rec, Baz, Boa, (:*), x, y), Boo(Foo, Foa, Fo, Fo'), pattern Bo, + pattern Bo' + ) where\end{verbatim}} +\haddockendheader + +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +data\ Foo +\end{tabular}]\haddockbegindoc +\enspace \emph{Constructors}\par +\haddockbeginconstrs +\haddockdecltt{=} & \haddockdecltt{Rec} & doc on a record \\ + & \haddocktt{\qquad \{} \haddockdecltt{x :: String} & doc on the \haddockid{String} field of \haddockid{Rec} \\ + & \haddocktt{\qquad ,} \haddockdecltt{y :: String} & doc on the \haddockid{String} field of \haddockid{Rec} \\ & \haddocktt{\qquad \}} \\ +\haddockdecltt{|} & \haddockdecltt{Baz Int String} & old prefix doc style \\ +\haddockdecltt{|} & \haddockdecltt{Boa} & doc on the \haddockid{Boa} constrictor \\ + & \qquad \haddockdecltt{!Int} & doc on the \haddockid{Int} field of \haddockid{Boa} \\ + & \qquad \haddockdecltt{!String} & doc on the \haddockid{String} field of \haddockid{Boa} \\ +\haddockdecltt{|} & \haddockdecltt{Int :| String} & old infix doc style \\ +\haddockdecltt{|} & \haddockdecltt{(:*)} & doc on the \haddockid{:*} constructor \\ + & \qquad \haddockdecltt{Int} & doc on the \haddockid{Int} field of the \haddockid{:*} constructor \\ + & \qquad \haddockdecltt{String} & doc on the \haddockid{String} field of the \haddockid{:*} constructor \\ +\end{tabulary}\par +\end{haddockdesc} +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +data\ Boo\ where +\end{tabular}]\haddockbegindoc +\enspace \emph{Constructors}\par +\haddockbeginconstrs +& \haddockdecltt{Foo} & Info about a \haddockid{Foo} \\ + & \qquad \haddockdecltt{::} \enspace \haddockdecltt{Int} & \haddockid{Int} field of \haddockid{Foo} \\ + & \qquad \haddockdecltt{->} \enspace \haddockdecltt{String} & \haddockid{String} field of \haddockid{Foo} \\ + & \qquad \haddockdecltt{->} \enspace \haddockdecltt{Boo} & Make a \haddockid{Boo} \\ +& \haddockdecltt{Foa :: Int -> Boo} & no argument docs GADT \\ +\end{tabulary}\par +\enspace \emph{Bundled Patterns}\par +\haddockbeginconstrs +& \haddockdecltt{pattern Fo} & Info about bundled \haddockid{Fo} \\ + & \qquad \haddockdecltt{::} \enspace \haddockdecltt{Int} & an \haddockid{Int} \\ + & \qquad \haddockdecltt{->} \enspace \haddockdecltt{String} & a \haddockid{String} \\ + & \qquad \haddockdecltt{->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\ +& \haddockdecltt{pattern Fo' :: Boo} & Bundled and no argument docs \\ +\end{tabulary}\par +\end{haddockdesc} +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +pattern\ Bo +\end{tabular}]\haddockbegindoc +\haddockbeginargs +\haddockdecltt{::} & \haddockdecltt{Int} & an \haddockid{Int} \\ +\haddockdecltt{->} & \haddockdecltt{String} & a \haddockid{String} \\ +\haddockdecltt{->} & \haddockdecltt{Boo} & a \haddockid{Boo} pattern \\ +\end{tabulary}\par +Info about not-bundled \haddockid{Bo}\par + +\end{haddockdesc} +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +pattern\ Bo'\ ::\ Int\ ->\ String\ ->\ Boo +\end{tabular}]\haddockbegindoc +Not bunded and no argument docs\par + +\end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/ConstructorArgs/haddock.sty b/latex-test/ref/ConstructorArgs/haddock.sty new file mode 100644 index 00000000..6e031a98 --- /dev/null +++ b/latex-test/ref/ConstructorArgs/haddock.sty @@ -0,0 +1,57 @@ +% Default Haddock style definitions. To use your own style, invoke +% Haddock with the option --latex-style=mystyle. + +\usepackage{tabulary} % see below + +% make hyperlinks in the PDF, and add an expandabale index +\usepackage[pdftex,bookmarks=true]{hyperref} + +\newenvironment{haddocktitle} + {\begin{center}\bgroup\large\bfseries} + {\egroup\end{center}} +\newenvironment{haddockprologue}{\vspace{1in}}{} + +\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} + +\newcommand{\haddockbeginheader}{\hrulefill} +\newcommand{\haddockendheader}{\noindent\hrulefill} + +% a little gap before the ``Methods'' header +\newcommand{\haddockpremethods}{\vspace{2ex}} + +% inserted before \\begin{verbatim} +\newcommand{\haddockverb}{\small} + +% an identifier: add an index entry +\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} + +% The tabulary environment lets us have a column that takes up ``the +% rest of the space''. Unfortunately it doesn't allow +% the \end{tabulary} to be in the expansion of a macro, it must appear +% literally in the document text, so Haddock inserts +% the \end{tabulary} itself. +\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} +\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} + +\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} +\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} + +\makeatletter +\newenvironment{haddockdesc} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\haddocklabel}} + {\endlist} +\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} +\makeatother + +% after a declaration, start a new line for the documentation. +% Otherwise, the documentation starts right after the declaration, +% because we're using the list environment and the declaration is the +% ``label''. I tried making this newline part of the label, but +% couldn't get that to work reliably (the space seemed to stretch +% sometimes). +\newcommand{\haddockbegindoc}{\hfill\\[1ex]} + +% spacing between paragraphs and no \parindent looks better +\parskip=10pt plus2pt minus2pt +\setlength{\parindent}{0cm} diff --git a/latex-test/ref/ConstructorArgs/main.tex b/latex-test/ref/ConstructorArgs/main.tex new file mode 100644 index 00000000..80f639c5 --- /dev/null +++ b/latex-test/ref/ConstructorArgs/main.tex @@ -0,0 +1,11 @@ +\documentclass{book} +\usepackage{haddock} +\begin{document} +\begin{titlepage} +\begin{haddocktitle} + +\end{haddocktitle} +\end{titlepage} +\tableofcontents +\input{ConstructorArgs} +\end{document}
\ No newline at end of file diff --git a/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex new file mode 100644 index 00000000..7aaf5512 --- /dev/null +++ b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex @@ -0,0 +1,25 @@ +\haddockmoduleheading{GadtConstructorArgs} +\label{module:GadtConstructorArgs} +\haddockbeginheader +{\haddockverb\begin{verbatim} +module GadtConstructorArgs ( + Boo(Fot, Fob, x, y, w, z) + ) where\end{verbatim}} +\haddockendheader + +\begin{haddockdesc} +\item[\begin{tabular}{@{}l} +data\ Boo\ where +\end{tabular}]\haddockbegindoc +\enspace \emph{Constructors}\par +\haddockbeginconstrs +& \haddockdecltt{Fot} & \\ + & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{x :: Int} & an \haddockid{x} \\ + & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{y :: Int} & a \haddockid{y} \\ + & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & \\ +& \haddockdecltt{Fob} & Record GADT with docs \\ + & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{w :: Int} & a \haddockid{w} \\ + & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{z :: Int} & a \haddockid{z} \\ + & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\ +\end{tabulary}\par +\end{haddockdesc}
\ No newline at end of file diff --git a/latex-test/ref/GadtConstructorArgs/haddock.sty b/latex-test/ref/GadtConstructorArgs/haddock.sty new file mode 100644 index 00000000..6e031a98 --- /dev/null +++ b/latex-test/ref/GadtConstructorArgs/haddock.sty @@ -0,0 +1,57 @@ +% Default Haddock style definitions. To use your own style, invoke +% Haddock with the option --latex-style=mystyle. + +\usepackage{tabulary} % see below + +% make hyperlinks in the PDF, and add an expandabale index +\usepackage[pdftex,bookmarks=true]{hyperref} + +\newenvironment{haddocktitle} + {\begin{center}\bgroup\large\bfseries} + {\egroup\end{center}} +\newenvironment{haddockprologue}{\vspace{1in}}{} + +\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}} + +\newcommand{\haddockbeginheader}{\hrulefill} +\newcommand{\haddockendheader}{\noindent\hrulefill} + +% a little gap before the ``Methods'' header +\newcommand{\haddockpremethods}{\vspace{2ex}} + +% inserted before \\begin{verbatim} +\newcommand{\haddockverb}{\small} + +% an identifier: add an index entry +\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}} + +% The tabulary environment lets us have a column that takes up ``the +% rest of the space''. Unfortunately it doesn't allow +% the \end{tabulary} to be in the expansion of a macro, it must appear +% literally in the document text, so Haddock inserts +% the \end{tabulary} itself. +\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} +\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}} + +\newcommand{\haddocktt}[1]{{\small \texttt{#1}}} +\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}} + +\makeatletter +\newenvironment{haddockdesc} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\haddocklabel}} + {\endlist} +\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}} +\makeatother + +% after a declaration, start a new line for the documentation. +% Otherwise, the documentation starts right after the declaration, +% because we're using the list environment and the declaration is the +% ``label''. I tried making this newline part of the label, but +% couldn't get that to work reliably (the space seemed to stretch +% sometimes). +\newcommand{\haddockbegindoc}{\hfill\\[1ex]} + +% spacing between paragraphs and no \parindent looks better +\parskip=10pt plus2pt minus2pt +\setlength{\parindent}{0cm} diff --git a/latex-test/ref/GadtConstructorArgs/main.tex b/latex-test/ref/GadtConstructorArgs/main.tex new file mode 100644 index 00000000..dc1a1aa3 --- /dev/null +++ b/latex-test/ref/GadtConstructorArgs/main.tex @@ -0,0 +1,11 @@ +\documentclass{book} +\usepackage{haddock} +\begin{document} +\begin{titlepage} +\begin{haddocktitle} + +\end{haddocktitle} +\end{titlepage} +\tableofcontents +\input{GadtConstructorArgs} +\end{document}
\ No newline at end of file diff --git a/latex-test/src/ConstructorArgs/ConstructorArgs.hs b/latex-test/src/ConstructorArgs/ConstructorArgs.hs new file mode 100644 index 00000000..6b0da711 --- /dev/null +++ b/latex-test/src/ConstructorArgs/ConstructorArgs.hs @@ -0,0 +1,56 @@ +{-# LANGUAGE GADTs, PatternSynonyms #-} + +module ConstructorArgs (Foo(..), Boo(Foo, Foa, Fo, Fo'), pattern Bo, pattern Bo') where + +data Foo + = Rec -- ^ doc on a record + { x :: String -- ^ doc on the `String` field of `Rec` + , y :: String -- ^ doc on the `String` field of `Rec` + } + | Baz Int String -- ^ old prefix doc style + | Boa -- ^ doc on the `Boa` constrictor + !Int -- ^ doc on the `Int` field of `Boa` + !String -- ^ doc on the `String` field of `Boa` + | Int :| String -- ^ old infix doc style + | Int -- ^ doc on the `Int` field of the `:*` constructor + :* -- ^ doc on the `:*` constructor + String -- ^ doc on the `String` field of the `:*` constructor + +infixr 1 `Foo` +infixr 2 `Boa` +infixr 3 :* + +data Boo where + -- | Info about a 'Foo' + Foo :: Int -- ^ `Int` field of `Foo` + -> String -- ^ `String` field of `Foo` + -> Boo -- ^ Make a `Boo` + + -- | no argument docs GADT + Foa :: Int -> Boo + +infixr 4 `Boo` + +-- | Info about bundled 'Fo' +pattern Fo :: Int -- ^ an 'Int' + -> String -- ^ a 'String' + -> Boo -- ^ a 'Boo' +pattern Fo x y = Foo x y + +-- | Bundled and no argument docs +pattern Fo' :: Boo +pattern Fo' = Foo 1 "hi" + +infixr 5 `Fo` + +-- | Info about not-bundled 'Bo' +pattern Bo :: Int -- ^ an 'Int' + -> String -- ^ a 'String' + -> Boo -- ^ a 'Boo' pattern +pattern Bo x y = Foo x y + +-- | Not bunded and no argument docs +pattern Bo' :: Int -> String -> Boo +pattern Bo' x y = Foo x y + +infixr 6 `Bo` diff --git a/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs b/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs new file mode 100644 index 00000000..79ffb4d3 --- /dev/null +++ b/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs @@ -0,0 +1,13 @@ +{-# LANGUAGE GADTs, PatternSynonyms #-} + +module GadtConstructorArgs (Boo(..)) where + +data Boo where + Fot :: { x :: Int -- ^ an 'x' + , y :: Int -- ^ a 'y' + } -> Boo + + -- | Record GADT with docs + Fob :: { w :: Int -- ^ a 'w' + , z :: Int -- ^ a 'z' + } -> Boo -- ^ a 'Boo' |