diff options
Diffstat (limited to 'haddock-api/src/Haddock/Parser.hs')
| -rw-r--r-- | haddock-api/src/Haddock/Parser.hs | 19 | 
1 files changed, 12 insertions, 7 deletions
| diff --git a/haddock-api/src/Haddock/Parser.hs b/haddock-api/src/Haddock/Parser.hs index 8b7dda7c..6d5dc103 100644 --- a/haddock-api/src/Haddock/Parser.hs +++ b/haddock-api/src/Haddock/Parser.hs @@ -15,27 +15,32 @@ module Haddock.Parser ( parseParas  import qualified Documentation.Haddock.Parser as P  import Documentation.Haddock.Types -import Haddock.Types (NsRdrName(..)) +import Haddock.Types  import DynFlags     ( DynFlags )  import FastString   ( fsLit )  import Lexer        ( mkPState, unP, ParseResult(POk) )  import Parser       ( parseIdentifier ) -import RdrName      ( RdrName )  import SrcLoc       ( mkRealSrcLoc, GenLocated(..) )  import StringBuffer ( stringToStringBuffer ) -parseParas :: DynFlags -> Maybe Package -> String -> MetaDoc mod NsRdrName + +parseParas :: DynFlags -> Maybe Package -> String -> MetaDoc mod (Wrap NsRdrName)  parseParas d p = overDoc (P.overIdentifier (parseIdent d)) . P.parseParas p -parseString :: DynFlags -> String -> DocH mod NsRdrName +parseString :: DynFlags -> String -> DocH mod (Wrap NsRdrName)  parseString d = P.overIdentifier (parseIdent d) . P.parseString -parseIdent :: DynFlags -> Namespace -> String -> Maybe NsRdrName +parseIdent :: DynFlags -> Namespace -> String -> Maybe (Wrap NsRdrName)  parseIdent dflags ns str0 = -  let buffer = stringToStringBuffer str0 +  let buffer = stringToStringBuffer str1        realSrcLc = mkRealSrcLoc (fsLit "<unknown file>") 0 0        pstate = mkPState dflags buffer realSrcLc +      (wrap,str1) = case str0 of +                      '(' : s@(c : _) | c /= ',', c /= ')'  -- rule out tuple names +                                      -> (Parenthesized, init s) +                      '`' : s@(_ : _) -> (Backticked,    init s) +                      _               -> (Unadorned,     str0)    in case unP parseIdentifier pstate of -    POk _ (L _ name) -> Just (NsRdrName ns name) +    POk _ (L _ name) -> Just (wrap (NsRdrName ns name))      _ -> Nothing | 
