diff options
author | David Waern <unknown> | 2007-08-17 14:53:04 +0000 |
---|---|---|
committer | David Waern <unknown> | 2007-08-17 14:53:04 +0000 |
commit | bedd431c75f7660655347d9210dc5043b83232e1 (patch) | |
tree | d2089de29fb5b783cf5c3e9c4b055bc891afffcd /src/Haddock/Utils | |
parent | 93d806105dd027f4d31a76e2bd2410001fe10b29 (diff) |
Factor out typechecking phase into Haddock.Typecheck
Diffstat (limited to 'src/Haddock/Utils')
-rw-r--r-- | src/Haddock/Utils/GHC.hs | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/src/Haddock/Utils/GHC.hs b/src/Haddock/Utils/GHC.hs index 8393cbb2..3ac90d77 100644 --- a/src/Haddock/Utils/GHC.hs +++ b/src/Haddock/Utils/GHC.hs @@ -4,9 +4,12 @@ -- (c) Simon Marlow 2003 -- + module Haddock.Utils.GHC where + import Debug.Trace +import Data.Char import GHC import HsSyn @@ -17,6 +20,42 @@ import Packages import UniqFM import Name + +-- names + +nameOccString = occNameString . nameOccName + + +nameSetMod n newMod = + mkExternalName (nameUnique n) newMod (nameOccName n) (nameSrcSpan n) + + +nameSetPkg pkgId n = + mkExternalName (nameUnique n) (mkModule pkgId (moduleName mod)) + (nameOccName n) (nameSrcSpan n) + where mod = nameModule n + + +-- modules + + +moduleString :: Module -> String +moduleString = moduleNameString . moduleName + + +mkModuleNoPkg :: String -> Module +mkModuleNoPkg str = mkModule (stringToPackageId "") (mkModuleName str) + + +-- misc + + +-- there should be a better way to check this using the GHC API +isConSym n = head (nameOccString n) == ':' +isVarSym n = fstChar /= '_' && not (isConSym n) && (not . isLetter) fstChar + where fstChar = head (nameOccString n) + + getMainDeclBinder :: HsDecl name -> Maybe name getMainDeclBinder (TyClD d) = Just (tcdName d) getMainDeclBinder (ValD d) @@ -28,18 +67,10 @@ getMainDeclBinder (ForD (ForeignImport name _ _)) = Just (unLoc name) getMainDeclBinder (ForD (ForeignExport name _ _)) = Nothing getMainDeclBinder _ = Nothing + -- To keep if if minf_iface is re-introduced --modInfoName = moduleName . mi_module . minf_iface --modInfoMod = mi_module . minf_iface -trace_ppr x y = trace (showSDoc (ppr x)) y --- names - -nameSetMod n newMod = - mkExternalName (nameUnique n) newMod (nameOccName n) (nameSrcSpan n) - -nameSetPkg pkgId n = - mkExternalName (nameUnique n) (mkModule pkgId (moduleName mod)) - (nameOccName n) (nameSrcSpan n) - where mod = nameModule n +trace_ppr x y = trace (showSDoc (ppr x)) y |