Generate foo(void) rather than foo() in FFI stub files
authorIan Lynagh <igloo@earth.li>
Sat, 16 Feb 2008 14:10:31 +0000 (14:10 +0000)
committerIan Lynagh <igloo@earth.li>
Sat, 16 Feb 2008 14:10:31 +0000 (14:10 +0000)
-Wstrict-prototypes warns about the latter.
Patch from pcc in trac #2100.

compiler/deSugar/DsForeign.lhs

index 05ff8bd..9ad1d48 100644 (file)
@@ -483,14 +483,17 @@ mkFExportCBits c_nm maybe_target arg_htys res_hty is_IO_res_ty cc
 
   header_bits = ptext SLIT("extern") <+> fun_proto <> semi
 
+  fun_args
+    | null aug_arg_info = text "void"
+    | otherwise         = hsep $ punctuate comma
+                               $ map (\(nm,ty,_,_) -> ty <+> nm) aug_arg_info
+
   fun_proto
     | libffi
       = ptext SLIT("void") <+> ftext c_nm <> 
           parens (ptext SLIT("void *cif STG_UNUSED, void* resp, void** args, void* the_stableptr"))
     | otherwise
-      = cResType <+> pprCconv <+> ftext c_nm <>
-             parens (hsep (punctuate comma (map (\(nm,ty,_,_) -> ty <+> nm) 
-                                                 aug_arg_info)))
+      = cResType <+> pprCconv <+> ftext c_nm <> parens fun_args
 
   -- the target which will form the root of what we ask rts_evalIO to run
   the_cfun