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
            
 
     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
 
 ------------------------------------------------
 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,
        alphaTyVars, betaTyVars, alphaTyVar, betaTyVar, gammaTyVar, deltaTyVar,
        alphaTy, betaTy, gammaTy, deltaTy,
        openAlphaTy, openBetaTy, openAlphaTyVar, openBetaTyVar, openAlphaTyVars,
+        argAlphaTy, argAlphaTyVar,
 
        primTyCons,
 
 
        primTyCons,
 
@@ -180,7 +181,12 @@ openAlphaTyVars@(openAlphaTyVar:openBetaTyVar:_) = tyVarList openTypeKind
 
 openAlphaTy, openBetaTy :: Type
 openAlphaTy = mkTyVarTy openAlphaTyVar
 
 openAlphaTy, openBetaTy :: Type
 openAlphaTy = mkTyVarTy openAlphaTyVar
-openBetaTy   = mkTyVarTy openBetaTyVar
+openBetaTy  = mkTyVarTy openBetaTyVar
+
+argAlphaTyVar :: TyVar
+(argAlphaTyVar : _) = tyVarList argTypeKind
+argAlphaTy :: Type
+argAlphaTy = mkTyVarTy argAlphaTyVar
 \end{code}
 
 
 \end{code}