packages feed

large-records-0.2.0.0: src/Data/Record/Internal/Plugin/Names/GhcGenerics.hs

-- | Names for GHC generics
--
-- We cannot make this part of the main ghcGenerics, because the names clash
-- with @large-records@ generics.
module Data.Record.Internal.Plugin.Names.GhcGenerics (
    type_Generic
  , unq_type_Rep
  , unq_from
  , unq_to
  ) where

import Data.Record.Internal.GHC.Shim

{-------------------------------------------------------------------------------
  Names of GHC.Generics
-------------------------------------------------------------------------------}

type_Generic :: LRdrName
type_Generic = nameQT "Generic"

unq_type_Rep :: LRdrName
unq_type_Rep = nameUT "Rep"

unq_from, unq_to :: LRdrName
unq_from = nameUV "from"
unq_to   = nameUV "to"

{-------------------------------------------------------------------------------
  Internal auxiliary

  NOTE: Unqualified names are used when generating class instances.
-------------------------------------------------------------------------------}

ghcGenerics :: ModuleName
ghcGenerics = mkModuleName "GHC.Generics"

nameQT :: String -> LRdrName
nameQT var = noLoc $ mkRdrQual ghcGenerics $ mkTcOcc   var

nameUV, nameUT :: String -> LRdrName
nameUV var = noLoc $ mkRdrUnqual $ mkVarOcc var
nameUT var = noLoc $ mkRdrUnqual $ mkTcOcc  var