{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards   #-}

module Data.Record.Internal.Plugin.Names (
    QualifiedNames(..)
  , getQualifiedNames
  ) where

import Prelude hiding (error)
import Data.Record.Internal.GHC.Shim

{-------------------------------------------------------------------------------
  Qualified names
-------------------------------------------------------------------------------}

data QualifiedNames = QualifiedNames {

      --
      -- Prelude type classes
      --

      QualifiedNames -> LRdrName
prelude_type_Eq   :: LRdrName
    , QualifiedNames -> LRdrName
prelude_type_Ord  :: LRdrName
    , QualifiedNames -> LRdrName
prelude_type_Show :: LRdrName
    , QualifiedNames -> LRdrName
prelude_compare   :: LRdrName
    , QualifiedNames -> LRdrName
prelude_eq        :: LRdrName
    , QualifiedNames -> LRdrName
prelude_showsPrec :: LRdrName

      --
      -- Other base
      --

    , QualifiedNames -> LRdrName
type_Constraint  :: LRdrName
    , QualifiedNames -> LRdrName
type_GHC_Generic :: LRdrName
    , QualifiedNames -> LRdrName
type_GHC_Rep     :: LRdrName
    , QualifiedNames -> LRdrName
type_Int         :: LRdrName
    , QualifiedNames -> LRdrName
type_Proxy       :: LRdrName
    , QualifiedNames -> LRdrName
type_Type        :: LRdrName
    , QualifiedNames -> LRdrName
error            :: LRdrName
    , QualifiedNames -> LRdrName
ghc_from         :: LRdrName
    , QualifiedNames -> LRdrName
ghc_to           :: LRdrName
    , QualifiedNames -> LRdrName
proxy            :: LRdrName

      --
      -- AnyArray
      --

    , QualifiedNames -> LRdrName
type_AnyArray    :: LRdrName
    , QualifiedNames -> LRdrName
anyArrayFromList :: LRdrName
    , QualifiedNames -> LRdrName
anyArrayToList   :: LRdrName
    , QualifiedNames -> LRdrName
anyArrayIndex    :: LRdrName
    , QualifiedNames -> LRdrName
anyArrayUpdate   :: LRdrName

      --
      -- large-generics
      --

    , QualifiedNames -> LRdrName
type_LR_Generic     :: LRdrName
    , QualifiedNames -> LRdrName
type_LR_MetadataOf  :: LRdrName
    , QualifiedNames -> LRdrName
type_LR_Constraints :: LRdrName
    , QualifiedNames -> LRdrName
lr_from             :: LRdrName
    , QualifiedNames -> LRdrName
lr_to               :: LRdrName
    , QualifiedNames -> LRdrName
lr_dict             :: LRdrName
    , QualifiedNames -> LRdrName
lr_metadata         :: LRdrName

      -- .. wrappers

    , QualifiedNames -> LRdrName
type_Rep         :: LRdrName
    , QualifiedNames -> LRdrName
type_Dict        :: LRdrName
    , QualifiedNames -> LRdrName
gcompare         :: LRdrName
    , QualifiedNames -> LRdrName
geq              :: LRdrName
    , QualifiedNames -> LRdrName
gshowsPrec       :: LRdrName
    , QualifiedNames -> LRdrName
noInlineUnsafeCo :: LRdrName

      -- .. utilities

    , QualifiedNames -> LRdrName
anyArrayToRep   :: LRdrName
    , QualifiedNames -> LRdrName
anyArrayFromRep :: LRdrName
    , QualifiedNames -> LRdrName
mkDicts         :: LRdrName
    , QualifiedNames -> LRdrName
mkDict          :: LRdrName
    , QualifiedNames -> LRdrName
mkStrictField   :: LRdrName
    , QualifiedNames -> LRdrName
mkLazyField     :: LRdrName
    , QualifiedNames -> LRdrName
mkMetadata      :: LRdrName

      -- .. ThroughLRGenerics

    , QualifiedNames -> LRdrName
type_ThroughLRGenerics  :: LRdrName
    , QualifiedNames -> LRdrName
wrapThroughLRGenerics   :: LRdrName
    , QualifiedNames -> LRdrName
unwrapThroughLRGenerics :: LRdrName

      --
      -- record-hasfield
      --

    , QualifiedNames -> LRdrName
type_HasField :: LRdrName
    , QualifiedNames -> LRdrName
hasField      :: LRdrName
    }

-- | Resolve qualified names
--
-- We try to import whenever possible from "Data.Record.Plugin.Runtime"; only
-- when this is /really/ not possible do we import from other modules. We do
-- this to avoid two problems:
--
-- * When we resolve a name, we must specify the module where something is
--   /defined/, not merely a module that /exports/ the thing we need; this means
--   that this is quite brittle.
--
-- * When we resolve a name from a different package, users must explicitly
--   define a dependency on that other package.
getQualifiedNames :: Hsc QualifiedNames
getQualifiedNames :: Hsc QualifiedNames
getQualifiedNames = do

    --
    -- Prelude classes
    --
    -- Annoyingly, we cannot re-rexport these through our runtime module, since
    -- we cannot declare instances of type aliased classes.
    --

    LRdrName
prelude_type_Eq   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
ghcClasses (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"ghc-prim") String
"Eq"
    LRdrName
prelude_type_Ord  <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
ghcClasses (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"ghc-prim") String
"Ord"
    LRdrName
prelude_type_Show <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
ghcShow    Maybe FastString
forall a. Maybe a
Nothing           String
"Show"
    LRdrName
prelude_compare   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
ghcClasses (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"ghc-prim") String
"compare"
    LRdrName
prelude_eq        <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
ghcClasses (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"ghc-prim") String
"=="
    LRdrName
prelude_showsPrec <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
ghcShow    Maybe FastString
forall a. Maybe a
Nothing           String
"showsPrec"

    --
    -- Other base
    --

    LRdrName
type_Constraint  <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"Constraint"
    LRdrName
type_GHC_Generic <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
ghcGenerics Maybe FastString
forall a. Maybe a
Nothing String
"Generic"
    LRdrName
type_GHC_Rep     <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
ghcGenerics Maybe FastString
forall a. Maybe a
Nothing String
"Rep"
    LRdrName
type_Proxy       <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"Proxy"
    LRdrName
type_Type        <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"Type"
    LRdrName
type_Int         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"Int"
    LRdrName
error            <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"error"
    LRdrName
ghc_from         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
ghcGenerics Maybe FastString
forall a. Maybe a
Nothing String
"from"
    LRdrName
ghc_to           <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
ghcGenerics Maybe FastString
forall a. Maybe a
Nothing String
"to"
    LRdrName
proxy            <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime     Maybe FastString
forall a. Maybe a
Nothing String
"proxy"

    --
    -- AnyArray
    --

    LRdrName
type_AnyArray    <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"AnyArray"
    LRdrName
anyArrayFromList <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayFromList"
    LRdrName
anyArrayToList   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayToList"
    LRdrName
anyArrayIndex    <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayIndex"
    LRdrName
anyArrayUpdate   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayUpdate"

    --
    -- large-generics
    --

    LRdrName
type_LR_Generic     <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"Generic"
    LRdrName
type_LR_Constraints <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"Constraints"
    LRdrName
type_LR_MetadataOf  <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"MetadataOf"
    LRdrName
lr_from             <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"from"
    LRdrName
lr_to               <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"to"
    LRdrName
lr_dict             <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"dict"
    LRdrName
lr_metadata         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
largeGenerics (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"large-generics") String
"metadata"

    -- .. utilities

    LRdrName
anyArrayToRep   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayToRep"
    LRdrName
anyArrayFromRep <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"anyArrayFromRep"
    LRdrName
mkDicts         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"mkDicts"
    LRdrName
mkDict          <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"mkDict"
    LRdrName
mkStrictField   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"mkStrictField"
    LRdrName
mkLazyField     <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"mkLazyField"
    LRdrName
mkMetadata      <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"mkMetadata"

    -- .. wrappers

    LRdrName
type_Rep         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"Rep"
    LRdrName
type_Dict        <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"Dict"
    LRdrName
gcompare         <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"gcompare"
    LRdrName
geq              <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"geq"
    LRdrName
gshowsPrec       <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"gshowsPrec"
    LRdrName
noInlineUnsafeCo <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"noInlineUnsafeCo"

    -- .. ThroughLRGenerics

    LRdrName
type_ThroughLRGenerics  <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"ThroughLRGenerics"
    LRdrName
wrapThroughLRGenerics   <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"wrapThroughLRGenerics"
    LRdrName
unwrapThroughLRGenerics <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
runtime Maybe FastString
forall a. Maybe a
Nothing String
"unwrapThroughLRGenerics"

    --
    -- record-hasfield
    --

    LRdrName
type_HasField <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupTcName  ModuleName
recordHasField (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"record-hasfield") String
"HasField"
    LRdrName
hasField      <- Name -> LRdrName
exact (Name -> LRdrName) -> Hsc Name -> Hsc LRdrName
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> HasCallStack =>
ModuleName -> Maybe FastString -> String -> Hsc Name
ModuleName -> Maybe FastString -> String -> Hsc Name
lookupVarName ModuleName
recordHasField (FastString -> Maybe FastString
forall a. a -> Maybe a
Just FastString
"record-hasfield") String
"hasField"

    QualifiedNames -> Hsc QualifiedNames
forall a. a -> Hsc a
forall (m :: Type -> Type) a. Monad m => a -> m a
return QualifiedNames{LRdrName
prelude_type_Eq :: LRdrName
prelude_type_Ord :: LRdrName
prelude_type_Show :: LRdrName
prelude_compare :: LRdrName
prelude_eq :: LRdrName
prelude_showsPrec :: LRdrName
type_Constraint :: LRdrName
type_GHC_Generic :: LRdrName
type_GHC_Rep :: LRdrName
type_Int :: LRdrName
type_Proxy :: LRdrName
type_Type :: LRdrName
error :: LRdrName
ghc_from :: LRdrName
ghc_to :: LRdrName
proxy :: LRdrName
type_AnyArray :: LRdrName
anyArrayFromList :: LRdrName
anyArrayToList :: LRdrName
anyArrayIndex :: LRdrName
anyArrayUpdate :: LRdrName
type_LR_Generic :: LRdrName
type_LR_MetadataOf :: LRdrName
type_LR_Constraints :: LRdrName
lr_from :: LRdrName
lr_to :: LRdrName
lr_dict :: LRdrName
lr_metadata :: LRdrName
type_Rep :: LRdrName
type_Dict :: LRdrName
gcompare :: LRdrName
geq :: LRdrName
gshowsPrec :: LRdrName
noInlineUnsafeCo :: LRdrName
anyArrayToRep :: LRdrName
anyArrayFromRep :: LRdrName
mkDicts :: LRdrName
mkDict :: LRdrName
mkStrictField :: LRdrName
mkLazyField :: LRdrName
mkMetadata :: LRdrName
type_ThroughLRGenerics :: LRdrName
wrapThroughLRGenerics :: LRdrName
unwrapThroughLRGenerics :: LRdrName
type_HasField :: LRdrName
hasField :: LRdrName
prelude_type_Eq :: LRdrName
prelude_type_Ord :: LRdrName
prelude_type_Show :: LRdrName
prelude_compare :: LRdrName
prelude_eq :: LRdrName
prelude_showsPrec :: LRdrName
type_Constraint :: LRdrName
type_GHC_Generic :: LRdrName
type_GHC_Rep :: LRdrName
type_Proxy :: LRdrName
type_Type :: LRdrName
type_Int :: LRdrName
error :: LRdrName
ghc_from :: LRdrName
ghc_to :: LRdrName
proxy :: LRdrName
type_AnyArray :: LRdrName
anyArrayFromList :: LRdrName
anyArrayToList :: LRdrName
anyArrayIndex :: LRdrName
anyArrayUpdate :: LRdrName
type_LR_Generic :: LRdrName
type_LR_Constraints :: LRdrName
type_LR_MetadataOf :: LRdrName
lr_from :: LRdrName
lr_to :: LRdrName
lr_dict :: LRdrName
lr_metadata :: LRdrName
anyArrayToRep :: LRdrName
anyArrayFromRep :: LRdrName
mkDicts :: LRdrName
mkDict :: LRdrName
mkStrictField :: LRdrName
mkLazyField :: LRdrName
mkMetadata :: LRdrName
type_Rep :: LRdrName
type_Dict :: LRdrName
gcompare :: LRdrName
geq :: LRdrName
gshowsPrec :: LRdrName
noInlineUnsafeCo :: LRdrName
type_ThroughLRGenerics :: LRdrName
wrapThroughLRGenerics :: LRdrName
unwrapThroughLRGenerics :: LRdrName
type_HasField :: LRdrName
hasField :: LRdrName
..}

  where
   exact :: Name -> LRdrName
   exact :: Name -> LRdrName
exact = RdrName -> LRdrName
forall e. e -> Located e
noLoc (RdrName -> LRdrName) -> (Name -> RdrName) -> Name -> LRdrName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> RdrName
Exact

   ghcClasses, ghcShow :: ModuleName
   ghcClasses :: ModuleName
ghcClasses = String -> ModuleName
mkModuleName String
"GHC.Classes"
   ghcShow :: ModuleName
ghcShow    = String -> ModuleName
mkModuleName String
"GHC.Show"

   runtime, recordHasField, ghcGenerics, largeGenerics :: ModuleName
   runtime :: ModuleName
runtime        = String -> ModuleName
mkModuleName String
"Data.Record.Plugin.Runtime"
   recordHasField :: ModuleName
recordHasField = String -> ModuleName
mkModuleName String
"GHC.Records.Compat"
   ghcGenerics :: ModuleName
ghcGenerics    = String -> ModuleName
mkModuleName String
"GHC.Generics"
   largeGenerics :: ModuleName
largeGenerics  = String -> ModuleName
mkModuleName String
"Data.Record.Generic"