Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- dsExpr :: HsExpr GhcTc -> DsM CoreExpr
- dsLExpr :: LHsExpr GhcTc -> DsM CoreExpr
- dsLExprNoLP :: LHsExpr GhcTc -> DsM CoreExpr
- dsLocalBinds :: HsLocalBinds GhcTc -> CoreExpr -> DsM CoreExpr
- dsValBinds :: HsValBinds GhcTc -> CoreExpr -> DsM CoreExpr
- dsLit :: HsLit GhcRn -> DsM CoreExpr
- dsSyntaxExpr :: SyntaxExpr GhcTc -> [CoreExpr] -> DsM CoreExpr
Documentation
dsLExpr :: LHsExpr GhcTc -> DsM CoreExpr Source #
Replace the body of the function with this block to test the hsExprType
function in GHC.Tc.Utils.Zonk:
putSrcSpanDs loc $ do
{ core_expr <- dsExpr e
; massertPpr (exprType core_expr eqType
hsExprType e)
(ppr e + dcolon + ppr (hsExprType e) $$
ppr core_expr + dcolon + ppr (exprType core_expr))
; return core_expr }
dsLExprNoLP :: LHsExpr GhcTc -> DsM CoreExpr Source #
Variant of dsLExpr
that ensures that the result is not levity
polymorphic. This should be used when the resulting expression will
be an argument to some other function.
See Note [Levity polymorphism checking] in GHC.HsToCore.Monad
See Note [Levity polymorphism invariants] in GHC.Core
dsLocalBinds :: HsLocalBinds GhcTc -> CoreExpr -> DsM CoreExpr Source #
dsValBinds :: HsValBinds GhcTc -> CoreExpr -> DsM CoreExpr Source #
dsSyntaxExpr :: SyntaxExpr GhcTc -> [CoreExpr] -> DsM CoreExpr Source #