aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock
diff options
context:
space:
mode:
authorƁukasz Hanuszczak <lukasz.hanuszczak@gmail.com>2015-07-31 20:16:33 +0200
committerMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2015-08-21 18:22:33 +0100
commit472440c233fccf662ff41193db66c62e7bc6f6d1 (patch)
tree0a1a515f0c19721b556be1298ccc88eb74b102d2 /haddock-api/src/Haddock
parent6ee9d224832f5aabb1abfad0533c62ad90936624 (diff)
Make identifier generation also architecture-independent.
Diffstat (limited to 'haddock-api/src/Haddock')
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/Decl.hs12
1 files changed, 7 insertions, 5 deletions
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
index c30d0e62..f1203210 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
@@ -31,10 +31,12 @@ import Haddock.Syb
import Haddock.Doc (combineDocumentation)
import Data.Bits
+import Data.Char
import Data.Data (Data, cast)
import Data.List ( intersperse, sort )
import qualified Data.Map as Map
import Data.Maybe
+import Data.Word
import Text.XHtml hiding ( name, title, p, quote )
import GHC
@@ -636,16 +638,16 @@ instanceId orgin no ihd = concat
-- section anchors in testing framework and that is not only inconvenient but
-- also makes testing less viable. And it is only temporary solution so we can
-- live with it.
-instHeadId :: InstHead DocName -> Int
+instHeadId :: InstHead DocName -> Word64
instHeadId (InstHead { .. }) =
- djb2 . map key $ [ihdClsName] ++ names ihdTypes ++ names ihdKinds
+ djb2 id . map key $ [ihdClsName] ++ names ihdTypes ++ names ihdKinds
where
names = everything (++) $
maybeToList . (cast :: forall a. Data a => a -> Maybe DocName)
- key = djb2 . occNameString . nameOccName . getName
+ key = djb2 (fromIntegral . ord) . occNameString . nameOccName . getName
- djb2 :: Enum a => [a] -> Int
- djb2 = foldl (\h c -> h * 33 `xor` fromEnum c) 5381
+ djb2 :: (a -> Word64) -> [a] -> Word64
+ djb2 conv = foldl (\h c -> h * 33 `xor` conv c) 5381
-------------------------------------------------------------------------------