Eta expand unsafeCoerce and add a pointer to the Note
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 17 Feb 2012 14:02:48 +0000 (14:02 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 17 Feb 2012 14:02:48 +0000 (14:02 +0000)
Unsafe/Coerce.hs

index 72f35b2..50f52ed 100644 (file)
@@ -34,7 +34,10 @@ module Unsafe.Coerce (unsafeCoerce) where
 #if defined(__GLASGOW_HASKELL__)
 import GHC.Prim (unsafeCoerce#)
 unsafeCoerce :: a -> b
-unsafeCoerce = unsafeCoerce#
+unsafeCoerce x = unsafeCoerce# x
+  -- See Note [Unsafe coerce magic] in basicTypes/MkId
+  -- NB: Do not eta-reduce this definition, else the type checker 
+  -- give usafeCoerce the same (dangerous) type as unsafeCoerce#
 #endif
 
 #if defined(__NHC__)