Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- tcForeignImports :: [LForeignDecl GhcRn] -> TcM ([Id], [LForeignDecl GhcTc], Bag GlobalRdrElt)
- tcForeignExports :: [LForeignDecl GhcRn] -> TcM (LHsBinds GhcTcId, [LForeignDecl GhcTcId], Bag GlobalRdrElt)
- isForeignImport :: LForeignDecl name -> Bool
- isForeignExport :: LForeignDecl name -> Bool
- tcFImport :: LForeignDecl GhcRn -> TcM (Id, LForeignDecl GhcTc, Bag GlobalRdrElt)
- tcFExport :: ForeignDecl GhcRn -> TcM (LHsBind GhcTc, ForeignDecl GhcTc, Bag GlobalRdrElt)
- tcForeignImports' :: [LForeignDecl GhcRn] -> TcM ([Id], [LForeignDecl GhcTc], Bag GlobalRdrElt)
- tcCheckFIType :: [Type] -> Type -> ForeignImport -> TcM ForeignImport
- checkCTarget :: CCallTarget -> TcM ()
- checkForeignArgs :: (Type -> Validity) -> [Type] -> TcM ()
- checkForeignRes :: Bool -> Bool -> (Type -> Validity) -> Type -> TcM ()
- normaliseFfiType :: Type -> TcM (Coercion, Type, Bag GlobalRdrElt)
- nonIOok :: Bool
- mustBeIO :: Bool
- checkSafe :: Bool
- noCheckSafe :: Bool
- tcForeignExports' :: [LForeignDecl GhcRn] -> TcM (LHsBinds GhcTcId, [LForeignDecl GhcTcId], Bag GlobalRdrElt)
- tcCheckFEType :: Type -> ForeignExport -> TcM ForeignExport
Documentation
tcForeignImports :: [LForeignDecl GhcRn] -> TcM ([Id], [LForeignDecl GhcTc], Bag GlobalRdrElt) Source #
tcForeignExports :: [LForeignDecl GhcRn] -> TcM (LHsBinds GhcTcId, [LForeignDecl GhcTcId], Bag GlobalRdrElt) Source #
isForeignImport :: LForeignDecl name -> Bool Source #
isForeignExport :: LForeignDecl name -> Bool Source #
tcFImport :: LForeignDecl GhcRn -> TcM (Id, LForeignDecl GhcTc, Bag GlobalRdrElt) Source #
tcFExport :: ForeignDecl GhcRn -> TcM (LHsBind GhcTc, ForeignDecl GhcTc, Bag GlobalRdrElt) Source #
tcForeignImports' :: [LForeignDecl GhcRn] -> TcM ([Id], [LForeignDecl GhcTc], Bag GlobalRdrElt) Source #
tcCheckFIType :: [Type] -> Type -> ForeignImport -> TcM ForeignImport Source #
checkCTarget :: CCallTarget -> TcM () Source #
checkForeignRes :: Bool -> Bool -> (Type -> Validity) -> Type -> TcM () Source #
Check that the type has the form (IO t) or (t) , and that t satisfies the given predicate. When calling this function, any newtype wrappers (should) have been already dealt with by normaliseFfiType.
We also check that the Safe Haskell condition of FFI imports having results in the IO monad holds.
normaliseFfiType :: Type -> TcM (Coercion, Type, Bag GlobalRdrElt) Source #
noCheckSafe :: Bool Source #
tcForeignExports' :: [LForeignDecl GhcRn] -> TcM (LHsBinds GhcTcId, [LForeignDecl GhcTcId], Bag GlobalRdrElt) Source #
tcCheckFEType :: Type -> ForeignExport -> TcM ForeignExport Source #