Reverse the safe/unsafe requirement on foreign import prim
authorDuncan Coutts <duncan@well-typed.com>
Thu, 11 Jun 2009 11:52:43 +0000 (11:52 +0000)
committerDuncan Coutts <duncan@well-typed.com>
Thu, 11 Jun 2009 11:52:43 +0000 (11:52 +0000)
The safe/unsafe annotation doesn't currently mean anything for prim.
Just in case we decide it means something later it's better to stick
to using one or the other consistently. We decided that using safe
is the better one to require (and it's also the default).

compiler/typecheck/TcForeign.lhs

index 23756d9..1a8a3f3 100644 (file)
@@ -154,8 +154,8 @@ tcCheckFIType sig_ty arg_tys res_ty idecl@(CImport cconv safety _ _ (CFunction t
   | cconv == PrimCallConv = do
       checkCg (checkCOrAsmOrDotNetOrInterp)
       checkCTarget target
-      check (safety == PlayRisky)
-            (text "A `foreign import prim' must always be annotated as `unsafe'")
+      check (playSafe safety)
+            (text "The safe/unsafe annotation should not be used with `foreign import prim'.")
       dflags <- getDOpts
       checkForeignArgs (isFFIPrimArgumentTy dflags) arg_tys
       -- prim import result is more liberal, allows (#,,#)