Check we're not using stdcall in foreign export on unsupported platforms
authorDuncan Coutts <duncan@well-typed.com>
Mon, 8 Jun 2009 14:55:09 +0000 (14:55 +0000)
committerDuncan Coutts <duncan@well-typed.com>
Mon, 8 Jun 2009 14:55:09 +0000 (14:55 +0000)
It's already checked for foreign import, but was missing for export.

compiler/typecheck/TcForeign.lhs

index 185e592..aa40d02 100644 (file)
@@ -243,8 +243,9 @@ tcFExport d = pprPanic "tcFExport" (ppr d)
 
 \begin{code}
 tcCheckFEType :: Type -> ForeignExport -> TcM ()
-tcCheckFEType sig_ty (CExport (CExportStatic str _)) = do
+tcCheckFEType sig_ty (CExport (CExportStatic str cconv)) = do
     check (isCLabelString str) (badCName str)
+    checkCConv cconv
     checkForeignArgs isFFIExternalTy arg_tys
     checkForeignRes nonIOok isFFIExportResultTy res_ty
   where
@@ -341,7 +342,7 @@ checkCConv CCallConv  = return ()
 #if i386_TARGET_ARCH
 checkCConv StdCallConv = return ()
 #else
-checkCConv StdCallConv = addErrTc (text "calling convention not supported on this architecture: stdcall")
+checkCConv StdCallConv = addErrTc (text "calling convention not supported on this platform: stdcall")
 #endif
 checkCConv CmmCallConv = panic "checkCConv CmmCallConv"
 \end{code}