-- | Names of all everything used by the generated code
--
-- This follows the structure of "Data.Record.Plugin.Runtime".
module Data.Record.Internal.Plugin.Names.Runtime (
    -- * base
    type_Any
  , type_Constraint
  , type_Eq
  , type_Int
  , type_Ord
  , type_Proxy
  , type_Show
  , type_Type
  , con_Proxy
  , unq_compare
  , unq_eq
  , unq_showsPrec
  , error
  , unsafeCoerce
    -- * vector
  , type_Vector
  , fromList
  , toList
  , unsafeIndex
  , unsafeUpd
    -- * record-hasfield
  , type_HasField
  , unq_hasField
    -- * large-generics
  , type_Dict
  , type_Generic
  , type_Rep
  , type_ThroughLRGenerics
  , unq_type_Constraints
  , unq_type_MetadataOf
  , con_FieldLazy
  , con_FieldMetadata
  , con_FieldStrict
  , con_Metadata
  , con_Rep
  , con_WrapThroughLRGenerics
  , unq_from
  , unq_to
  , unq_dict
  , unq_metadata
  , gcompare
  , geq
  , gshowsPrec
  , noInlineUnsafeCo
  , recordConstructor
  , recordFieldMetadata
  , recordName
  , recordSize
  , unwrapThroughLRGenerics
    -- * Auxiliary
  , dictFor
  , repFromVector
  , repToVector
  ) where

import Prelude hiding (error, showsPrec, compare)

import Data.Record.Internal.GHC.Shim

{-------------------------------------------------------------------------------
  base
-------------------------------------------------------------------------------}

type_Any        :: LRdrName
type_Constraint :: LRdrName
type_Eq         :: LRdrName
type_Int        :: LRdrName
type_Ord        :: LRdrName
type_Proxy      :: LRdrName
type_Show       :: LRdrName
type_Type       :: LRdrName

type_Any :: LRdrName
type_Any        = String -> LRdrName
nameQT String
"Any"
type_Constraint :: LRdrName
type_Constraint = String -> LRdrName
nameQT String
"Constraint"
type_Eq :: LRdrName
type_Eq         = String -> LRdrName
nameQT String
"Eq"
type_Int :: LRdrName
type_Int        = String -> LRdrName
nameQT String
"Int"
type_Ord :: LRdrName
type_Ord        = String -> LRdrName
nameQT String
"Ord"
type_Proxy :: LRdrName
type_Proxy      = String -> LRdrName
nameQT String
"Proxy"
type_Show :: LRdrName
type_Show       = String -> LRdrName
nameQT String
"Show"
type_Type :: LRdrName
type_Type       = String -> LRdrName
nameQT String
"Type"

con_Proxy :: LRdrName
con_Proxy :: LRdrName
con_Proxy = String -> LRdrName
nameQC String
"Proxy"

error        :: LRdrName
unsafeCoerce :: LRdrName

error :: LRdrName
error        = String -> LRdrName
nameQV String
"error"
unsafeCoerce :: LRdrName
unsafeCoerce = String -> LRdrName
nameQV String
"unsafeCoerce"

unq_compare   :: LRdrName
unq_eq        :: LRdrName
unq_showsPrec :: LRdrName

unq_compare :: LRdrName
unq_compare   = String -> LRdrName
nameUV String
"compare"
unq_eq :: LRdrName
unq_eq        = String -> LRdrName
nameUV String
"=="
unq_showsPrec :: LRdrName
unq_showsPrec = String -> LRdrName
nameUV String
"showsPrec"

{-------------------------------------------------------------------------------
  vector
-------------------------------------------------------------------------------}

type_Vector :: LRdrName
type_Vector :: LRdrName
type_Vector = String -> LRdrName
nameQT String
"Vector"

fromList    :: LRdrName
toList      :: LRdrName
unsafeIndex :: LRdrName
unsafeUpd   :: LRdrName

fromList :: LRdrName
fromList    = String -> LRdrName
nameQV String
"fromList"
toList :: LRdrName
toList      = String -> LRdrName
nameQV String
"toList"
unsafeIndex :: LRdrName
unsafeIndex = String -> LRdrName
nameQV String
"unsafeIndex"
unsafeUpd :: LRdrName
unsafeUpd   = String -> LRdrName
nameQV String
"unsafeUpd"

{-------------------------------------------------------------------------------
  record-hasfield
-------------------------------------------------------------------------------}

type_HasField :: LRdrName
type_HasField :: LRdrName
type_HasField = String -> LRdrName
nameQT String
"HasField"

unq_hasField :: LRdrName
unq_hasField :: LRdrName
unq_hasField = String -> LRdrName
nameUV String
"hasField"

{-------------------------------------------------------------------------------
  large-generics
-------------------------------------------------------------------------------}

type_Dict              :: LRdrName
type_Generic           :: LRdrName
type_Rep               :: LRdrName
type_ThroughLRGenerics :: LRdrName

type_Dict :: LRdrName
type_Dict              = String -> LRdrName
nameQT String
"Dict"
type_Generic :: LRdrName
type_Generic           = String -> LRdrName
nameQT String
"Generic"
type_Rep :: LRdrName
type_Rep               = String -> LRdrName
nameQT String
"Rep"
type_ThroughLRGenerics :: LRdrName
type_ThroughLRGenerics = String -> LRdrName
nameQT String
"ThroughLRGenerics"

unq_type_MetadataOf :: LRdrName
unq_type_Constraints :: LRdrName

unq_type_Constraints :: LRdrName
unq_type_Constraints = String -> LRdrName
nameUT String
"Constraints"
unq_type_MetadataOf :: LRdrName
unq_type_MetadataOf  = String -> LRdrName
nameUT String
"MetadataOf"

con_FieldLazy             :: LRdrName
con_FieldMetadata         :: LRdrName
con_FieldStrict           :: LRdrName
con_Metadata              :: LRdrName
con_Rep                   :: LRdrName
con_WrapThroughLRGenerics :: LRdrName

con_FieldLazy :: LRdrName
con_FieldLazy             = String -> LRdrName
nameQC String
"FieldLazy"
con_FieldMetadata :: LRdrName
con_FieldMetadata         = String -> LRdrName
nameQC String
"FieldMetadata"
con_FieldStrict :: LRdrName
con_FieldStrict           = String -> LRdrName
nameQC String
"FieldStrict"
con_Metadata :: LRdrName
con_Metadata              = String -> LRdrName
nameQC String
"Metadata"
con_Rep :: LRdrName
con_Rep                   = String -> LRdrName
nameQC String
"Rep"
con_WrapThroughLRGenerics :: LRdrName
con_WrapThroughLRGenerics = String -> LRdrName
nameQC String
"WrapThroughLRGenerics"

unq_from     :: LRdrName
unq_to       :: LRdrName
unq_dict     :: LRdrName
unq_metadata :: LRdrName

unq_from :: LRdrName
unq_from     = String -> LRdrName
nameUV String
"from"
unq_to :: LRdrName
unq_to       = String -> LRdrName
nameUV String
"to"
unq_dict :: LRdrName
unq_dict     = String -> LRdrName
nameUV String
"dict"
unq_metadata :: LRdrName
unq_metadata = String -> LRdrName
nameUV String
"metadata"

gcompare                :: LRdrName
geq                     :: LRdrName
gshowsPrec              :: LRdrName
noInlineUnsafeCo        :: LRdrName
recordConstructor       :: LRdrName
recordFieldMetadata     :: LRdrName
recordName              :: LRdrName
recordSize              :: LRdrName
unwrapThroughLRGenerics :: LRdrName

gcompare :: LRdrName
gcompare                = String -> LRdrName
nameQV String
"gcompare"
geq :: LRdrName
geq                     = String -> LRdrName
nameQV String
"geq"
gshowsPrec :: LRdrName
gshowsPrec              = String -> LRdrName
nameQV String
"gshowsPrec"
noInlineUnsafeCo :: LRdrName
noInlineUnsafeCo        = String -> LRdrName
nameQV String
"noInlineUnsafeCo"
recordConstructor :: LRdrName
recordConstructor       = String -> LRdrName
nameQV String
"recordConstructor"
recordFieldMetadata :: LRdrName
recordFieldMetadata     = String -> LRdrName
nameQV String
"recordFieldMetadata"
recordName :: LRdrName
recordName              = String -> LRdrName
nameQV String
"recordName"
recordSize :: LRdrName
recordSize              = String -> LRdrName
nameQV String
"recordSize"
unwrapThroughLRGenerics :: LRdrName
unwrapThroughLRGenerics = String -> LRdrName
nameQV String
"unwrapThroughLRGenerics"

{-------------------------------------------------------------------------------
  Auxiliary
-------------------------------------------------------------------------------}

dictFor       :: LRdrName
repFromVector :: LRdrName
repToVector   :: LRdrName

dictFor :: LRdrName
dictFor       = String -> LRdrName
nameQV String
"dictFor"
repFromVector :: LRdrName
repFromVector = String -> LRdrName
nameQV String
"repFromVector"
repToVector :: LRdrName
repToVector   = String -> LRdrName
nameQV String
"repToVector"

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

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

runtime :: ModuleName
runtime :: ModuleName
runtime = String -> ModuleName
mkModuleName String
"Data.Record.Plugin.Runtime"

nameQV, nameQT, nameQC :: String -> LRdrName
nameQV :: String -> LRdrName
nameQV String
var = SrcSpanLess LRdrName -> LRdrName
forall a. HasSrcSpan a => SrcSpanLess a -> a
noLoc (SrcSpanLess LRdrName -> LRdrName)
-> SrcSpanLess LRdrName -> LRdrName
forall a b. (a -> b) -> a -> b
$ ModuleName -> OccName -> RdrName
mkRdrQual ModuleName
runtime (OccName -> RdrName) -> OccName -> RdrName
forall a b. (a -> b) -> a -> b
$ String -> OccName
mkVarOcc  String
var
nameQT :: String -> LRdrName
nameQT String
var = SrcSpanLess LRdrName -> LRdrName
forall a. HasSrcSpan a => SrcSpanLess a -> a
noLoc (SrcSpanLess LRdrName -> LRdrName)
-> SrcSpanLess LRdrName -> LRdrName
forall a b. (a -> b) -> a -> b
$ ModuleName -> OccName -> RdrName
mkRdrQual ModuleName
runtime (OccName -> RdrName) -> OccName -> RdrName
forall a b. (a -> b) -> a -> b
$ String -> OccName
mkTcOcc   String
var
nameQC :: String -> LRdrName
nameQC String
var = SrcSpanLess LRdrName -> LRdrName
forall a. HasSrcSpan a => SrcSpanLess a -> a
noLoc (SrcSpanLess LRdrName -> LRdrName)
-> SrcSpanLess LRdrName -> LRdrName
forall a b. (a -> b) -> a -> b
$ ModuleName -> OccName -> RdrName
mkRdrQual ModuleName
runtime (OccName -> RdrName) -> OccName -> RdrName
forall a b. (a -> b) -> a -> b
$ String -> OccName
mkDataOcc String
var

nameUV, nameUT :: String -> LRdrName
nameUV :: String -> LRdrName
nameUV String
var = SrcSpanLess LRdrName -> LRdrName
forall a. HasSrcSpan a => SrcSpanLess a -> a
noLoc (SrcSpanLess LRdrName -> LRdrName)
-> SrcSpanLess LRdrName -> LRdrName
forall a b. (a -> b) -> a -> b
$ OccName -> RdrName
mkRdrUnqual (OccName -> RdrName) -> OccName -> RdrName
forall a b. (a -> b) -> a -> b
$ String -> OccName
mkVarOcc String
var
nameUT :: String -> LRdrName
nameUT String
var = SrcSpanLess LRdrName -> LRdrName
forall a. HasSrcSpan a => SrcSpanLess a -> a
noLoc (SrcSpanLess LRdrName -> LRdrName)
-> SrcSpanLess LRdrName -> LRdrName
forall a b. (a -> b) -> a -> b
$ OccName -> RdrName
mkRdrUnqual (OccName -> RdrName) -> OccName -> RdrName
forall a b. (a -> b) -> a -> b
$ String -> OccName
mkTcOcc  String
var