summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorigloo <unknown>2003-08-15 15:53:01 +0000
committerigloo <unknown>2003-08-15 15:53:01 +0000
commitd9d7ceaa9f77c3d44a51405b71bb9fd4a44b6588 (patch)
tree0c483472d0c0da5461ae40b6503e4e65ad0fac93
parent3072ee8dfd68c5a89d4c756ba0dabbc84670a8e4 (diff)
downloadhaskell-d9d7ceaa9f77c3d44a51405b71bb9fd4a44b6588.tar.gz
[project @ 2003-08-15 15:53:00 by igloo]
Add support for splicing in foreign exports.
-rw-r--r--ghc/compiler/hsSyn/Convert.lhs13
1 files changed, 11 insertions, 2 deletions
diff --git a/ghc/compiler/hsSyn/Convert.lhs b/ghc/compiler/hsSyn/Convert.lhs
index a5f699472c..ddc11adb13 100644
--- a/ghc/compiler/hsSyn/Convert.lhs
+++ b/ghc/compiler/hsSyn/Convert.lhs
@@ -33,8 +33,10 @@ import TyCon ( DataConDetails(..) )
import Type ( Type )
import BasicTypes( Boxity(..), RecFlag(Recursive),
NewOrData(..), StrictnessMark(..) )
-import ForeignCall ( Safety(..), CCallConv(..), CCallTarget(..) )
-import HsDecls ( CImportSpec(..), ForeignImport(..), ForeignDecl(..) )
+import ForeignCall ( Safety(..), CCallConv(..), CCallTarget(..),
+ CExportSpec(..))
+import HsDecls ( CImportSpec(..), ForeignImport(..), ForeignExport(..),
+ ForeignDecl(..) )
import FastString( FastString, mkFastString, nilFS )
import Char ( ord, isAscii, isAlphaNum, isAlpha )
import List ( partition )
@@ -120,6 +122,13 @@ cvt_top (ForeignD (ImportF callconv safety from nm typ))
Threadsafe -> PlaySafe True
parsed = parse_ccall_impent nm from
+cvt_top (ForeignD (ExportF callconv as nm typ))
+ = let e = CExport (CExportStatic (mkFastString as) callconv')
+ in Left $ ForD (ForeignExport (vName nm) (cvtType typ) e False loc0)
+ where callconv' = case callconv of
+ CCall -> CCallConv
+ StdCall -> StdCallConv
+
parse_ccall_impent :: String -> String -> Maybe (FastString, CImportSpec)
parse_ccall_impent nm s
= case lex_ccall_impent s of