{-# LANGUAGE RecordWildCards #-}
module Data.Record.Anon.Internal.Plugin.Source.Names (
LargeAnonNames(..)
, getLargeAnonNames
) where
import Data.Record.Anon.Internal.Plugin.Source.GhcShim
import Data.Record.Anon.Internal.Plugin.Source.Options (Mode(..))
data LargeAnonNames = LargeAnonNames {
LargeAnonNames -> RdrName
largeAnon_empty :: RdrName
, LargeAnonNames -> RdrName
largeAnon_insert :: RdrName
, LargeAnonNames -> RdrName
largeAnon_applyPending :: RdrName
, LargeAnonNames -> RdrName
largeAnon_letRecordT :: RdrName
, LargeAnonNames -> RdrName
largeAnon_letInsertAs :: RdrName
, LargeAnonNames -> RdrName
typelet_castEqual :: RdrName
}
getLargeAnonNames :: Mode -> Hsc LargeAnonNames
getLargeAnonNames :: Mode -> Hsc LargeAnonNames
getLargeAnonNames Mode
mode = do
RdrName
largeAnon_empty <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"empty"
RdrName
largeAnon_insert <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"insert"
RdrName
largeAnon_applyPending <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"applyPending"
RdrName
largeAnon_letRecordT <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"letRecordT"
RdrName
largeAnon_letInsertAs <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"letInsertAs"
RdrName
typelet_castEqual <- Name -> RdrName
Exact forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupName ModuleName
modl forall a. Maybe a
Nothing String
"castEqual"
forall (m :: * -> *) a. Monad m => a -> m a
return LargeAnonNames{RdrName
typelet_castEqual :: RdrName
largeAnon_letInsertAs :: RdrName
largeAnon_letRecordT :: RdrName
largeAnon_applyPending :: RdrName
largeAnon_insert :: RdrName
largeAnon_empty :: RdrName
typelet_castEqual :: RdrName
largeAnon_letInsertAs :: RdrName
largeAnon_letRecordT :: RdrName
largeAnon_applyPending :: RdrName
largeAnon_insert :: RdrName
largeAnon_empty :: RdrName
..}
where
modl :: ModuleName
modl :: ModuleName
modl = case Mode
mode of
Mode
Simple -> String -> ModuleName
mkModuleName String
"Data.Record.Anon.Simple"
Mode
Advanced -> String -> ModuleName
mkModuleName String
"Data.Record.Anon.Advanced"