module GHC.SourceGen.Name
(
RdrNameStr(..)
, RawNameSpace(..)
, rdrNameStrToString
, qual
, unqual
, OccNameStr
, occNameStrToString
, occNameStrNamespace
, occNameToStr
, nameToStr
, ModuleNameStr(..)
, moduleNameStrToString
) where
import FastString (unpackFS)
import Module (moduleNameString)
import GHC.SourceGen.Name.Internal
import OccName (OccName, occNameFS, occNameSpace, isVarNameSpace)
import Name (Name, nameOccName)
unqual :: OccNameStr -> RdrNameStr
unqual = UnqualStr
qual :: ModuleNameStr -> OccNameStr -> RdrNameStr
qual = QualStr
moduleNameStrToString :: ModuleNameStr -> String
moduleNameStrToString = moduleNameString . unModuleNameStr
occNameStrToString :: OccNameStr -> String
occNameStrToString (OccNameStr _ s) = unpackFS s
occNameStrNamespace :: OccNameStr -> RawNameSpace
occNameStrNamespace (OccNameStr n _) = n
rdrNameStrToString :: RdrNameStr -> String
rdrNameStrToString (UnqualStr o) = occNameStrToString o
rdrNameStrToString (QualStr m o) =
moduleNameStrToString m ++ '.' : occNameStrToString o
occNameToStr :: OccName -> OccNameStr
occNameToStr o = OccNameStr n (occNameFS o)
where
n = if isVarNameSpace $ occNameSpace o
then Value
else Constructor
nameToStr :: Name -> OccNameStr
nameToStr = occNameToStr . nameOccName