Give the correct kind to unsafeCoerce#
authorsimonpj@microsoft.com <unknown>
Tue, 27 Jul 2010 13:15:38 +0000 (13:15 +0000)
committersimonpj@microsoft.com <unknown>
Tue, 27 Jul 2010 13:15:38 +0000 (13:15 +0000)
compiler/basicTypes/MkId.lhs
compiler/prelude/TysPrim.lhs

index 6e7b0c0..d7cd8cd 100644 (file)
@@ -920,11 +920,11 @@ unsafeCoerceId
     info = noCafIdInfo `setUnfoldingInfo` mkCompulsoryUnfolding rhs
            
 
-    ty  = mkForAllTys [openAlphaTyVar,openBetaTyVar]
-                      (mkFunTy openAlphaTy openBetaTy)
-    [x] = mkTemplateLocals [openAlphaTy]
-    rhs = mkLams [openAlphaTyVar,openBetaTyVar,x] $
-          Cast (Var x) (mkUnsafeCoercion openAlphaTy openBetaTy)
+    ty  = mkForAllTys [argAlphaTyVar,openBetaTyVar]
+                      (mkFunTy argAlphaTy openBetaTy)
+    [x] = mkTemplateLocals [argAlphaTy]
+    rhs = mkLams [argAlphaTyVar,openBetaTyVar,x] $
+          Cast (Var x) (mkUnsafeCoercion argAlphaTy openBetaTy)
 
 ------------------------------------------------
 nullAddrId :: Id
index 3490a82..efeced2 100644 (file)
@@ -12,6 +12,7 @@ module TysPrim(
        alphaTyVars, betaTyVars, alphaTyVar, betaTyVar, gammaTyVar, deltaTyVar,
        alphaTy, betaTy, gammaTy, deltaTy,
        openAlphaTy, openBetaTy, openAlphaTyVar, openBetaTyVar, openAlphaTyVars,
+        argAlphaTy, argAlphaTyVar,
 
        primTyCons,
 
@@ -180,7 +181,12 @@ openAlphaTyVars@(openAlphaTyVar:openBetaTyVar:_) = tyVarList openTypeKind
 
 openAlphaTy, openBetaTy :: Type
 openAlphaTy = mkTyVarTy openAlphaTyVar
-openBetaTy   = mkTyVarTy openBetaTyVar
+openBetaTy  = mkTyVarTy openBetaTyVar
+
+argAlphaTyVar :: TyVar
+(argAlphaTyVar : _) = tyVarList argTypeKind
+argAlphaTy :: Type
+argAlphaTy = mkTyVarTy argAlphaTyVar
 \end{code}