Skip to content
Snippets Groups Projects
Commit 2bf0e7c0 authored by Cheng Shao's avatar Cheng Shao :beach:
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)
parent fd078523
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
...@@ -444,7 +444,7 @@ tcFExport d = pprPanic "tcFExport" (ppr d) ...@@ -444,7 +444,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.
Finish editing this message first!
Please register or to comment