This allows callers to put any number of modules into scope before
translating to Core. Previously, functions and values could be
automatically imported by using their qualified name, but now also
instances can be used from modules that would not be imported otherwise.
(HsBinds.HsValBinds $ (HsBinds.ValBindsIn binds) [])
(SrcLoc.noLoc expr)
(HsBinds.HsValBinds $ (HsBinds.ValBindsIn binds) [])
(SrcLoc.noLoc expr)
execCore core
-- | Get the length of a SizedWord type
execCore core
-- | Get the length of a SizedWord type
-- (==) = Prelude.(==) Int $dInt
-- in
-- \x = (==) x 1
-- (==) = Prelude.(==) Int $dInt
-- in
-- \x = (==) x 1
-toCore :: HsSyn.HsExpr RdrName.RdrName -> GHC.Ghc CoreSyn.CoreExpr
-toCore expr = do
+toCore ::
+ [Module.ModuleName] -- ^ The modules that need to be imported before translating
+ -- this expression.
+ -> HsSyn.HsExpr RdrName.RdrName -- ^ The expression to translate to Core.
+ -> GHC.Ghc CoreSyn.CoreExpr -- ^ The resulting core expression.
+toCore modules expr = do
env <- GHC.getSession
let icontext = HscTypes.hsc_IC env
env <- GHC.getSession
let icontext = HscTypes.hsc_IC env
-- Translage the TcRn (typecheck-rename) monad into an IO monad
TcRnMonad.initTcPrintErrors env PrelNames.iNTERACTIVE $ do
(tc_expr, insts) <- TcRnMonad.getLIE $ do
-- Translage the TcRn (typecheck-rename) monad into an IO monad
TcRnMonad.initTcPrintErrors env PrelNames.iNTERACTIVE $ do
(tc_expr, insts) <- TcRnMonad.getLIE $ do
+ mapM importModule modules
-- Rename the expression, resulting in a HsExpr Name
(rn_expr, freevars) <- RnExpr.rnExpr expr
-- Typecheck the expression, resulting in a HsExpr Id and a list of
-- Rename the expression, resulting in a HsExpr Name
(rn_expr, freevars) <- RnExpr.rnExpr expr
-- Typecheck the expression, resulting in a HsExpr Id and a list of
let undef = hsTypedUndef $ coreToHsType ty
let app = HsExpr.HsApp (to_int) (undef)
let undef = hsTypedUndef $ coreToHsType ty
let app = HsExpr.HsApp (to_int) (undef)
execCore core
-- These functions build (parts of) a LHSExpr RdrName.
execCore core
-- These functions build (parts of) a LHSExpr RdrName.