[project @ 2003-08-15 15:53:00 by igloo]
authorigloo <unknown>
Fri, 15 Aug 2003 15:53:01 +0000 (15:53 +0000)
committerigloo <unknown>
Fri, 15 Aug 2003 15:53:01 +0000 (15:53 +0000)
Add support for splicing in foreign exports.

ghc/compiler/hsSyn/Convert.lhs

index a5f6994..ddc11ad 100644 (file)
@@ -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