[Git][ghc/ghc][wip/ani/kill-popErrCtxt] some initial experiment to make ErrCtxt more expressive
by Apoorv Ingle (@ani) 15 Sep '25
by Apoorv Ingle (@ani) 15 Sep '25
15 Sep '25
Apoorv Ingle pushed to branch wip/ani/kill-popErrCtxt at Glasgow Haskell Compiler / GHC
Commits:
e95889e1 by Apoorv Ingle at 2025-09-14T22:26:20-05:00
some initial experiment to make ErrCtxt more expressive
- - - - -
5 changed files:
- compiler/GHC/Tc/Gen/Do.hs
- compiler/GHC/Tc/Gen/Head.hs
- compiler/GHC/Tc/Types/ErrCtxt.hs
- compiler/GHC/Tc/Types/LclEnv.hs
- compiler/GHC/Tc/Utils/Monad.hs
Changes:
=====================================
compiler/GHC/Tc/Gen/Do.hs
=====================================
@@ -485,11 +485,11 @@ It stores the original statement (with location) and the expanded expression
-- | Wrap a located expression with a `PopErrCtxt`
-mkPopErrCtxtExpr :: HsExpr GhcRn -> HsExpr GhcRn
-mkPopErrCtxtExpr a = XExpr (PopErrCtxt a)
+-- mkPopErrCtxtExpr :: HsExpr GhcRn -> HsExpr GhcRn
+-- mkPopErrCtxtExpr a = XExpr (PopErrCtxt a)
genPopErrCtxtExpr :: LHsExpr GhcRn -> LHsExpr GhcRn
-genPopErrCtxtExpr (L loc a) = L loc (mkPopErrCtxtExpr a)
+genPopErrCtxtExpr x = x
mkExpandedPatRn :: Pat GhcRn -> HsExpr GhcRn -> HsExpr GhcRn
mkExpandedPatRn pat e = XExpr (ExpandedThingRn (OrigPat pat) e)
=====================================
compiler/GHC/Tc/Gen/Head.hs
=====================================
@@ -1109,5 +1109,5 @@ addExprCtxt e thing_inside
-- f x = _
-- when we don't want to say "In the expression: _",
-- because it is mentioned in the error message itself
- XExpr (PopErrCtxt _) -> thing_inside -- popErrCtxt shouldn't push ctxt. see typechecking let stmts
+ XExpr (ExpandedThingRn o _) -> setInGeneratedCode o thing_inside
_ -> addErrCtxt (ExprCtxt e) thing_inside -- no op in generated code
=====================================
compiler/GHC/Tc/Types/ErrCtxt.hs
=====================================
@@ -4,7 +4,7 @@
{-# LANGUAGE UndecidableInstances #-}
module GHC.Tc.Types.ErrCtxt
- ( ErrCtxt, ErrCtxtMsg(..)
+ ( ErrCtxt (..), ErrCtxtMsg(..), srcCodeOriginErrCtxMsg
, UserSigType(..), FunAppCtxtFunArg(..)
, TyConInstFlavour(..)
)
@@ -23,7 +23,7 @@ import GHC.Tc.Zonk.Monad ( ZonkM )
import GHC.Types.Basic ( TyConFlavour )
import GHC.Types.Name ( Name )
-import GHC.Types.SrcLoc ( SrcSpan )
+import GHC.Types.SrcLoc ( SrcSpan, unLoc )
import GHC.Types.Var ( Id, TyCoVar )
import GHC.Types.Var.Env ( TidyEnv )
@@ -50,13 +50,18 @@ import qualified Data.List.NonEmpty as NE
-- | Additional context to include in an error message, e.g.
-- "In the type signature ...", "In the ambiguity check for ...", etc.
-type ErrCtxt = (Bool, TidyEnv -> ZonkM (TidyEnv, ErrCtxtMsg))
+data ErrCtxt = UserCodeCtxt (Bool, TidyEnv -> ZonkM (TidyEnv, ErrCtxtMsg))
-- Monadic so that we have a chance
-- to deal with bound type variables just before error
-- message construction
-- Bool: True <=> this is a landmark context; do not
-- discard it when trimming for display
+ | GeneratedCodeCtxt SrcCodeOrigin
+ -- The payload is a SrcCodeOrigin because it is used to generate
+ -- 1. The CtOrigin for CtLoc, and
+ -- 2. ErrCtxtMsg in error messages
+
--------------------------------------------------------------------------------
-- Error message contexts
@@ -221,3 +226,9 @@ data ErrCtxtMsg
| MergeSignaturesCtxt !UnitState !ModuleName ![InstantiatedModule]
-- | While checking that a module implements a Backpack signature.
| CheckImplementsCtxt !UnitState !Module !InstantiatedModule
+
+
+srcCodeOriginErrCtxMsg :: SrcCodeOrigin -> ErrCtxtMsg
+srcCodeOriginErrCtxMsg (OrigExpr e) = ExprCtxt e
+srcCodeOriginErrCtxMsg (OrigStmt s f) = StmtErrCtxt (HsDoStmt f) (unLoc s)
+srcCodeOriginErrCtxMsg (OrigPat p) = PatCtxt p
=====================================
compiler/GHC/Tc/Types/LclEnv.hs
=====================================
@@ -28,7 +28,7 @@ module GHC.Tc.Types.LclEnv (
, addLclEnvErrCtxt
- , ErrCtxtStack (..)
+ , ErrCtxtStack
, ArrowCtxt(..)
, ThBindEnv
, TcTypeEnv
@@ -109,36 +109,24 @@ This data structure keeps track of two things:
-- See Note [Error Context Stack]
-data ErrCtxtStack
- = UserCodeCtxt { lcl_err_ctxt :: [ErrCtxt] } -- ^ Trail of error messages
- | GeneratedCodeCtxt { src_code_origin :: SrcCodeOrigin -- ^ Original, user written code
- , lcl_err_ctxt :: [ErrCtxt] } -- ^ Trail of error messages
+type ErrCtxtStack = [ErrCtxt]
-- | Are we in a generated context?
isGeneratedCodeCtxt :: ErrCtxtStack -> Bool
-isGeneratedCodeCtxt UserCodeCtxt{} = False
-isGeneratedCodeCtxt _ = True
+isGeneratedCodeCtxt (GeneratedCodeCtxt{} : _) = True
+isGeneratedCodeCtxt _ = False
-- | Get the original source code
get_src_code_origin :: ErrCtxtStack -> Maybe SrcCodeOrigin
-get_src_code_origin (UserCodeCtxt{}) = Nothing
- -- we are in user code, so blame the expression in hand
-get_src_code_origin es = Just $ src_code_origin es
+get_src_code_origin (GeneratedCodeCtxt es : _) = Just es
-- we are in generated code, so extract the original expression
-
--- | Modify the error context stack
--- N.B. If we are in a generated context, any updates to the context stack are ignored.
--- We want to blame the errors that appear in a generated expression
--- to the original, user written code
-modify_err_ctxt_stack :: ([ErrCtxt] -> [ErrCtxt]) -> ErrCtxtStack -> ErrCtxtStack
-modify_err_ctxt_stack f (UserCodeCtxt e) = UserCodeCtxt (f e)
-modify_err_ctxt_stack _ c = c -- any updates on the err context in a generated context should be ignored
-
+get_src_code_origin _ = Nothing
+ -- we are in user code, so blame the expression in hand
data TcLclCtxt
= TcLclCtxt {
tcl_loc :: RealSrcSpan, -- Source span
- tcl_ctxt :: ErrCtxtStack, -- See Note [Error Context Stack]
+ tcl_err_ctxt :: ErrCtxtStack, -- See Note [Error Context Stack]
tcl_tclvl :: TcLevel,
tcl_bndrs :: TcBinderStack, -- Used for reporting relevant bindings,
-- and for tidying type
@@ -203,25 +191,30 @@ getLclEnvLoc :: TcLclEnv -> RealSrcSpan
getLclEnvLoc = tcl_loc . tcl_lcl_ctxt
getLclEnvErrCtxt :: TcLclEnv -> [ErrCtxt]
-getLclEnvErrCtxt = lcl_err_ctxt . tcl_ctxt . tcl_lcl_ctxt
+getLclEnvErrCtxt = tcl_err_ctxt . tcl_lcl_ctxt
setLclEnvErrCtxt :: [ErrCtxt] -> TcLclEnv -> TcLclEnv
-setLclEnvErrCtxt ctxt = modifyLclCtxt (\env -> env { tcl_ctxt = modify_err_ctxt_stack (\ _ -> ctxt) (tcl_ctxt env) })
+setLclEnvErrCtxt ctxt = modifyLclCtxt (\env -> env { tcl_err_ctxt = ctxt })
addLclEnvErrCtxt :: ErrCtxt -> TcLclEnv -> TcLclEnv
-addLclEnvErrCtxt ec = modifyLclCtxt (\env -> env { tcl_ctxt = modify_err_ctxt_stack (\ctxt -> ec : ctxt) (tcl_ctxt env) })
+addLclEnvErrCtxt (GeneratedCodeCtxt co) = setLclEnvSrcCodeOrigin co
+addLclEnvErrCtxt ec = modifyLclCtxt (\env -> env { tcl_err_ctxt = ec : (tcl_err_ctxt env) })
getLclEnvSrcCodeOrigin :: TcLclEnv -> Maybe SrcCodeOrigin
-getLclEnvSrcCodeOrigin = get_src_code_origin . tcl_ctxt . tcl_lcl_ctxt
+getLclEnvSrcCodeOrigin = get_src_code_origin . tcl_err_ctxt . tcl_lcl_ctxt
setLclEnvSrcCodeOrigin :: SrcCodeOrigin -> TcLclEnv -> TcLclEnv
setLclEnvSrcCodeOrigin o = modifyLclCtxt (setLclCtxtSrcCodeOrigin o)
setLclCtxtSrcCodeOrigin :: SrcCodeOrigin -> TcLclCtxt -> TcLclCtxt
-setLclCtxtSrcCodeOrigin o ctxt = ctxt { tcl_ctxt = GeneratedCodeCtxt o (lcl_err_ctxt $ tcl_ctxt ctxt) }
+setLclCtxtSrcCodeOrigin o lclCtxt
+ | (GeneratedCodeCtxt _ : ec) <- tcl_err_ctxt lclCtxt
+ = lclCtxt { tcl_err_ctxt = GeneratedCodeCtxt o : ec }
+ | otherwise
+ = lclCtxt { tcl_err_ctxt = GeneratedCodeCtxt o : tcl_err_ctxt lclCtxt }
lclCtxtInGeneratedCode :: TcLclCtxt -> Bool
-lclCtxtInGeneratedCode = isGeneratedCodeCtxt . tcl_ctxt
+lclCtxtInGeneratedCode = isGeneratedCodeCtxt . tcl_err_ctxt
lclEnvInGeneratedCode :: TcLclEnv -> Bool
lclEnvInGeneratedCode = lclCtxtInGeneratedCode . tcl_lcl_ctxt
=====================================
compiler/GHC/Tc/Utils/Monad.hs
=====================================
@@ -168,6 +168,7 @@ import GHC.Tc.Types -- Re-export all
import GHC.Tc.Types.Constraint
import GHC.Tc.Types.CtLoc
import GHC.Tc.Types.Evidence
+import GHC.Tc.Types.ErrCtxt
import GHC.Tc.Types.LclEnv
import GHC.Tc.Types.Origin
import GHC.Tc.Types.TcRef
@@ -401,7 +402,7 @@ initTcWithGbl hsc_env gbl_env loc do_this
tcl_lcl_ctxt = TcLclCtxt {
tcl_loc = loc,
-- tcl_loc should be over-ridden very soon!
- tcl_ctxt = UserCodeCtxt [],
+ tcl_err_ctxt = [],
tcl_rdr = emptyLocalRdrEnv,
tcl_th_ctxt = topLevel,
tcl_th_bndrs = emptyNameEnv,
@@ -983,9 +984,7 @@ inGeneratedCode = lclEnvInGeneratedCode <$> getLclEnv
setSrcSpan :: SrcSpan -> TcRn a -> TcRn a
-- See Note [Error contexts in generated code]
setSrcSpan (RealSrcSpan loc _) thing_inside
- = updLclCtxt (\env -> env { tcl_loc = loc
- , tcl_ctxt = UserCodeCtxt (lcl_err_ctxt $ tcl_ctxt env)})
- thing_inside
+ = updLclCtxt (\env -> env { tcl_loc = loc }) thing_inside
setSrcSpan (UnhelpfulSpan _) thing_inside
= thing_inside
@@ -1252,7 +1251,7 @@ addErrCtxt msg = addErrCtxtM (\env -> return (env, msg))
-- See Note [Rebindable syntax and XXExprGhcRn] in GHC.Hs.Expr
addErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, ErrCtxtMsg)) -> TcM a -> TcM a
{-# INLINE addErrCtxtM #-} -- Note [Inlining addErrCtxt]
-addErrCtxtM ctxt = pushCtxt (False, ctxt)
+addErrCtxtM ctxt = pushCtxt (UserCodeCtxt (False, ctxt))
-- | Add a fixed landmark message to the error context. A landmark
-- message is always sure to be reported, even if there is a lot of
@@ -1266,7 +1265,7 @@ addLandmarkErrCtxt msg = addLandmarkErrCtxtM (\env -> return (env, msg))
-- and tidying.
addLandmarkErrCtxtM :: (TidyEnv -> ZonkM (TidyEnv, ErrCtxtMsg)) -> TcM a -> TcM a
{-# INLINE addLandmarkErrCtxtM #-} -- Note [Inlining addErrCtxt]
-addLandmarkErrCtxtM ctxt = pushCtxt (True, ctxt)
+addLandmarkErrCtxtM ctxt = pushCtxt (UserCodeCtxt (True, ctxt))
-- | NB. no op in generated code
-- See Note [Rebindable syntax and XXExprGhcRn] in GHC.Hs.Expr
@@ -1277,9 +1276,7 @@ pushCtxt ctxt = updLclEnv (updCtxt ctxt)
updCtxt :: ErrCtxt -> TcLclEnv -> TcLclEnv
-- Do not update the context if we are in generated code
-- See Note [Rebindable syntax and XXExprGhcRn] in GHC.Hs.Expr
-updCtxt ctxt env
- | lclEnvInGeneratedCode env = env
- | otherwise = addLclEnvErrCtxt ctxt env
+updCtxt ctxt env = addLclEnvErrCtxt ctxt env
popErrCtxt :: TcM a -> TcM a
popErrCtxt thing_inside = updLclEnv (\env -> setLclEnvErrCtxt (pop $ getLclEnvErrCtxt env) env) $
@@ -1740,7 +1737,7 @@ mkErrCtxt env ctxts
where
go :: Bool -> Int -> TidyEnv -> [ErrCtxt] -> TcM [ErrCtxtMsg]
go _ _ _ [] = return []
- go dbg n env ((is_landmark, ctxt) : ctxts)
+ go dbg n env (UserCodeCtxt (is_landmark, ctxt) : ctxts)
| is_landmark || n < mAX_CONTEXTS -- Too verbose || dbg
= do { (env', msg) <- liftZonkM $ ctxt env
; let n' = if is_landmark then n else n+1
@@ -1748,6 +1745,13 @@ mkErrCtxt env ctxts
; return (msg : rest) }
| otherwise
= go dbg n env ctxts
+ go dbg n env (GeneratedCodeCtxt co : ctxts)
+ | n < mAX_CONTEXTS -- Too verbose || dbg
+ = do { let msg = srcCodeOriginErrCtxMsg co
+ ; rest <- go dbg (n+1) env ctxts
+ ; return (msg : rest) }
+ | otherwise
+ = go dbg n env ctxts
mAX_CONTEXTS :: Int -- No more than this number of non-landmark contexts
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/e95889e1d3d604fb26b23d44e1d8173…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/e95889e1d3d604fb26b23d44e1d8173…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][master] 2 commits: Revert "wasm: add brotli compression for ghci browser mode"
by Marge Bot (@marge-bot) 15 Sep '25
by Marge Bot (@marge-bot) 15 Sep '25
15 Sep '25
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
42a18960 by Cheng Shao at 2025-09-14T21:30:26-04:00
Revert "wasm: add brotli compression for ghci browser mode"
This reverts commit 731217ce68a1093b5f9e26a07d5bd2cdade2b352.
Benchmarks show non-negligible overhead when browser runs on the same
host, which is the majority of actual use cases.
- - - - -
e6755b9f by Cheng Shao at 2025-09-14T21:30:26-04:00
wasm: remove etag logic in ghci browser mode web server
This commit removes the etag logic in dyld script's ghci browser mode
web server. It was meant to support caching logic of wasm shared
libraries, but even if the port is manually specified to make caching
even relevant, for localhost the extra overhead around etag logic is
simply not worth it according to benchmarks.
- - - - -
1 changed file:
- utils/jsffi/dyld.mjs
Changes:
=====================================
utils/jsffi/dyld.mjs
=====================================
@@ -291,7 +291,7 @@ const isNode = Boolean(globalThis?.process?.versions?.node);
// factor out browser-only/node-only logic into different modules. For
// now, just make these global let bindings optionally initialized if
// isNode and be careful to not use them in browser-only logic.
-let fs, http, path, require, stream, util, wasi, ws, zlib;
+let fs, http, path, require, stream, wasi, ws;
if (isNode) {
require = (await import("node:module")).createRequire(import.meta.url);
@@ -300,9 +300,7 @@ if (isNode) {
http = require("http");
path = require("path");
stream = require("stream");
- util = require("util");
wasi = require("wasi");
- zlib = require("zlib");
// Optional npm dependencies loaded via NODE_PATH
try {
@@ -561,30 +559,8 @@ args.rpc.opened.then(() => main(args));
}[path.extname(p)] || "application/octet-stream"
);
- const buf = Buffer.from(await fs.promises.readFile(p));
- const etag = `sha512-${Buffer.from(
- await crypto.subtle.digest("SHA-512", buf)
- ).toString("base64")}`;
-
- res.setHeader("ETag", etag);
-
- if (req.headers["if-none-match"] === etag) {
- res.writeHead(304);
- res.end();
- return;
- }
-
- res.setHeader("Content-Encoding", "br");
-
res.writeHead(200);
- res.end(
- await util.promisify(zlib.brotliCompress)(buf, {
- params: {
- [zlib.constants.BROTLI_PARAM_QUALITY]:
- zlib.constants.BROTLI_MIN_QUALITY,
- },
- })
- );
+ fs.createReadStream(p).pipe(res);
return;
}
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/77deaa7ad9c880410b7d0a967b0373…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/77deaa7ad9c880410b7d0a967b0373…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][master] hadrian: build in-tree gmp with -fvisibility=hidden
by Marge Bot (@marge-bot) 15 Sep '25
by Marge Bot (@marge-bot) 15 Sep '25
15 Sep '25
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
77deaa7a by Cheng Shao at 2025-09-14T21:29:45-04:00
hadrian: build in-tree gmp with -fvisibility=hidden
When hadrian builds in-tree gmp, it should build the shared objects
with -fvisibility=hidden. The gmp symbols are only used by bignum
logic in ghc-internal and shouldn't be exported by the ghc-internal
shared library. We should always strive to keep shared library symbol
table lean, which benefits platforms with slow dynamic linker or even
hard limits about how many symbols can be exported (e.g. macos dyld,
win32 dll and wasm dyld).
- - - - -
1 changed file:
- hadrian/src/Rules/Gmp.hs
Changes:
=====================================
hadrian/src/Rules/Gmp.hs
=====================================
@@ -12,7 +12,6 @@ import Utilities
import Hadrian.BuildPath
import Hadrian.Expression
import Settings.Builders.Common (cArgs, getStagedCCFlags)
-import GHC.Platform.ArchOS
-- | Build in-tree GMP library objects (if GmpInTree flag is set) and return
-- their paths.
@@ -128,7 +127,10 @@ gmpRules = do
mconcat
[ cArgs
, getStagedCCFlags
- , anyTargetArch [ArchWasm32] ? arg "-fvisibility=default"
+ -- gmp symbols are only used by bignum logic in
+ -- ghc-internal and shouldn't be exported by the
+ -- ghc-internal shared library.
+ , arg "-fvisibility=hidden"
]
env <- sequence
[ builderEnvironment "CC" $ Cc CompileC (stage ctx)
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/77deaa7ad9c880410b7d0a967b03739…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/77deaa7ad9c880410b7d0a967b03739…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/shorter-this-module-links] Use showUnique in internalAnchorIdent
by Oleg Grenrus (@phadej) 14 Sep '25
by Oleg Grenrus (@phadej) 14 Sep '25
14 Sep '25
Oleg Grenrus pushed to branch wip/shorter-this-module-links at Glasgow Haskell Compiler / GHC
Commits:
9861b13e by Oleg Grenrus at 2025-09-14T23:50:20+03:00
Use showUnique in internalAnchorIdent
Showing the key of Unique as a number is generally not a great idea.
GHC Unique has a tag in high bits, so the raw number is unnecessarily
big.
So now we have
```html
<a href="#l-rvgK"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
instead of
```html
<a href="#local-6989586621679015689"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
Together with previous changes of shorter intra-module links the effect
on compressed files is not huge, that is expected as we simply remove
repetitive contents which pack well.
```
12_694_206 Agda-2.9.0-docs-orig.tar.gz
12_566_065 Agda-2.9.0-docs.tar.gz
```
However when unpacked, the difference can be significant,
e.g. Agda's largest module source got 5% reduction:
```
14_230_117 Agda.Syntax.Parser.Parser.html
13_422_109 Agda.Syntax.Parser.Parser.html
```
The whole hyperlinked source code directory got similar reduction
```
121M Agda-2.9.0-docs-orig/src
114M Agda-2.9.0-docs/src
```
For the reference, sources are about 2/3 of the generated haddocks
```
178M Agda-2.9.0-docs-old
172M Agda-2.9.0-docs
```
so we get around 3.5% size reduction overall. Not bad for a small local
changes.
- - - - -
17 changed files:
- utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
- utils/haddock/hypsrc-test/Main.hs
- utils/haddock/hypsrc-test/ref/src/CPP.html
- utils/haddock/hypsrc-test/ref/src/Classes.html
- utils/haddock/hypsrc-test/ref/src/Constructors.html
- utils/haddock/hypsrc-test/ref/src/Identifiers.html
- utils/haddock/hypsrc-test/ref/src/LinkingIdentifiers.html
- utils/haddock/hypsrc-test/ref/src/Literals.html
- utils/haddock/hypsrc-test/ref/src/Operators.html
- utils/haddock/hypsrc-test/ref/src/Polymorphism.html
- utils/haddock/hypsrc-test/ref/src/PositionPragmas.html
- utils/haddock/hypsrc-test/ref/src/Quasiquoter.html
- utils/haddock/hypsrc-test/ref/src/Records.html
- utils/haddock/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
- utils/haddock/hypsrc-test/ref/src/TemplateHaskellSplices.html
- utils/haddock/hypsrc-test/ref/src/Types.html
- utils/haddock/hypsrc-test/ref/src/UsingQuasiquotes.html
Changes:
=====================================
utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
=====================================
@@ -14,7 +14,7 @@ import GHC.Iface.Ext.Types
import GHC.Iface.Ext.Utils (emptyNodeInfo, isEvidenceContext)
import GHC.Types.Name (Name, getOccString, isInternalName, nameModule, nameUnique)
import GHC.Types.SrcLoc
-import GHC.Types.Unique (getKey)
+import GHC.Types.Unique (showUnique)
import GHC.Unit.Module (Module, ModuleName, moduleNameString)
import GHC.Utils.Encoding (utf8DecodeByteString)
import System.FilePath.Posix ((</>))
@@ -254,7 +254,7 @@ externalAnchorIdent :: Name -> String
externalAnchorIdent = hypSrcNameUrl
internalAnchorIdent :: Name -> String
-internalAnchorIdent = ("local-" ++) . show . getKey . nameUnique
+internalAnchorIdent = ("l-" ++) . showUnique . nameUnique
-- | Generate the HTML hyperlink for an identifier
hyperlink :: Module -> SrcMaps -> Identifier -> Html -> Html
=====================================
utils/haddock/hypsrc-test/Main.hs
=====================================
@@ -22,9 +22,9 @@ checkConfig = CheckConfig
where
strip _ = fixPaths . stripAnchors' . stripLinks' . stripIds' . stripFooter
- stripLinks' = stripLinksWhen $ \href -> "#local-" `isPrefixOf` href
- stripAnchors' = stripAnchorsWhen $ \name -> "local-" `isPrefixOf` name
- stripIds' = stripIdsWhen $ \name -> "local-" `isPrefixOf` name
+ stripLinks' = stripLinksWhen $ \href -> "#l-" `isPrefixOf` href
+ stripAnchors' = stripAnchorsWhen $ \name -> "l-" `isPrefixOf` name
+ stripIds' = stripIdsWhen $ \name -> "l-" `isPrefixOf` name
-- One-shot hyperlinked source links to other modules as if they are in another package
fixPaths = fixAttrValueWhen "href" (drop 7) ("../src/" `isPrefixOf`)
=====================================
utils/haddock/hypsrc-test/ref/src/CPP.html
=====================================
@@ -45,7 +45,7 @@
><span id="line-7"
></span
><span class="annot"
- ><a href="CPP.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-type"
>foo</span
></a
@@ -70,7 +70,7 @@
><span class="annottext"
>foo :: String
</span
- ><a href="CPP.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var hs-var"
>foo</span
></a
@@ -106,7 +106,7 @@
><span id="line-14"
></span
><span class="annot"
- ><a href="CPP.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -131,7 +131,7 @@
><span class="annottext"
>bar :: String
</span
- ><a href="CPP.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var"
>bar</span
></a
@@ -192,7 +192,7 @@
><span id="line-26"
></span
><span class="annot"
- ><a href="CPP.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-type"
>baz</span
></a
@@ -217,7 +217,7 @@
><span class="annottext"
>baz :: String
</span
- ><a href="CPP.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var"
>baz</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Classes.html
=====================================
@@ -48,7 +48,7 @@
> </span
><span id="Foo"
><span class="annot"
- ><a href="Classes.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-var"
>Foo</span
></a
@@ -77,7 +77,7 @@
> </span
><span id="bar"
><span class="annot"
- ><a href="Classes.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -114,7 +114,7 @@
> </span
><span id="baz"
><span class="annot"
- ><a href="Classes.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-type"
>baz</span
></a
@@ -171,7 +171,7 @@
><span
> </span
><span class="annot"
- ><a href="Classes.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -198,7 +198,7 @@
><span class="annottext"
>bar :: Int -> Int
</span
- ><a href="Classes.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var hs-var"
>bar</span
></a
@@ -230,7 +230,7 @@ forall a. a -> a
><span class="annottext"
>baz :: Int -> (Int, Int)
</span
- ><a href="Classes.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var hs-var"
>baz</span
></a
@@ -297,7 +297,7 @@ forall a. a -> a
> </span
><span id=""
><span class="annot"
- ><a href="Classes.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -331,7 +331,7 @@ forall a. a -> a
><span class="annottext"
>bar :: [a] -> Int
</span
- ><a href="Classes.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var hs-var"
>bar</span
></a
@@ -364,7 +364,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
><span class="annottext"
>baz :: Int -> ([a], [a])
</span
- ><a href="Classes.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var hs-var"
>baz</span
></a
@@ -421,7 +421,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
><span
> </span
><span class="annot"
- ><a href="Classes.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -442,7 +442,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
> </span
><span id="Foo%27"
><span class="annot"
- ><a href="Classes.html#Foo%27"
+ ><a href="#Foo%27"
><span class="hs-identifier hs-var"
>Foo'</span
></a
@@ -471,7 +471,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
> </span
><span id="quux"
><span class="annot"
- ><a href="Classes.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-type"
>quux</span
></a
@@ -524,7 +524,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
> </span
><span id=""
><span class="annot"
- ><a href="Classes.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var hs-var"
>quux</span
></a
@@ -572,7 +572,7 @@ forall (t :: * -> *) a. Foldable t => t a -> Int
>[a] -> a
forall a. Foo' a => [a] -> a
</span
- ><a href="Classes.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var"
>norf</span
></a
@@ -620,7 +620,7 @@ forall a. Foo' a => [a] -> a
> </span
><span id="norf"
><span class="annot"
- ><a href="Classes.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-type"
>norf</span
></a
@@ -663,7 +663,7 @@ forall a. Foo' a => [a] -> a
> </span
><span id=""
><span class="annot"
- ><a href="Classes.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var hs-var"
>norf</span
></a
@@ -679,7 +679,7 @@ forall a. Foo' a => [a] -> a
>(a, a) -> a
forall a. Foo' a => (a, a) -> a
</span
- ><a href="Classes.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -701,7 +701,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c
>Int -> (a, a)
forall a. Foo a => Int -> (a, a)
</span
- ><a href="Classes.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var"
>baz</span
></a
@@ -754,7 +754,7 @@ forall a b. (a -> b) -> [a] -> [b]
>a -> Int
forall a. Foo a => a -> Int
</span
- ><a href="Classes.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var"
>bar</span
></a
@@ -776,7 +776,7 @@ forall a. Foo a => a -> Int
> </span
><span id=""
><span class="annot"
- ><a href="Classes.html#Foo%27"
+ ><a href="#Foo%27"
><span class="hs-identifier hs-type"
>Foo'</span
></a
@@ -804,7 +804,7 @@ forall a. Foo a => a -> Int
><span class="annottext"
>norf :: [Int] -> Int
</span
- ><a href="Classes.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var hs-var hs-var"
>norf</span
></a
@@ -842,7 +842,7 @@ forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
><span id=""
><span id=""
><span class="annot"
- ><a href="Classes.html#Foo%27"
+ ><a href="#Foo%27"
><span class="hs-identifier hs-type"
>Foo'</span
></a
@@ -877,7 +877,7 @@ forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
><span class="annottext"
>quux :: ([a], [a]) -> [a]
</span
- ><a href="Classes.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var hs-var hs-var"
>quux</span
></a
@@ -928,7 +928,7 @@ forall a. [a] -> [a] -> [a]
> </span
><span id="Plugh"
><span class="annot"
- ><a href="Classes.html#Plugh"
+ ><a href="#Plugh"
><span class="hs-identifier hs-var"
>Plugh</span
></a
@@ -957,7 +957,7 @@ forall a. [a] -> [a] -> [a]
> </span
><span id="plugh"
><span class="annot"
- ><a href="Classes.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-type"
>plugh</span
></a
@@ -1098,7 +1098,7 @@ forall a. [a] -> [a] -> [a]
><span
> </span
><span class="annot"
- ><a href="Classes.html#Plugh"
+ ><a href="#Plugh"
><span class="hs-identifier hs-type"
>Plugh</span
></a
@@ -1125,7 +1125,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>plugh :: forall a b. Either a a -> Either b b -> Either (a -> b) (b -> a)
</span
- ><a href="Classes.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-var hs-var hs-var"
>plugh</span
></a
@@ -1217,7 +1217,7 @@ forall a b. a -> b -> a
><span
> </span
><span class="annot"
- ><a href="Classes.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-var"
>plugh</span
></a
@@ -1308,7 +1308,7 @@ forall a b. a -> b -> a
><span
> </span
><span class="annot"
- ><a href="Classes.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-var"
>plugh</span
></a
@@ -1399,7 +1399,7 @@ forall a b. a -> b -> a
><span
> </span
><span class="annot"
- ><a href="Classes.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-var"
>plugh</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Constructors.html
=====================================
@@ -48,7 +48,7 @@
> </span
><span id="Foo"
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-var"
>Foo</span
></a
@@ -67,7 +67,7 @@
> </span
><span id="Bar"
><span class="annot"
- ><a href="Constructors.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -86,7 +86,7 @@
> </span
><span id="Baz"
><span class="annot"
- ><a href="Constructors.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -105,7 +105,7 @@
> </span
><span id="Quux"
><span class="annot"
- ><a href="Constructors.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-var"
>Quux</span
></a
@@ -114,7 +114,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -141,7 +141,7 @@
> </span
><span id="Norf"
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-var"
>Norf</span
></a
@@ -155,7 +155,7 @@
> </span
><span id="Norf"
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-var"
>Norf</span
></a
@@ -166,7 +166,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -178,7 +178,7 @@
><span class="hs-special"
>[</span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -190,7 +190,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -213,7 +213,7 @@
><span id="line-13"
></span
><span class="annot"
- ><a href="Constructors.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -223,7 +223,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-type"
>baz</span
></a
@@ -233,7 +233,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-type"
>quux</span
></a
@@ -245,7 +245,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -260,7 +260,7 @@
><span class="annottext"
>bar :: Foo
</span
- ><a href="Constructors.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var"
>bar</span
></a
@@ -276,7 +276,7 @@
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -291,7 +291,7 @@
><span class="annottext"
>baz :: Foo
</span
- ><a href="Constructors.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var"
>baz</span
></a
@@ -307,7 +307,7 @@
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -322,7 +322,7 @@
><span class="annottext"
>quux :: Foo
</span
- ><a href="Constructors.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var hs-var"
>quux</span
></a
@@ -338,7 +338,7 @@
><span class="annottext"
>Foo -> Int -> Foo
</span
- ><a href="Constructors.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-var"
>Quux</span
></a
@@ -349,7 +349,7 @@
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -379,7 +379,7 @@
><span id="line-19"
></span
><span class="annot"
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-type"
>unfoo</span
></a
@@ -391,7 +391,7 @@
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -416,7 +416,7 @@
><span class="annottext"
>unfoo :: Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var hs-var"
>unfoo</span
></a
@@ -428,7 +428,7 @@
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -452,7 +452,7 @@
><span id="line-21"
></span
><span class="annot"
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -463,7 +463,7 @@
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -487,7 +487,7 @@
><span id="line-22"
></span
><span class="annot"
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -497,7 +497,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -580,7 +580,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -612,7 +612,7 @@ forall a. Num a => a -> a -> a
><span id="line-25"
></span
><span class="annot"
- ><a href="Constructors.html#unnorf"
+ ><a href="#unnorf"
><span class="hs-identifier hs-type"
>unnorf</span
></a
@@ -624,7 +624,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -638,7 +638,7 @@ forall a. Num a => a -> a -> a
><span class="hs-special"
>[</span
><span class="annot"
- ><a href="Constructors.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -655,7 +655,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>unnorf :: Norf -> [Foo]
</span
- ><a href="Constructors.html#unnorf"
+ ><a href="#unnorf"
><span class="hs-identifier hs-var hs-var"
>unnorf</span
></a
@@ -666,7 +666,7 @@ forall a. Num a => a -> a -> a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -679,7 +679,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -707,7 +707,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -737,7 +737,7 @@ forall a. Num a => a -> a -> a
><span id="line-27"
></span
><span class="annot"
- ><a href="Constructors.html#unnorf"
+ ><a href="#unnorf"
><span class="hs-identifier hs-var"
>unnorf</span
></a
@@ -747,7 +747,7 @@ forall a. Num a => a -> a -> a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -760,7 +760,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -788,7 +788,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo
</span
- ><a href="Constructors.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -828,7 +828,7 @@ forall a. [a] -> [a]
><span id="line-28"
></span
><span class="annot"
- ><a href="Constructors.html#unnorf"
+ ><a href="#unnorf"
><span class="hs-identifier hs-var"
>unnorf</span
></a
@@ -872,7 +872,7 @@ forall a. HasCallStack => a
><span id="line-31"
></span
><span class="annot"
- ><a href="Constructors.html#unnorf%27"
+ ><a href="#unnorf%27"
><span class="hs-identifier hs-type"
>unnorf'</span
></a
@@ -884,7 +884,7 @@ forall a. HasCallStack => a
><span
> </span
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -909,7 +909,7 @@ forall a. HasCallStack => a
><span class="annottext"
>unnorf' :: Norf -> Int
</span
- ><a href="Constructors.html#unnorf%27"
+ ><a href="#unnorf%27"
><span class="hs-identifier hs-var hs-var"
>unnorf'</span
></a
@@ -933,7 +933,7 @@ forall a. HasCallStack => a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -958,7 +958,7 @@ forall a. HasCallStack => a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -1018,7 +1018,7 @@ forall a. HasCallStack => a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Constructors.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -1108,7 +1108,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -1206,7 +1206,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -1238,7 +1238,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -1270,7 +1270,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -1345,7 +1345,7 @@ forall a b. (a -> b) -> [a] -> [b]
><span class="annottext"
>Foo -> Int
</span
- ><a href="Constructors.html#unfoo"
+ ><a href="#unfoo"
><span class="hs-identifier hs-var"
>unfoo</span
></a
@@ -1366,7 +1366,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c
><span class="annottext"
>Norf -> [Foo]
</span
- ><a href="Constructors.html#unnorf"
+ ><a href="#unnorf"
><span class="hs-identifier hs-var"
>unnorf</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Identifiers.html
=====================================
@@ -43,7 +43,7 @@
><span id="line-5"
></span
><span class="annot"
- ><a href="Identifiers.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-type"
>foo</span
></a
@@ -53,7 +53,7 @@
><span
> </span
><span class="annot"
- ><a href="Identifiers.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -63,7 +63,7 @@
><span
> </span
><span class="annot"
- ><a href="Identifiers.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-type"
>baz</span
></a
@@ -108,7 +108,7 @@
><span class="annottext"
>foo :: Int -> Int -> Int
</span
- ><a href="Identifiers.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var hs-var"
>foo</span
></a
@@ -192,7 +192,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var"
>bar</span
></a
@@ -271,7 +271,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>bar :: Int -> Int -> Int
</span
- ><a href="Identifiers.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var"
>bar</span
></a
@@ -355,7 +355,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var"
>baz</span
></a
@@ -434,7 +434,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>baz :: Int -> Int -> Int
</span
- ><a href="Identifiers.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var"
>baz</span
></a
@@ -576,7 +576,7 @@ forall a. Num a => a -> a -> a
><span id="line-10"
></span
><span class="annot"
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-type"
>quux</span
></a
@@ -611,7 +611,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>quux :: Int -> Int
</span
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var hs-var"
>quux</span
></a
@@ -640,7 +640,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var"
>foo</span
></a
@@ -653,7 +653,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var"
>bar</span
></a
@@ -690,7 +690,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var"
>bar</span
></a
@@ -730,7 +730,7 @@ forall a. Num a => a -> a -> a
><span id="line-13"
></span
><span class="annot"
- ><a href="Identifiers.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-type"
>norf</span
></a
@@ -785,7 +785,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>norf :: Int -> Int -> Int -> Int
</span
- ><a href="Identifiers.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var hs-var"
>norf</span
></a
@@ -879,7 +879,7 @@ forall a. Ord a => a -> a -> Bool
><span class="annottext"
>Int -> Int
</span
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -944,7 +944,7 @@ forall a. Ord a => a -> a -> Bool
><span class="annottext"
>Int -> Int
</span
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -1009,7 +1009,7 @@ forall a. Ord a => a -> a -> Bool
><span class="annottext"
>Int -> Int
</span
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -1053,7 +1053,7 @@ forall a. Ord a => a -> a -> Bool
><span class="annottext"
>Int -> Int -> Int -> Int
</span
- ><a href="Identifiers.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var"
>norf</span
></a
@@ -1125,7 +1125,7 @@ forall a. Ord a => a -> a -> Bool
><span id="line-21"
></span
><span class="annot"
- ><a href="Identifiers.html#main"
+ ><a href="#main"
><span class="hs-identifier hs-type"
>main</span
></a
@@ -1156,7 +1156,7 @@ forall a. Ord a => a -> a -> Bool
><span class="annottext"
>main :: IO ()
</span
- ><a href="Identifiers.html#main"
+ ><a href="#main"
><span class="hs-identifier hs-var hs-var"
>main</span
></a
@@ -1220,7 +1220,7 @@ forall a b. (a -> b) -> a -> b
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="Identifiers.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var"
>foo</span
></a
@@ -1297,7 +1297,7 @@ forall a b. (a -> b) -> a -> b
><span class="annottext"
>Int -> Int
</span
- ><a href="Identifiers.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var"
>quux</span
></a
@@ -1363,7 +1363,7 @@ forall a b. (a -> b) -> a -> b
><span class="annottext"
>Int -> Int -> Int -> Int
</span
- ><a href="Identifiers.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var"
>Identifiers.norf</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/LinkingIdentifiers.html
=====================================
@@ -73,7 +73,7 @@
><span id="line-9"
></span
><span class="annot"
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-identifier hs-type"
>ident</span
></a
@@ -131,7 +131,7 @@
><span class="annottext"
>ident :: Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-operator hs-var hs-var"
>`ident`</span
></a
@@ -169,7 +169,7 @@
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-operator hs-var"
>`ident`</span
></a
@@ -214,7 +214,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-operator hs-var"
>`LinkingIdentifiers.ident`</span
></a
@@ -236,7 +236,7 @@ forall a. Num a => a -> a -> a
><span id="line-11"
></span
><span class="annot"
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-identifier hs-var"
>ident</span
></a
@@ -273,7 +273,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-identifier hs-var"
>ident</span
></a
@@ -314,7 +314,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#ident"
+ ><a href="#ident"
><span class="hs-identifier hs-var"
>LinkingIdentifiers.ident</span
></a
@@ -350,7 +350,7 @@ forall a. Num a => a -> a -> a
><span id="line-13"
></span
><span class="annot"
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-type"
>(++:++)</span
></a
@@ -408,7 +408,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>++:++ :: Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var hs-var"
>++:++</span
></a
@@ -446,7 +446,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var"
>++:++</span
></a
@@ -491,7 +491,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var"
>LinkingIdentifiers.++:++</span
></a
@@ -513,7 +513,7 @@ forall a. Num a => a -> a -> a
><span id="line-15"
></span
><span class="annot"
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var"
>(++:++)</span
></a
@@ -550,7 +550,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var"
>(++:++)</span
></a
@@ -591,7 +591,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>Int -> Int -> Int
</span
- ><a href="LinkingIdentifiers.html#%2B%2B%3A%2B%2B"
+ ><a href="#%2B%2B%3A%2B%2B"
><span class="hs-operator hs-var"
>(LinkingIdentifiers.++:++)</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Literals.html
=====================================
@@ -43,7 +43,7 @@
><span id="line-5"
></span
><span class="annot"
- ><a href="Literals.html#str"
+ ><a href="#str"
><span class="hs-identifier hs-type"
>str</span
></a
@@ -68,7 +68,7 @@
><span class="annottext"
>str :: String
</span
- ><a href="Literals.html#str"
+ ><a href="#str"
><span class="hs-identifier hs-var hs-var"
>str</span
></a
@@ -99,7 +99,7 @@
></span
><span id=""
><span class="annot"
- ><a href="Literals.html#num"
+ ><a href="#num"
><span class="hs-identifier hs-type"
>num</span
></a
@@ -145,7 +145,7 @@
><span class="annottext"
>num :: forall a. Num a => a
</span
- ><a href="Literals.html#num"
+ ><a href="#num"
><span class="hs-identifier hs-var hs-var"
>num</span
></a
@@ -252,7 +252,7 @@ forall a. Num a => a -> a -> a
></span
><span id=""
><span class="annot"
- ><a href="Literals.html#frac"
+ ><a href="#frac"
><span class="hs-identifier hs-type"
>frac</span
></a
@@ -298,7 +298,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>frac :: forall a. Fractional a => a
</span
- ><a href="Literals.html#frac"
+ ><a href="#frac"
><span class="hs-identifier hs-var hs-var"
>frac</span
></a
@@ -329,7 +329,7 @@ forall a. Num a => a -> a -> a
></span
><span id=""
><span class="annot"
- ><a href="Literals.html#list"
+ ><a href="#list"
><span class="hs-identifier hs-type"
>list</span
></a
@@ -373,7 +373,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>list :: forall a. [[[[a]]]]
</span
- ><a href="Literals.html#list"
+ ><a href="#list"
><span class="hs-identifier hs-var hs-var"
>list</span
></a
@@ -432,7 +432,7 @@ forall a. Num a => a -> a -> a
><span id="line-17"
></span
><span class="annot"
- ><a href="Literals.html#pair"
+ ><a href="#pair"
><span class="hs-identifier hs-type"
>pair</span
></a
@@ -497,7 +497,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>pair :: ((), ((), (), ()), ())
</span
- ><a href="Literals.html#pair"
+ ><a href="#pair"
><span class="hs-identifier hs-var hs-var"
>pair</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Operators.html
=====================================
@@ -39,7 +39,7 @@
></span
><span id=""
><span class="annot"
- ><a href="Operators.html#%2B%2B%2B"
+ ><a href="#%2B%2B%2B"
><span class="hs-operator hs-type"
>(+++)</span
></a
@@ -116,7 +116,7 @@
><span class="annottext"
>+++ :: forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2B%2B%2B"
+ ><a href="#%2B%2B%2B"
><span class="hs-operator hs-var hs-var"
>+++</span
></a
@@ -204,7 +204,7 @@ forall a. [a] -> [a] -> [a]
></span
><span id=""
><span class="annot"
- ><a href="Operators.html#%24%24%24"
+ ><a href="#%24%24%24"
><span class="hs-operator hs-type"
>($$$)</span
></a
@@ -281,7 +281,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>$$$ :: forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%24%24%24"
+ ><a href="#%24%24%24"
><span class="hs-operator hs-var hs-var"
>$$$</span
></a
@@ -322,7 +322,7 @@ forall a. [a] -> [a] -> [a]
>[a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2B%2B%2B"
+ ><a href="#%2B%2B%2B"
><span class="hs-operator hs-var"
>+++</span
></a
@@ -350,7 +350,7 @@ forall a. [a] -> [a] -> [a]
></span
><span id=""
><span class="annot"
- ><a href="Operators.html#%2A%2A%2A"
+ ><a href="#%2A%2A%2A"
><span class="hs-operator hs-type"
>(***)</span
></a
@@ -414,7 +414,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>*** :: forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2A%2A%2A"
+ ><a href="#%2A%2A%2A"
><span class="hs-operator hs-var hs-var"
>(***)</span
></a
@@ -460,7 +460,7 @@ forall a. [a] -> [a] -> [a]
><span id="line-12"
></span
><span class="annot"
- ><a href="Operators.html#%2A%2A%2A"
+ ><a href="#%2A%2A%2A"
><span class="hs-operator hs-var"
>(***)</span
></a
@@ -528,7 +528,7 @@ forall a. [a] -> [a] -> [a]
>[a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2B%2B%2B"
+ ><a href="#%2B%2B%2B"
><span class="hs-operator hs-var"
>+++</span
></a
@@ -553,7 +553,7 @@ forall a. [a] -> [a] -> [a]
>[a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2A%2A%2A"
+ ><a href="#%2A%2A%2A"
><span class="hs-operator hs-var"
>***</span
></a
@@ -583,7 +583,7 @@ forall a. [a] -> [a] -> [a]
></span
><span id=""
><span class="annot"
- ><a href="Operators.html#%2A%2F%5C%2A"
+ ><a href="#%2A%2F%5C%2A"
><span class="hs-operator hs-type"
>(*/\*)</span
></a
@@ -664,7 +664,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>*/\* :: forall a. [[a]] -> [a] -> [a]
</span
- ><a href="Operators.html#%2A%2F%5C%2A"
+ ><a href="#%2A%2F%5C%2A"
><span class="hs-operator hs-var hs-var"
>*/\*</span
></a
@@ -706,7 +706,7 @@ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
>[a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2A%2A%2A"
+ ><a href="#%2A%2A%2A"
><span class="hs-operator hs-var"
>***</span
></a
@@ -747,7 +747,7 @@ forall a. [a] -> [a] -> [a]
></span
><span id=""
><span class="annot"
- ><a href="Operators.html#%2A%2A%2F%5C%2A%2A"
+ ><a href="#%2A%2A%2F%5C%2A%2A"
><span class="hs-operator hs-type"
>(**/\**)</span
></a
@@ -836,7 +836,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>**/\** :: forall a. [[a]] -> [[a]] -> [[a]]
</span
- ><a href="Operators.html#%2A%2A%2F%5C%2A%2A"
+ ><a href="#%2A%2A%2F%5C%2A%2A"
><span class="hs-operator hs-var hs-var"
>**/\**</span
></a
@@ -876,7 +876,7 @@ forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
>[[a]] -> [a] -> [a]
forall a. [[a]] -> [a] -> [a]
</span
- ><a href="Operators.html#%2A%2F%5C%2A"
+ ><a href="#%2A%2F%5C%2A"
><span class="hs-operator hs-var"
>(*/\*)</span
></a
@@ -901,7 +901,7 @@ forall a. [[a]] -> [a] -> [a]
>[[a]] -> [[a]] -> [[a]]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%2B%2B%2B"
+ ><a href="#%2B%2B%2B"
><span class="hs-operator hs-var"
>+++</span
></a
@@ -939,7 +939,7 @@ forall a. [a] -> [a] -> [a]
>[[a]] -> [[a]] -> [[a]]
forall a. [a] -> [a] -> [a]
</span
- ><a href="Operators.html#%24%24%24"
+ ><a href="#%24%24%24"
><span class="hs-operator hs-var"
>$$$</span
></a
@@ -971,7 +971,7 @@ forall a. [a] -> [a] -> [a]
><span id=""
><span id=""
><span class="annot"
- ><a href="Operators.html#%23.%23"
+ ><a href="#%23.%23"
><span class="hs-operator hs-type"
>(#.#)</span
></a
@@ -1068,7 +1068,7 @@ forall a. [a] -> [a] -> [a]
><span class="annottext"
>#.# :: forall a b c. a -> b -> c -> (a, b)
</span
- ><a href="Operators.html#%23.%23"
+ ><a href="#%23.%23"
><span class="hs-operator hs-var hs-var"
>#.#</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Polymorphism.html
=====================================
@@ -68,7 +68,7 @@
></span
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-type"
>foo</span
></a
@@ -120,7 +120,7 @@
><span class="annottext"
>foo :: forall a. a -> a -> a
</span
- ><a href="Polymorphism.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var hs-var"
>foo</span
></a
@@ -151,7 +151,7 @@ forall a. HasCallStack => a
><span id="line-12"
></span
><span class="annot"
- ><a href="Polymorphism.html#foo%27"
+ ><a href="#foo%27"
><span class="hs-identifier hs-type"
>foo'</span
></a
@@ -218,7 +218,7 @@ forall a. HasCallStack => a
><span class="annottext"
>foo' :: forall a. a -> a -> a
</span
- ><a href="Polymorphism.html#foo%27"
+ ><a href="#foo%27"
><span class="hs-identifier hs-var hs-var"
>foo'</span
></a
@@ -251,7 +251,7 @@ forall a. HasCallStack => a
><span id=""
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -318,7 +318,7 @@ forall a. HasCallStack => a
><span class="annottext"
>bar :: forall a b. a -> b -> (a, b)
</span
- ><a href="Polymorphism.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var"
>bar</span
></a
@@ -349,7 +349,7 @@ forall a. HasCallStack => a
><span id="line-18"
></span
><span class="annot"
- ><a href="Polymorphism.html#bar%27"
+ ><a href="#bar%27"
><span class="hs-identifier hs-type"
>bar'</span
></a
@@ -440,7 +440,7 @@ forall a. HasCallStack => a
><span class="annottext"
>bar' :: forall a b. a -> b -> (a, b)
</span
- ><a href="Polymorphism.html#bar%27"
+ ><a href="#bar%27"
><span class="hs-identifier hs-var hs-var"
>bar'</span
></a
@@ -473,7 +473,7 @@ forall a. HasCallStack => a
><span id=""
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-type"
>baz</span
></a
@@ -570,7 +570,7 @@ forall a. HasCallStack => a
><span class="annottext"
>baz :: forall a b. a -> (a -> [a -> a] -> b) -> b
</span
- ><a href="Polymorphism.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var"
>baz</span
></a
@@ -601,7 +601,7 @@ forall a. HasCallStack => a
><span id="line-24"
></span
><span class="annot"
- ><a href="Polymorphism.html#baz%27"
+ ><a href="#baz%27"
><span class="hs-identifier hs-type"
>baz'</span
></a
@@ -722,7 +722,7 @@ forall a. HasCallStack => a
><span class="annottext"
>baz' :: forall a b. a -> (a -> [a -> a] -> b) -> b
</span
- ><a href="Polymorphism.html#baz%27"
+ ><a href="#baz%27"
><span class="hs-identifier hs-var hs-var"
>baz'</span
></a
@@ -754,7 +754,7 @@ forall a. HasCallStack => a
></span
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-type"
>quux</span
></a
@@ -838,7 +838,7 @@ forall a. HasCallStack => a
><span class="annottext"
>quux :: forall a. a -> (forall a. a -> a) -> a
</span
- ><a href="Polymorphism.html#quux"
+ ><a href="#quux"
><span class="hs-identifier hs-var hs-var"
>quux</span
></a
@@ -908,7 +908,7 @@ forall a. a -> a
><span id="line-30"
></span
><span class="annot"
- ><a href="Polymorphism.html#quux%27"
+ ><a href="#quux%27"
><span class="hs-identifier hs-type"
>quux'</span
></a
@@ -1007,7 +1007,7 @@ forall a. a -> a
><span class="annottext"
>quux' :: forall a. a -> (forall a. a -> a) -> a
</span
- ><a href="Polymorphism.html#quux%27"
+ ><a href="#quux%27"
><span class="hs-identifier hs-var hs-var"
>quux'</span
></a
@@ -1083,7 +1083,7 @@ forall a. a -> a
></span
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#num"
+ ><a href="#num"
><span class="hs-identifier hs-type"
>num</span
></a
@@ -1153,7 +1153,7 @@ forall a. a -> a
><span class="annottext"
>num :: forall a. Num a => a -> a -> a
</span
- ><a href="Polymorphism.html#num"
+ ><a href="#num"
><span class="hs-identifier hs-var hs-var"
>num</span
></a
@@ -1184,7 +1184,7 @@ forall a. HasCallStack => a
><span id="line-37"
></span
><span class="annot"
- ><a href="Polymorphism.html#num%27"
+ ><a href="#num%27"
><span class="hs-identifier hs-type"
>num'</span
></a
@@ -1269,7 +1269,7 @@ forall a. HasCallStack => a
><span class="annottext"
>num' :: forall a. Num a => a -> a -> a
</span
- ><a href="Polymorphism.html#num%27"
+ ><a href="#num%27"
><span class="hs-identifier hs-var hs-var"
>num'</span
></a
@@ -1302,7 +1302,7 @@ forall a. HasCallStack => a
><span id=""
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#eq"
+ ><a href="#eq"
><span class="hs-identifier hs-type"
>eq</span
></a
@@ -1415,7 +1415,7 @@ forall a. HasCallStack => a
><span class="annottext"
>eq :: forall a b. (Eq a, Eq b) => [a] -> [b] -> (a, b)
</span
- ><a href="Polymorphism.html#eq"
+ ><a href="#eq"
><span class="hs-identifier hs-var hs-var"
>eq</span
></a
@@ -1446,7 +1446,7 @@ forall a. HasCallStack => a
><span id="line-43"
></span
><span class="annot"
- ><a href="Polymorphism.html#eq%27"
+ ><a href="#eq%27"
><span class="hs-identifier hs-type"
>eq'</span
></a
@@ -1583,7 +1583,7 @@ forall a. HasCallStack => a
><span class="annottext"
>eq' :: forall a b. (Eq a, Eq b) => [a] -> [b] -> (a, b)
</span
- ><a href="Polymorphism.html#eq%27"
+ ><a href="#eq%27"
><span class="hs-identifier hs-var hs-var"
>eq'</span
></a
@@ -1616,7 +1616,7 @@ forall a. HasCallStack => a
><span id=""
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#mon"
+ ><a href="#mon"
><span class="hs-identifier hs-type"
>mon</span
></a
@@ -1707,7 +1707,7 @@ forall a. HasCallStack => a
><span class="annottext"
>mon :: forall (m :: * -> *) a. Monad m => (a -> m a) -> m a
</span
- ><a href="Polymorphism.html#mon"
+ ><a href="#mon"
><span class="hs-identifier hs-var hs-var"
>mon</span
></a
@@ -1738,7 +1738,7 @@ forall a. HasCallStack => a
><span id="line-49"
></span
><span class="annot"
- ><a href="Polymorphism.html#mon%27"
+ ><a href="#mon%27"
><span class="hs-identifier hs-type"
>mon'</span
></a
@@ -1853,7 +1853,7 @@ forall a. HasCallStack => a
><span class="annottext"
>mon' :: forall (m :: * -> *) a. Monad m => (a -> m a) -> m a
</span
- ><a href="Polymorphism.html#mon%27"
+ ><a href="#mon%27"
><span class="hs-identifier hs-var hs-var"
>mon'</span
></a
@@ -1890,7 +1890,7 @@ forall a. HasCallStack => a
></span
><span id=""
><span class="annot"
- ><a href="Polymorphism.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-type"
>norf</span
></a
@@ -1992,7 +1992,7 @@ forall a. HasCallStack => a
><span class="annottext"
>norf :: forall a. a -> (forall a. Ord a => a -> a) -> a
</span
- ><a href="Polymorphism.html#norf"
+ ><a href="#norf"
><span class="hs-identifier hs-var hs-var"
>norf</span
></a
@@ -2050,7 +2050,7 @@ forall a. HasCallStack => a
><span id="line-56"
></span
><span class="annot"
- ><a href="Polymorphism.html#norf%27"
+ ><a href="#norf%27"
><span class="hs-identifier hs-type"
>norf'</span
></a
@@ -2167,7 +2167,7 @@ forall a. HasCallStack => a
><span class="annottext"
>norf' :: forall a. a -> (forall a. Ord a => a -> a) -> a
</span
- ><a href="Polymorphism.html#norf%27"
+ ><a href="#norf%27"
><span class="hs-identifier hs-var hs-var"
>norf'</span
></a
@@ -2230,7 +2230,7 @@ forall a. HasCallStack => a
><span id="line-60"
></span
><span class="annot"
- ><a href="Polymorphism.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-type"
>plugh</span
></a
@@ -2285,7 +2285,7 @@ forall a. HasCallStack => a
><span class="annottext"
>plugh :: forall a. a -> a
</span
- ><a href="Polymorphism.html#plugh"
+ ><a href="#plugh"
><span class="hs-identifier hs-var hs-var"
>plugh</span
></a
@@ -2342,7 +2342,7 @@ forall a. HasCallStack => a
><span id="line-63"
></span
><span class="annot"
- ><a href="Polymorphism.html#thud"
+ ><a href="#thud"
><span class="hs-identifier hs-type"
>thud</span
></a
@@ -2449,7 +2449,7 @@ forall a. HasCallStack => a
><span class="annottext"
>thud :: forall a b. (a -> b) -> a -> (a, b)
</span
- ><a href="Polymorphism.html#thud"
+ ><a href="#thud"
><span class="hs-identifier hs-var hs-var"
>thud</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/PositionPragmas.html
=====================================
@@ -57,7 +57,7 @@
><span id="line-9"
></span
><span class="annot"
- ><a href="PositionPragmas.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-type"
>foo</span
></a
@@ -82,7 +82,7 @@
><span class="annottext"
>foo :: String
</span
- ><a href="PositionPragmas.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var hs-var"
>foo</span
></a
@@ -98,7 +98,7 @@
><span class="annottext"
>String
</span
- ><a href="PositionPragmas.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var"
>bar</span
></a
@@ -126,7 +126,7 @@
><span id="line-24"
></span
><span class="annot"
- ><a href="PositionPragmas.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-type"
>bar</span
></a
@@ -151,7 +151,7 @@
><span class="annottext"
>bar :: String
</span
- ><a href="PositionPragmas.html#bar"
+ ><a href="#bar"
><span class="hs-identifier hs-var hs-var"
>bar</span
></a
@@ -167,7 +167,7 @@
><span class="annottext"
>String
</span
- ><a href="PositionPragmas.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var"
>foo</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Quasiquoter.html
=====================================
@@ -30,7 +30,7 @@
><span
> </span
><span class="annot"
- ><a href="Quasiquoter.html#string"
+ ><a href="#string"
><span class="hs-identifier"
>string</span
></a
@@ -94,7 +94,7 @@
><span id="line-8"
></span
><span class="annot"
- ><a href="Quasiquoter.html#string"
+ ><a href="#string"
><span class="hs-identifier hs-type"
>string</span
></a
@@ -119,7 +119,7 @@
><span class="annottext"
>string :: QuasiQuoter
</span
- ><a href="Quasiquoter.html#string"
+ ><a href="#string"
><span class="hs-identifier hs-var hs-var"
>string</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Records.html
=====================================
@@ -72,7 +72,7 @@
> </span
><span id="Point"
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-var"
>Point</span
></a
@@ -86,7 +86,7 @@
> </span
><span id="Point"
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-var"
>Point</span
></a
@@ -108,7 +108,7 @@
><span class="annottext"
>Point -> Int
</span
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var hs-var"
>x</span
></a
@@ -142,7 +142,7 @@
><span class="annottext"
>Point -> Int
</span
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var hs-var"
>y</span
></a
@@ -185,7 +185,7 @@
><span id="line-15"
></span
><span class="annot"
- ><a href="Records.html#point"
+ ><a href="#point"
><span class="hs-identifier hs-type"
>point</span
></a
@@ -217,7 +217,7 @@
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -232,7 +232,7 @@
><span class="annottext"
>point :: Int -> Int -> Point
</span
- ><a href="Records.html#point"
+ ><a href="#point"
><span class="hs-identifier hs-var hs-var"
>point</span
></a
@@ -271,7 +271,7 @@
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -286,7 +286,7 @@
><span class="annottext"
>x :: Int
</span
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var"
>x</span
></a
@@ -314,7 +314,7 @@
><span class="annottext"
>y :: Int
</span
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var"
>y</span
></a
@@ -354,7 +354,7 @@
><span id="line-19"
></span
><span class="annot"
- ><a href="Records.html#lengthSqr"
+ ><a href="#lengthSqr"
><span class="hs-identifier hs-type"
>lengthSqr</span
></a
@@ -366,7 +366,7 @@
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -391,7 +391,7 @@
><span class="annottext"
>lengthSqr :: Point -> Int
</span
- ><a href="Records.html#lengthSqr"
+ ><a href="#lengthSqr"
><span class="hs-identifier hs-var hs-var"
>lengthSqr</span
></a
@@ -402,7 +402,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -417,7 +417,7 @@
><span class="annottext"
>x :: Point -> Int
</span
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var"
>x</span
></a
@@ -447,7 +447,7 @@
><span class="annottext"
>y :: Point -> Int
</span
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var"
>y</span
></a
@@ -564,7 +564,7 @@ forall a. Num a => a -> a -> a
><span id="line-22"
></span
><span class="annot"
- ><a href="Records.html#lengthSqr%27"
+ ><a href="#lengthSqr%27"
><span class="hs-identifier hs-type"
>lengthSqr'</span
></a
@@ -576,7 +576,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -601,7 +601,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>lengthSqr' :: Point -> Int
</span
- ><a href="Records.html#lengthSqr%27"
+ ><a href="#lengthSqr%27"
><span class="hs-identifier hs-var hs-var"
>lengthSqr'</span
></a
@@ -612,7 +612,7 @@ forall a. Num a => a -> a -> a
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -630,7 +630,7 @@ forall a. Num a => a -> a -> a
x :: Point -> Int
x :: Int
</span
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var hs-var"
>x</span
></a
@@ -647,7 +647,7 @@ x :: Int
y :: Point -> Int
y :: Int
</span
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var hs-var"
>y</span
></a
@@ -753,7 +753,7 @@ forall a. Num a => a -> a -> a
><span id="line-26"
></span
><span class="annot"
- ><a href="Records.html#translateX"
+ ><a href="#translateX"
><span class="hs-identifier hs-type"
>translateX</span
></a
@@ -763,7 +763,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#translateY"
+ ><a href="#translateY"
><span class="hs-identifier hs-type"
>translateY</span
></a
@@ -775,7 +775,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -797,7 +797,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -812,7 +812,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>translateX :: Point -> Int -> Point
</span
- ><a href="Records.html#translateX"
+ ><a href="#translateX"
><span class="hs-identifier hs-var hs-var"
>translateX</span
></a
@@ -866,7 +866,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var"
>x</span
></a
@@ -878,7 +878,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var"
>x</span
></a
@@ -919,7 +919,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>translateY :: Point -> Int -> Point
</span
- ><a href="Records.html#translateY"
+ ><a href="#translateY"
><span class="hs-identifier hs-var hs-var"
>translateY</span
></a
@@ -973,7 +973,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var"
>y</span
></a
@@ -985,7 +985,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var"
>y</span
></a
@@ -1027,7 +1027,7 @@ forall a. Num a => a -> a -> a
><span id="line-30"
></span
><span class="annot"
- ><a href="Records.html#translate"
+ ><a href="#translate"
><span class="hs-identifier hs-type"
>translate</span
></a
@@ -1059,7 +1059,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -1071,7 +1071,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -1086,7 +1086,7 @@ forall a. Num a => a -> a -> a
><span class="annottext"
>translate :: Int -> Int -> Point -> Point
</span
- ><a href="Records.html#translate"
+ ><a href="#translate"
><span class="hs-identifier hs-var hs-var"
>translate</span
></a
@@ -1261,7 +1261,7 @@ forall a. Num a => a -> a -> a
><span
> </span
><span class="annot"
- ><a href="Records.html#Point"
+ ><a href="#Point"
><span class="hs-identifier hs-type"
>Point</span
></a
@@ -1278,7 +1278,7 @@ y :: Point -> Int
x :: Int
y :: Int
</span
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-glyph hs-var hs-var hs-var hs-var"
>..</span
></a
@@ -1309,7 +1309,7 @@ y :: Int
><span
> </span
><span class="annot"
- ><a href="Records.html#x"
+ ><a href="#x"
><span class="hs-identifier hs-var"
>x</span
></a
@@ -1345,7 +1345,7 @@ y :: Int
><span
> </span
><span class="annot"
- ><a href="Records.html#y"
+ ><a href="#y"
><span class="hs-identifier hs-var"
>y</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
=====================================
@@ -68,7 +68,7 @@
><span id="line-8"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#aDecl"
+ ><a href="#aDecl"
><span class="hs-identifier hs-type"
>aDecl</span
></a
@@ -93,7 +93,7 @@
><span class="annottext"
>aDecl :: DecsQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aDecl"
+ ><a href="#aDecl"
><span class="hs-identifier hs-var hs-var"
>aDecl</span
></a
@@ -132,7 +132,7 @@
><span class="annottext"
>TypeQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aType"
+ ><a href="#aType"
><span class="hs-identifier hs-var"
>aType</span
></a
@@ -190,7 +190,7 @@
><span class="annottext"
>PatQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aPattern"
+ ><a href="#aPattern"
><span class="hs-identifier hs-var"
>aPattern</span
></a
@@ -207,7 +207,7 @@
><span class="annottext"
>ExpQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#anExpression"
+ ><a href="#anExpression"
><span class="hs-identifier hs-var"
>anExpression</span
></a
@@ -232,7 +232,7 @@
><span id="line-14"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#aPattern"
+ ><a href="#aPattern"
><span class="hs-identifier hs-type"
>aPattern</span
></a
@@ -257,7 +257,7 @@
><span class="annottext"
>aPattern :: PatQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aPattern"
+ ><a href="#aPattern"
><span class="hs-identifier hs-var hs-var"
>aPattern</span
></a
@@ -365,7 +365,7 @@
><span class="annottext"
>PatQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aNumberPattern"
+ ><a href="#aNumberPattern"
><span class="hs-identifier hs-var"
>aNumberPattern</span
></a
@@ -409,7 +409,7 @@
><span id="line-23"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#aNumberPattern"
+ ><a href="#aNumberPattern"
><span class="hs-identifier hs-type"
>aNumberPattern</span
></a
@@ -434,7 +434,7 @@
><span class="annottext"
>aNumberPattern :: PatQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aNumberPattern"
+ ><a href="#aNumberPattern"
><span class="hs-identifier hs-var hs-var"
>aNumberPattern</span
></a
@@ -499,7 +499,7 @@
><span id="line-28"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#anExpression"
+ ><a href="#anExpression"
><span class="hs-identifier hs-type"
>anExpression</span
></a
@@ -509,7 +509,7 @@
><span
> </span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#anExpression2"
+ ><a href="#anExpression2"
><span class="hs-identifier hs-type"
>anExpression2</span
></a
@@ -534,7 +534,7 @@
><span class="annottext"
>anExpression :: ExpQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#anExpression"
+ ><a href="#anExpression"
><span class="hs-identifier hs-var hs-var"
>anExpression</span
></a
@@ -579,7 +579,7 @@
><span class="annottext"
>ExpQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#anExpression2"
+ ><a href="#anExpression2"
><span class="hs-identifier hs-var"
>anExpression2</span
></a
@@ -617,7 +617,7 @@
><span class="annottext"
>anExpression2 :: ExpQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#anExpression2"
+ ><a href="#anExpression2"
><span class="hs-identifier hs-var hs-var"
>anExpression2</span
></a
@@ -674,7 +674,7 @@
><span id="line-34"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#aType"
+ ><a href="#aType"
><span class="hs-identifier hs-type"
>aType</span
></a
@@ -699,7 +699,7 @@
><span class="annottext"
>aType :: TypeQ
</span
- ><a href="TemplateHaskellQuasiquotes.html#aType"
+ ><a href="#aType"
><span class="hs-identifier hs-var hs-var"
>aType</span
></a
@@ -764,7 +764,7 @@
><span id="line-39"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#typedExpr1"
+ ><a href="#typedExpr1"
><span class="hs-identifier hs-type"
>typedExpr1</span
></a
@@ -801,7 +801,7 @@
><span class="annottext"
>typedExpr1 :: Code Q ()
</span
- ><a href="TemplateHaskellQuasiquotes.html#typedExpr1"
+ ><a href="#typedExpr1"
><span class="hs-identifier hs-var hs-var"
>typedExpr1</span
></a
@@ -836,7 +836,7 @@
><span id="line-42"
></span
><span class="annot"
- ><a href="TemplateHaskellQuasiquotes.html#typedExpr"
+ ><a href="#typedExpr"
><span class="hs-identifier hs-type"
>typedExpr</span
></a
@@ -873,7 +873,7 @@
><span class="annottext"
>typedExpr :: Code Q ()
</span
- ><a href="TemplateHaskellQuasiquotes.html#typedExpr"
+ ><a href="#typedExpr"
><span class="hs-identifier hs-var hs-var"
>typedExpr</span
></a
@@ -907,7 +907,7 @@ forall a b. a -> b -> a
><span class="annottext"
>Code Q ()
</span
- ><a href="TemplateHaskellQuasiquotes.html#typedExpr1"
+ ><a href="#typedExpr1"
><span class="hs-identifier hs-var"
>typedExpr1</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/TemplateHaskellSplices.html
=====================================
@@ -89,7 +89,7 @@
><span class="annottext"
>foo :: Integer
</span
- ><a href="TemplateHaskellSplices.html#foo"
+ ><a href="#foo"
><span class="hs-identifier hs-var hs-var"
>foo</span
></a
@@ -138,7 +138,7 @@ forall a. a -> a
><span class="annottext"
>pat :: [(a, String)] -> ()
</span
- ><a href="TemplateHaskellSplices.html#pat"
+ ><a href="#pat"
><span class="hs-identifier hs-var hs-var"
>pat</span
></a
@@ -195,7 +195,7 @@ forall a. a -> a
><span class="annottext"
>qux :: ()
</span
- ><a href="TemplateHaskellSplices.html#qux"
+ ><a href="#qux"
><span class="hs-identifier hs-var hs-var"
>qux</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/Types.html
=====================================
@@ -65,7 +65,7 @@
> </span
><span id="Quux"
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-var"
>Quux</span
></a
@@ -79,7 +79,7 @@
> </span
><span id="Bar"
><span class="annot"
- ><a href="Types.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -93,7 +93,7 @@
> </span
><span id="Baz"
><span class="annot"
- ><a href="Types.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -115,7 +115,7 @@
> </span
><span id="Foo"
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-var"
>Foo</span
></a
@@ -129,7 +129,7 @@
> </span
><span id="Foo"
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-var"
>Foo</span
></a
@@ -157,7 +157,7 @@
> </span
><span id="FooQuux"
><span class="annot"
- ><a href="Types.html#FooQuux"
+ ><a href="#FooQuux"
><span class="hs-identifier hs-var"
>FooQuux</span
></a
@@ -172,7 +172,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -182,7 +182,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -200,7 +200,7 @@
> </span
><span id="QuuxFoo"
><span class="annot"
- ><a href="Types.html#QuuxFoo"
+ ><a href="#QuuxFoo"
><span class="hs-identifier hs-var"
>QuuxFoo</span
></a
@@ -215,7 +215,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -225,7 +225,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -257,7 +257,7 @@
> </span
><span id="Norf"
><span class="annot"
- ><a href="Types.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-var"
>Norf</span
></a
@@ -303,7 +303,7 @@
> </span
><span id="Norf"
><span class="annot"
- ><a href="Types.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-var"
>Norf</span
></a
@@ -312,7 +312,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -320,7 +320,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -333,7 +333,7 @@
> </span
><span id="NFQ"
><span class="annot"
- ><a href="Types.html#NFQ"
+ ><a href="#NFQ"
><span class="hs-identifier hs-var"
>NFQ</span
></a
@@ -342,7 +342,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -350,7 +350,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -370,7 +370,7 @@
> </span
><span id="Norf"
><span class="annot"
- ><a href="Types.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-var"
>Norf</span
></a
@@ -379,7 +379,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -387,7 +387,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -400,7 +400,7 @@
> </span
><span id="NQF"
><span class="annot"
- ><a href="Types.html#NQF"
+ ><a href="#NQF"
><span class="hs-identifier hs-var"
>NQF</span
></a
@@ -409,7 +409,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -417,7 +417,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -447,7 +447,7 @@
> </span
><span id="Norf%27"
><span class="annot"
- ><a href="Types.html#Norf%27"
+ ><a href="#Norf%27"
><span class="hs-identifier hs-var"
>Norf'</span
></a
@@ -493,7 +493,7 @@
> </span
><span id="Norf%27"
><span class="annot"
- ><a href="Types.html#Norf%27"
+ ><a href="#Norf%27"
><span class="hs-identifier hs-var"
>Norf'</span
></a
@@ -502,7 +502,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -510,7 +510,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -524,7 +524,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -534,7 +534,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -556,7 +556,7 @@
> </span
><span id="Norf%27"
><span class="annot"
- ><a href="Types.html#Norf%27"
+ ><a href="#Norf%27"
><span class="hs-identifier hs-var"
>Norf'</span
></a
@@ -565,7 +565,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -573,7 +573,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -587,7 +587,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -597,7 +597,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -620,7 +620,7 @@
><span id="line-28"
></span
><span class="annot"
- ><a href="Types.html#norf1"
+ ><a href="#norf1"
><span class="hs-identifier hs-type"
>norf1</span
></a
@@ -632,7 +632,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -640,7 +640,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -648,7 +648,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -673,7 +673,7 @@
><span class="annottext"
>norf1 :: Norf Foo Quux -> Int
</span
- ><a href="Types.html#norf1"
+ ><a href="#norf1"
><span class="hs-identifier hs-var hs-var"
>norf1</span
></a
@@ -684,7 +684,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#NFQ"
+ ><a href="#NFQ"
><span class="hs-identifier hs-type"
>NFQ</span
></a
@@ -694,7 +694,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -713,7 +713,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -739,7 +739,7 @@
><span id="line-30"
></span
><span class="annot"
- ><a href="Types.html#norf1"
+ ><a href="#norf1"
><span class="hs-identifier hs-var"
>norf1</span
></a
@@ -749,7 +749,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#NFQ"
+ ><a href="#NFQ"
><span class="hs-identifier hs-type"
>NFQ</span
></a
@@ -759,7 +759,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -778,7 +778,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -809,7 +809,7 @@
><span id="line-32"
></span
><span class="annot"
- ><a href="Types.html#norf2"
+ ><a href="#norf2"
><span class="hs-identifier hs-type"
>norf2</span
></a
@@ -821,7 +821,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Norf"
+ ><a href="#Norf"
><span class="hs-identifier hs-type"
>Norf</span
></a
@@ -829,7 +829,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -837,7 +837,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -862,7 +862,7 @@
><span class="annottext"
>norf2 :: Norf Quux Foo -> Int
</span
- ><a href="Types.html#norf2"
+ ><a href="#norf2"
><span class="hs-identifier hs-var hs-var"
>norf2</span
></a
@@ -873,7 +873,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#NQF"
+ ><a href="#NQF"
><span class="hs-identifier hs-type"
>NQF</span
></a
@@ -884,7 +884,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -894,7 +894,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -928,7 +928,7 @@
><span id="line-34"
></span
><span class="annot"
- ><a href="Types.html#norf2"
+ ><a href="#norf2"
><span class="hs-identifier hs-var"
>norf2</span
></a
@@ -938,7 +938,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#NQF"
+ ><a href="#NQF"
><span class="hs-identifier hs-type"
>NQF</span
></a
@@ -949,7 +949,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -959,7 +959,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1003,7 +1003,7 @@
><span id="line-37"
></span
><span class="annot"
- ><a href="Types.html#norf1%27"
+ ><a href="#norf1%27"
><span class="hs-identifier hs-type"
>norf1'</span
></a
@@ -1015,7 +1015,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Norf%27"
+ ><a href="#Norf%27"
><span class="hs-identifier hs-type"
>Norf'</span
></a
@@ -1023,7 +1023,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1031,7 +1031,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -1056,7 +1056,7 @@
><span class="annottext"
>norf1' :: Norf' Foo Quux -> Int
</span
- ><a href="Types.html#norf1%27"
+ ><a href="#norf1%27"
><span class="hs-identifier hs-var hs-var"
>norf1'</span
></a
@@ -1067,7 +1067,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1086,7 +1086,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -1112,7 +1112,7 @@
><span id="line-39"
></span
><span class="annot"
- ><a href="Types.html#norf1%27"
+ ><a href="#norf1%27"
><span class="hs-identifier hs-var"
>norf1'</span
></a
@@ -1122,7 +1122,7 @@
><span class="hs-special"
>(</span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1141,7 +1141,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -1172,7 +1172,7 @@
><span id="line-41"
></span
><span class="annot"
- ><a href="Types.html#norf2%27"
+ ><a href="#norf2%27"
><span class="hs-identifier hs-type"
>norf2'</span
></a
@@ -1184,7 +1184,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Norf%27"
+ ><a href="#Norf%27"
><span class="hs-identifier hs-type"
>Norf'</span
></a
@@ -1192,7 +1192,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Quux"
+ ><a href="#Quux"
><span class="hs-identifier hs-type"
>Quux</span
></a
@@ -1200,7 +1200,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1225,7 +1225,7 @@
><span class="annottext"
>norf2' :: Norf' Quux Foo -> Int
</span
- ><a href="Types.html#norf2%27"
+ ><a href="#norf2%27"
><span class="hs-identifier hs-var hs-var"
>norf2'</span
></a
@@ -1239,7 +1239,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Bar"
+ ><a href="#Bar"
><span class="hs-identifier hs-var"
>Bar</span
></a
@@ -1249,7 +1249,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
@@ -1281,7 +1281,7 @@
><span id="line-43"
></span
><span class="annot"
- ><a href="Types.html#norf2%27"
+ ><a href="#norf2%27"
><span class="hs-identifier hs-var"
>norf2'</span
></a
@@ -1294,7 +1294,7 @@
><span class="annottext"
>Quux
</span
- ><a href="Types.html#Baz"
+ ><a href="#Baz"
><span class="hs-identifier hs-var"
>Baz</span
></a
@@ -1304,7 +1304,7 @@
><span
> </span
><span class="annot"
- ><a href="Types.html#Foo"
+ ><a href="#Foo"
><span class="hs-identifier hs-type"
>Foo</span
></a
=====================================
utils/haddock/hypsrc-test/ref/src/UsingQuasiquotes.html
=====================================
@@ -69,7 +69,7 @@
><span class="annottext"
>baz :: [Char]
</span
- ><a href="UsingQuasiquotes.html#baz"
+ ><a href="#baz"
><span class="hs-identifier hs-var hs-var"
>baz</span
></a
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9861b13edfd7eefb1091b469f90c0da…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9861b13edfd7eefb1091b469f90c0da…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 4 commits: ghc-heap: Fix race condition with profiling builds
by Marge Bot (@marge-bot) 14 Sep '25
by Marge Bot (@marge-bot) 14 Sep '25
14 Sep '25
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
99b233f4 by Alison at 2025-09-13T16:51:04-04:00
ghc-heap: Fix race condition with profiling builds
Apply the same fix from Closures.hs (64fd0fac83) to Heap.hs by adding
empty imports to make way-dependent dependencies visible to `ghc -M`.
Fixes #15197, #26407
- - - - -
b26086b9 by Cheng Shao at 2025-09-14T16:49:22-04:00
hadrian: build in-tree gmp with -fvisibility=hidden
When hadrian builds in-tree gmp, it should build the shared objects
with -fvisibility=hidden. The gmp symbols are only used by bignum
logic in ghc-internal and shouldn't be exported by the ghc-internal
shared library. We should always strive to keep shared library symbol
table lean, which benefits platforms with slow dynamic linker or even
hard limits about how many symbols can be exported (e.g. macos dyld,
win32 dll and wasm dyld).
- - - - -
47efd3d7 by Cheng Shao at 2025-09-14T16:49:26-04:00
Revert "wasm: add brotli compression for ghci browser mode"
This reverts commit 731217ce68a1093b5f9e26a07d5bd2cdade2b352.
Benchmarks show non-negligible overhead when browser runs on the same
host, which is the majority of actual use cases.
- - - - -
5b767424 by Cheng Shao at 2025-09-14T16:49:26-04:00
wasm: remove etag logic in ghci browser mode web server
This commit removes the etag logic in dyld script's ghci browser mode
web server. It was meant to support caching logic of wasm shared
libraries, but even if the port is manually specified to make caching
even relevant, for localhost the extra overhead around etag logic is
simply not worth it according to benchmarks.
- - - - -
3 changed files:
- hadrian/src/Rules/Gmp.hs
- libraries/ghc-heap/GHC/Exts/Heap.hs
- utils/jsffi/dyld.mjs
Changes:
=====================================
hadrian/src/Rules/Gmp.hs
=====================================
@@ -12,7 +12,6 @@ import Utilities
import Hadrian.BuildPath
import Hadrian.Expression
import Settings.Builders.Common (cArgs, getStagedCCFlags)
-import GHC.Platform.ArchOS
-- | Build in-tree GMP library objects (if GmpInTree flag is set) and return
-- their paths.
@@ -128,7 +127,10 @@ gmpRules = do
mconcat
[ cArgs
, getStagedCCFlags
- , anyTargetArch [ArchWasm32] ? arg "-fvisibility=default"
+ -- gmp symbols are only used by bignum logic in
+ -- ghc-internal and shouldn't be exported by the
+ -- ghc-internal shared library.
+ , arg "-fvisibility=hidden"
]
env <- sequence
[ builderEnvironment "CC" $ Cc CompileC (stage ctx)
=====================================
libraries/ghc-heap/GHC/Exts/Heap.hs
=====================================
@@ -67,10 +67,26 @@ import GHC.Exts.Heap.ClosureTypes
import GHC.Exts.Heap.Constants
import GHC.Exts.Heap.ProfInfo.Types
#if defined(PROFILING)
+import GHC.Exts.Heap.InfoTable () -- See Note [No way-dependent imports]
import GHC.Exts.Heap.InfoTableProf
#else
import GHC.Exts.Heap.InfoTable
+import GHC.Exts.Heap.InfoTableProf () -- See Note [No way-dependent imports]
+
+{-
+Note [No way-dependent imports]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+`ghc -M` currently assumes that the imports for a module are the same
+in every way. This is arguably a bug, but breaking this assumption by
+importing different things in different ways can cause trouble. For
+example, this module in the profiling way imports and uses
+GHC.Exts.Heap.InfoTableProf. When it was not also imported in the
+vanilla way, there were intermittent build failures due to this module
+being compiled in the profiling way before GHC.Exts.Heap.InfoTableProf
+in the profiling way. (#15197)
+-}
#endif
+
import GHC.Exts.Heap.Utils
import qualified GHC.Exts.Heap.FFIClosures as FFIClosures
import qualified GHC.Exts.Heap.ProfInfo.PeekProfInfo as PPI
=====================================
utils/jsffi/dyld.mjs
=====================================
@@ -291,7 +291,7 @@ const isNode = Boolean(globalThis?.process?.versions?.node);
// factor out browser-only/node-only logic into different modules. For
// now, just make these global let bindings optionally initialized if
// isNode and be careful to not use them in browser-only logic.
-let fs, http, path, require, stream, util, wasi, ws, zlib;
+let fs, http, path, require, stream, wasi, ws;
if (isNode) {
require = (await import("node:module")).createRequire(import.meta.url);
@@ -300,9 +300,7 @@ if (isNode) {
http = require("http");
path = require("path");
stream = require("stream");
- util = require("util");
wasi = require("wasi");
- zlib = require("zlib");
// Optional npm dependencies loaded via NODE_PATH
try {
@@ -561,30 +559,8 @@ args.rpc.opened.then(() => main(args));
}[path.extname(p)] || "application/octet-stream"
);
- const buf = Buffer.from(await fs.promises.readFile(p));
- const etag = `sha512-${Buffer.from(
- await crypto.subtle.digest("SHA-512", buf)
- ).toString("base64")}`;
-
- res.setHeader("ETag", etag);
-
- if (req.headers["if-none-match"] === etag) {
- res.writeHead(304);
- res.end();
- return;
- }
-
- res.setHeader("Content-Encoding", "br");
-
res.writeHead(200);
- res.end(
- await util.promisify(zlib.brotliCompress)(buf, {
- params: {
- [zlib.constants.BROTLI_PARAM_QUALITY]:
- zlib.constants.BROTLI_MIN_QUALITY,
- },
- })
- );
+ fs.createReadStream(p).pipe(res);
return;
}
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/8e8daf8c4c50c2e5022b8bddfd56bb…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/8e8daf8c4c50c2e5022b8bddfd56bb…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/shorter-this-module-links] Use showUnique in internalAnchorIdent
by Oleg Grenrus (@phadej) 14 Sep '25
by Oleg Grenrus (@phadej) 14 Sep '25
14 Sep '25
Oleg Grenrus pushed to branch wip/shorter-this-module-links at Glasgow Haskell Compiler / GHC
Commits:
cf26a2e3 by Oleg Grenrus at 2025-09-14T23:33:54+03:00
Use showUnique in internalAnchorIdent
Showing the key of Unique as a number is generally not a great idea.
GHC Unique has a tag in high bits, so the raw number is unnecessarily
big.
So now we have
```html
<a href="#l-rvgK"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
instead of
```html
<a href="#local-6989586621679015689"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
Together with previous changes of shorter intra-module links the effect
on compressed files is not huge, that is expected as we simply remove
repetitive contents which pack well.
```
12_694_206 Agda-2.9.0-docs-orig.tar.gz
12_566_065 Agda-2.9.0-docs.tar.gz
```
However when unpacked, the difference can be significant,
e.g. Agda's largest module source got 5% reduction:
```
14_230_117 Agda.Syntax.Parser.Parser.html
13_422_109 Agda.Syntax.Parser.Parser.html
```
The whole hyperlinked source code directory got similar reduction
```
121M Agda-2.9.0-docs-orig/src
114M Agda-2.9.0-docs/src
```
For the reference, sources are about 2/3 of the generated haddocks
```
178M Agda-2.9.0-docs-old
172M Agda-2.9.0-docs
```
so we get around 3.5% size reduction overall. Not bad for a small local
changes.
- - - - -
16 changed files:
- utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
- utils/haddock/hypsrc-test/ref/src/CPP.html
- utils/haddock/hypsrc-test/ref/src/Classes.html
- utils/haddock/hypsrc-test/ref/src/Constructors.html
- utils/haddock/hypsrc-test/ref/src/Identifiers.html
- utils/haddock/hypsrc-test/ref/src/LinkingIdentifiers.html
- utils/haddock/hypsrc-test/ref/src/Literals.html
- utils/haddock/hypsrc-test/ref/src/Operators.html
- utils/haddock/hypsrc-test/ref/src/Polymorphism.html
- utils/haddock/hypsrc-test/ref/src/PositionPragmas.html
- utils/haddock/hypsrc-test/ref/src/Quasiquoter.html
- utils/haddock/hypsrc-test/ref/src/Records.html
- utils/haddock/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
- utils/haddock/hypsrc-test/ref/src/TemplateHaskellSplices.html
- utils/haddock/hypsrc-test/ref/src/Types.html
- utils/haddock/hypsrc-test/ref/src/UsingQuasiquotes.html
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/cf26a2e3ddc17e729a0685aab1e1e71…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/cf26a2e3ddc17e729a0685aab1e1e71…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
14 Sep '25
Cheng Shao pushed new branch wip/wasm-enable-ghci-test at Glasgow Haskell Compiler / GHC
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/tree/wip/wasm-enable-ghci-test
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc] Pushed new branch wip/wasm-dyld-no-compression
by Cheng Shao (@TerrorJack) 14 Sep '25
by Cheng Shao (@TerrorJack) 14 Sep '25
14 Sep '25
Cheng Shao pushed new branch wip/wasm-dyld-no-compression at Glasgow Haskell Compiler / GHC
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/tree/wip/wasm-dyld-no-compression
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/shorter-this-module-links] Use showUnique in internalAnchorIdent
by Oleg Grenrus (@phadej) 14 Sep '25
by Oleg Grenrus (@phadej) 14 Sep '25
14 Sep '25
Oleg Grenrus pushed to branch wip/shorter-this-module-links at Glasgow Haskell Compiler / GHC
Commits:
b520943e by Oleg Grenrus at 2025-09-14T19:15:25+03:00
Use showUnique in internalAnchorIdent
Showing the key of Unique as a number is generally not a great idea.
GHC Unique has a tag in high bits, so the raw number is unnecessarily
big.
So now we have
```html
<a href="#l-rvgK"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
instead of
```html
<a href="#local-6989586621679015689"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
Together with previous changes of shorter intra-module links the effect
on compressed files is not huge, that is expected as we simply remove
repetitive contents which pack well.
```
12_694_206 Agda-2.9.0-docs-orig.tar.gz
12_566_065 Agda-2.9.0-docs.tar.gz
```
However when unpacked, the difference can be significant,
e.g. Agda's largest module source got 5% reduction:
```
14_230_117 Agda.Syntax.Parser.Parser.html
13_422_109 Agda.Syntax.Parser.Parser.html
```
The whole hyperlinked source code directory got similar reduction
```
121M Agda-2.9.0-docs-orig/src
114M Agda-2.9.0-docs/src
```
For the reference, sources are about 2/3 of the generated haddocks
```
178M Agda-2.9.0-docs-old
172M Agda-2.9.0-docs
```
so we get around 3.5% size reduction overall. Not bad for a small local
changes.
- - - - -
1 changed file:
- utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
Changes:
=====================================
utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
=====================================
@@ -14,7 +14,7 @@ import GHC.Iface.Ext.Types
import GHC.Iface.Ext.Utils (emptyNodeInfo, isEvidenceContext)
import GHC.Types.Name (Name, getOccString, isInternalName, nameModule, nameUnique)
import GHC.Types.SrcLoc
-import GHC.Types.Unique (getKey)
+import GHC.Types.Unique (showUnique)
import GHC.Unit.Module (Module, ModuleName, moduleNameString)
import GHC.Utils.Encoding (utf8DecodeByteString)
import System.FilePath.Posix ((</>))
@@ -254,7 +254,7 @@ externalAnchorIdent :: Name -> String
externalAnchorIdent = hypSrcNameUrl
internalAnchorIdent :: Name -> String
-internalAnchorIdent = ("local-" ++) . show . getKey . nameUnique
+internalAnchorIdent = ("l-" ++) . showUnique . nameUnique
-- | Generate the HTML hyperlink for an identifier
hyperlink :: Module -> SrcMaps -> Identifier -> Html -> Html
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/b520943e5c5581eb5be0b3e42096788…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/b520943e5c5581eb5be0b3e42096788…
You're receiving this email because of your account on gitlab.haskell.org.
1
0
[Git][ghc/ghc][wip/shorter-this-module-links] Use showUnique in internalAnchorIdent
by Oleg Grenrus (@phadej) 14 Sep '25
by Oleg Grenrus (@phadej) 14 Sep '25
14 Sep '25
Oleg Grenrus pushed to branch wip/shorter-this-module-links at Glasgow Haskell Compiler / GHC
Commits:
4d5bccf8 by Oleg Grenrus at 2025-09-14T18:46:13+03:00
Use showUnique in internalAnchorIdent
Showing the key of Unique as a number is generally not a great idea.
GHC Unique has a tag in high bits, so the raw number is unnecessarily
big.
So now we have
```html
<a href="#l-rvgK"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
instead of
```html
<a href="#local-6989586621679015689"><span class="hs-identifier hs-var hs-var">bar</span></a>
```
Together with previous changes of shorter intra-module links the effect
on compressed files is not huge, that is expected as we simply remove
repetitive contents which pack well.
```
12_694_206 Agda-2.9.0-docs-orig.tar.gz
12_566_065 Agda-2.9.0-docs.tar.gz
```
However when unpacked, the difference can be significant,
e.g. Agda's largest module source got 5% reduction:
```
14_230_117 Agda.Syntax.Parser.Parser.html
13_422_109 Agda.Syntax.Parser.Parser.html
```
The whole hyperlinked source code directory got similar reduction
```
121M Agda-2.9.0-docs-orig/src
114M Agda-2.9.0-docs/src
```
For the reference, sources are about 2/3 of the generated haddocks
```
178M Agda-2.9.0-docs-old
172M Agda-2.9.0-docs
```
so we get around 3.5% size reduction overall. Not bad for a small local
changes.
- - - - -
24 changed files:
- libffi-tarballs
- libraries/Cabal
- libraries/Win32
- libraries/array
- libraries/containers
- libraries/deepseq
- libraries/directory
- libraries/exceptions
- libraries/filepath
- libraries/haskeline
- libraries/hpc
- libraries/os-string
- libraries/parsec
- libraries/process
- libraries/semaphore-compat
- libraries/stm
- libraries/terminfo
- libraries/text
- libraries/time
- libraries/unix
- nofib
- utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
- utils/hpc
- utils/hsc2hs
Changes:
=====================================
libffi-tarballs
=====================================
@@ -1 +1 @@
-Subproject commit 7c51059557b68d29820a0a87cebfa6fe73c8adf5
+Subproject commit 89a9b01c5647c8f0d3899435b99df690f582e9f1
=====================================
libraries/Cabal
=====================================
@@ -1 +1 @@
-Subproject commit d9b0904b49dc84e0bfc79062daf2bbdf9d22a422
+Subproject commit 269fd808e5d80223a229b6b19edfe6f5b109007a
=====================================
libraries/Win32
=====================================
@@ -1 +1 @@
-Subproject commit 7d0772bb265a6c59eb14c441cf65c778895528df
+Subproject commit 027cbcf0de25d681823ea92fb545a2604c3a6a8b
=====================================
libraries/array
=====================================
@@ -1 +1 @@
-Subproject commit 6d59d5deb4f2a12656ab4c4371c0d12dac4875ef
+Subproject commit e7ffb82fd40134da21d7642a41568f32c77c1a04
=====================================
libraries/containers
=====================================
@@ -1 +1 @@
-Subproject commit 801b06e5d4392b028e519d5ca116a2881d559721
+Subproject commit 4fda06c43ea14f808748aa8988158946c3ce0caf
=====================================
libraries/deepseq
=====================================
@@ -1 +1 @@
-Subproject commit ae2762ac241a61852c9ff4c287af234fb1ad931f
+Subproject commit af115cc226cc87fba89d0f6e2e9212e755c24983
=====================================
libraries/directory
=====================================
@@ -1 +1 @@
-Subproject commit 6442a3cf04f74d82cdf8c9213324313d52b23d28
+Subproject commit 005fa061171a55d35ce8dfe936cf3703525a8616
=====================================
libraries/exceptions
=====================================
@@ -1 +1 @@
-Subproject commit b6c4290124eb1138358bf04ad9f33e67f6c5c1d8
+Subproject commit 8e55b720f45db91f4895f710863ef9dbc10fe569
=====================================
libraries/filepath
=====================================
@@ -1 +1 @@
-Subproject commit cbcd0ccf92f47e6c10fb9cc513a7b26facfc19fe
+Subproject commit 65b0f8f31aac4a306135e27734988327f8eb1e6f
=====================================
libraries/haskeline
=====================================
@@ -1 +1 @@
-Subproject commit 991953cd5d3bb9e8057de4a0d8f2cae3455865d8
+Subproject commit 5f4bf62bf1f4846ad0b8d1fa9d45f902e3934511
=====================================
libraries/hpc
=====================================
@@ -1 +1 @@
-Subproject commit 12675279dc5cbea4ade8b5157b080390d598f03f
+Subproject commit f321056015dc36b454f323ca4285d684f4f782d3
=====================================
libraries/os-string
=====================================
@@ -1 +1 @@
-Subproject commit 2e693aad07540173a0169971b27c9acac28eeff1
+Subproject commit 4b5efedcd2da9314edda80d973a44e67020370db
=====================================
libraries/parsec
=====================================
@@ -1 +1 @@
-Subproject commit 552730e23e1fd2dae46a60d75138b8d173492462
+Subproject commit b87122c1c74b8240e65044a8f600f0427d4dd9c3
=====================================
libraries/process
=====================================
@@ -1 +1 @@
-Subproject commit ae50731b5fb221a7631f7e9d818fc6716c85c51e
+Subproject commit 9c3bfc214c72bbd0c8a30a1c41465deed0feaf47
=====================================
libraries/semaphore-compat
=====================================
@@ -1 +1 @@
-Subproject commit ba87d1bb0209bd9f29bda1c878ddf345f8a2b199
+Subproject commit 54882cd9a07322a4cf95d4fc0627107eaf1eb051
=====================================
libraries/stm
=====================================
@@ -1 +1 @@
-Subproject commit 23bdcc2319965911af28542e76fc01f37c107d40
+Subproject commit def18948f42a2eb8c34efdf65f7e614d1f6d5703
=====================================
libraries/terminfo
=====================================
@@ -1 +1 @@
-Subproject commit 16db154e3e97e6bff62329574163851a7090f3b6
+Subproject commit 788ce671cb1cec54c3c9b3ac1c1ba189e8424819
=====================================
libraries/text
=====================================
@@ -1 +1 @@
-Subproject commit 5f343f668f421bfb30cead594e52d0ac6206ff67
+Subproject commit b86564cae8d7262c7c4e7afe7a9163c83de3f175
=====================================
libraries/time
=====================================
@@ -1 +1 @@
-Subproject commit 507f50844802f1469ba6cadfeefd4e3fecee0416
+Subproject commit e5c5d1987011efe88a21ab6ded45aaa33a16274f
=====================================
libraries/unix
=====================================
@@ -1 +1 @@
-Subproject commit c9b3e95b5c15b118e55522bd92963038c6a88160
+Subproject commit 74ae1c0d9dd1518434f7d6cd3e63d7769599e0f9
=====================================
nofib
=====================================
@@ -1 +1 @@
-Subproject commit b7391df4540ac8b11b35e1b2e2c15819b5171798
+Subproject commit da7eed00e494aba1da9f51cb92089ca10e2454e7
=====================================
utils/haddock/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
=====================================
@@ -14,7 +14,7 @@ import GHC.Iface.Ext.Types
import GHC.Iface.Ext.Utils (emptyNodeInfo, isEvidenceContext)
import GHC.Types.Name (Name, getOccString, isInternalName, nameModule, nameUnique)
import GHC.Types.SrcLoc
-import GHC.Types.Unique (getKey)
+import GHC.Types.Unique (showUnique)
import GHC.Unit.Module (Module, ModuleName, moduleNameString)
import GHC.Utils.Encoding (utf8DecodeByteString)
import System.FilePath.Posix ((</>))
@@ -254,7 +254,7 @@ externalAnchorIdent :: Name -> String
externalAnchorIdent = hypSrcNameUrl
internalAnchorIdent :: Name -> String
-internalAnchorIdent = ("local-" ++) . show . getKey . nameUnique
+internalAnchorIdent = ("l-" ++) . showUnique . nameUnique
-- | Generate the HTML hyperlink for an identifier
hyperlink :: Module -> SrcMaps -> Identifier -> Html -> Html
=====================================
utils/hpc
=====================================
@@ -1 +1 @@
-Subproject commit 5923da3fe77993b7afc15b5163cffcaa7da6ecf5
+Subproject commit d1780eb21c1e5a1227fff80c8d325d5142f04255
=====================================
utils/hsc2hs
=====================================
@@ -1 +1 @@
-Subproject commit fe3990b9f35000427b016a79330d9f195587cad8
+Subproject commit c3b21800a67366c9591dc85a471d1dfdb1efcf29
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4d5bccf8863a264fa9d4b9c5dd666e1…
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/4d5bccf8863a264fa9d4b9c5dd666e1…
You're receiving this email because of your account on gitlab.haskell.org.
1
0