diff options
author | igloo <unknown> | 2003-08-15 15:53:01 +0000 |
---|---|---|
committer | igloo <unknown> | 2003-08-15 15:53:01 +0000 |
commit | d9d7ceaa9f77c3d44a51405b71bb9fd4a44b6588 (patch) | |
tree | 0c483472d0c0da5461ae40b6503e4e65ad0fac93 | |
parent | 3072ee8dfd68c5a89d4c756ba0dabbc84670a8e4 (diff) | |
download | haskell-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.lhs | 13 |
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 |