Flip direction of newtype coercions, fix some comments
[ghc-hetmet.git] / compiler / deSugar / DsCCall.lhs
index 0541f5d..a041665 100644 (file)
@@ -34,7 +34,7 @@ import Type           ( Type, isUnLiftedType, mkFunTys, mkFunTy,
                          splitRecNewType_maybe, splitForAllTy_maybe,
                          isUnboxedTupleType
                        )
-import Coercion         ( Coercion, splitRecNewTypeCo_maybe, mkSymCoercion )
+import Coercion         ( Coercion, splitNewTypeRepCo_maybe, mkSymCoercion )
 import PrimOp          ( PrimOp(..) )
 import TysPrim         ( realWorldStatePrimTy, intPrimTy,
                          byteArrayPrimTyCon, mutableByteArrayPrimTyCon,
@@ -160,8 +160,8 @@ unboxArg arg
   = returnDs (arg, \body -> body)
 
   -- Recursive newtypes
-  | Just(rep_ty, co) <- splitRecNewTypeCo_maybe arg_ty
-  = unboxArg (mkCoerce (mkSymCoercion co) arg)
+  | Just(rep_ty, co) <- splitNewTypeRepCo_maybe arg_ty
+  = unboxArg (mkCoerce co arg)
       
   -- Booleans
   | Just (tc,_) <- splitTyConApp_maybe arg_ty, 
@@ -399,9 +399,9 @@ resultWrapper result_ty
                                    (LitAlt (mkMachInt 0),[],Var falseDataConId)])
 
   -- Recursive newtypes
-  | Just (rep_ty, co) <- splitRecNewTypeCo_maybe result_ty
+  | Just (rep_ty, co) <- splitNewTypeRepCo_maybe result_ty
   = resultWrapper rep_ty `thenDs` \ (maybe_ty, wrapper) ->
-    returnDs (maybe_ty, \e -> mkCoerce co (wrapper e))
+    returnDs (maybe_ty, \e -> mkCoerce (mkSymCoercion co) (wrapper e))
 
   -- The type might contain foralls (eg. for dummy type arguments,
   -- referring to 'Ptr a' is legal).