Skip to content
Snippets Groups Projects
Commit 313a667e authored by Cheng Shao's avatar Cheng Shao :palm_tree:
Browse files

compiler: allow arbitrary label string for JSFFI exports

This commit allows arbitrary label string to appear in a foreign
export declaration, as long as the calling convention is javascript.
Well, doesn't make sense to enforce it's a C function symbol for a
JSFFI declaration anyway, and it gets in the way of implementing the
"sync" flavour of exports.

(cherry picked from commit a204df3a)
(cherry picked from commit 18dd15dc)
parent 2635afe6
No related branches found
No related tags found
No related merge requests found
...@@ -78,7 +78,7 @@ import GHC.Data.Bag ...@@ -78,7 +78,7 @@ import GHC.Data.Bag
import GHC.Driver.Hooks import GHC.Driver.Hooks
import qualified GHC.LanguageExtensions as LangExt import qualified GHC.LanguageExtensions as LangExt
import Control.Monad ( zipWithM ) import Control.Monad ( when, zipWithM )
import Control.Monad.Trans.Writer.CPS import Control.Monad.Trans.Writer.CPS
( WriterT, runWriterT, tell ) ( WriterT, runWriterT, tell )
import Control.Monad.Trans.Class import Control.Monad.Trans.Class
...@@ -443,7 +443,7 @@ tcFExport d = pprPanic "tcFExport" (ppr d) ...@@ -443,7 +443,7 @@ tcFExport d = pprPanic "tcFExport" (ppr d)
tcCheckFEType :: Type -> ForeignExport GhcRn -> TcM (ForeignExport GhcTc) tcCheckFEType :: Type -> ForeignExport GhcRn -> TcM (ForeignExport GhcTc)
tcCheckFEType sig_ty edecl@(CExport src (L l (CExportStatic esrc str cconv))) = do tcCheckFEType sig_ty edecl@(CExport src (L l (CExportStatic esrc str cconv))) = do
checkCg (Left edecl) backendValidityOfCExport checkCg (Left edecl) backendValidityOfCExport
checkTc (isCLabelString str) (TcRnInvalidCIdentifier str) when (cconv /= JavaScriptCallConv) $ checkTc (isCLabelString str) (TcRnInvalidCIdentifier str)
cconv' <- checkCConv (Left edecl) cconv cconv' <- checkCConv (Left edecl) cconv
checkForeignArgs isFFIExternalTy arg_tys checkForeignArgs isFFIExternalTy arg_tys
checkForeignRes nonIOok noCheckSafe isFFIExportResultTy res_ty checkForeignRes nonIOok noCheckSafe isFFIExportResultTy res_ty
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment