diff options
author | David Waern <david.waern@gmail.com> | 2010-04-10 10:46:14 +0000 |
---|---|---|
committer | David Waern <david.waern@gmail.com> | 2010-04-10 10:46:14 +0000 |
commit | a2a41c8b812cbc55d4541cec3285ee32f863a227 (patch) | |
tree | 786745653693708cd8fe1cf11a981b8d6dabafff /src/Haddock/Interface/ParseModuleHeader.hs | |
parent | 6f47cab6685dd30c9795fe56eb947cd94c7255ee (diff) |
Fix #112
No link was generated for 'Addr#' in a doc comment. The reason was simply that
the identifier didn't parse. We were using parseIdentifier from the GHC API,
with a parser state built from 'defaultDynFlags'. If we pass the dynflags of
the module instead, the right options are turned on on while parsing the
identifer (in this case -XMagicHash), and the parse succeeds.
Diffstat (limited to 'src/Haddock/Interface/ParseModuleHeader.hs')
-rw-r--r-- | src/Haddock/Interface/ParseModuleHeader.hs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/Haddock/Interface/ParseModuleHeader.hs b/src/Haddock/Interface/ParseModuleHeader.hs index 2bdd30a7..c28effad 100644 --- a/src/Haddock/Interface/ParseModuleHeader.hs +++ b/src/Haddock/Interface/ParseModuleHeader.hs @@ -17,6 +17,7 @@ import Haddock.Lex import Haddock.Parse import RdrName +import DynFlags import Data.Char @@ -26,8 +27,8 @@ import Data.Char -- NB. The headers must be given in the order Module, Description, -- Copyright, License, Maintainer, Stability, Portability, except that -- any or all may be omitted. -parseModuleHeader :: String -> Either String (HaddockModInfo RdrName, Doc RdrName) -parseModuleHeader str0 = +parseModuleHeader :: DynFlags -> String -> Either String (HaddockModInfo RdrName, Doc RdrName) +parseModuleHeader dflags str0 = let getKey :: String -> String -> (Maybe String,String) getKey key str = case parseKey key str of @@ -47,14 +48,14 @@ parseModuleHeader str0 = description1 = case descriptionOpt of Nothing -> Right Nothing -- TODO: pass real file position - Just description -> case parseString $ tokenise description (0,0) of + Just description -> case parseString $ tokenise dflags description (0,0) of Nothing -> Left ("Cannot parse Description: " ++ description) Just doc -> Right (Just doc) in case description1 of Left mess -> Left mess -- TODO: pass real file position - Right docOpt -> case parseParas $ tokenise str8 (0,0) of + Right docOpt -> case parseParas $ tokenise dflags str8 (0,0) of Nothing -> Left "Cannot parse header documentation paragraphs" Just doc -> Right (HaddockModInfo { hmi_description = docOpt, |