module GHC.NameViolation where
import qualified Name as N
import FastString
import Unique
import SrcLoc
import Module
import TyCoRep
import Unsafe.Coerce
violateName :: N.Name -> Name
violateName = unsafeCoerce
showName :: Name -> String
showName (Name (External m) occ _ _) =
showModule m ++ "." ++ unpackFS (occNameFS occ)
showName (Name (WiredIn m _ _) occ _ _) =
showModule m ++ "." ++ unpackFS (occNameFS occ)
showName (Name Internal occ _ _) =
unpackFS (occNameFS occ)
showName (Name System occ _ _) =
unpackFS (occNameFS occ)
showModule :: Module -> String
showModule = moduleStableString
data OccName = OccName
{ occNameSpace :: !N.NameSpace
, occNameFS :: !FastString
}
data Name = Name
{ n_sort :: NameSort
, n_occ :: !OccName
, n_uniq :: {-# UNPACK #-} !Unique
, n_loc :: !SrcSpan
}
data NameSort
= External Module
| WiredIn Module TyThing N.BuiltInSyntax
| Internal
| System