Allow absent State# RealWorld arguments
authorsimonpj@microsoft.com <unknown>
Thu, 23 Sep 2010 11:13:56 +0000 (11:13 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 23 Sep 2010 11:13:56 +0000 (11:13 +0000)
compiler/stranal/WwLib.lhs

index 7d78416..e7d0edf 100644 (file)
@@ -20,6 +20,7 @@ import Demand         ( Demand(..), DmdResult(..), Demands(..) )
 import MkCore          ( mkRuntimeErrorApp, aBSENT_ERROR_ID )
 import MkId            ( realWorldPrimId, voidArgId, 
                           mkUnpackCase, mkProductBox )
+import TysPrim         ( realWorldStatePrimTy )
 import TysWiredIn      ( tupleCon )
 import Type
 import Coercion         ( mkSymCoercion, splitNewTypeRepCo_maybe )
@@ -524,8 +525,10 @@ mk_absent_let arg
   | Just (tc, _) <- splitTyConApp_maybe arg_ty
   , Just lit <- absentLiteralOf tc
   = Just (Let (NonRec arg (Lit lit)))
+  | arg_ty `coreEqType` realWorldStatePrimTy 
+  = Just (Let (NonRec arg (Var realWorldPrimId)))
   | otherwise
-  = WARN( True, ptext (sLit "No asbent value for") <+> ppr arg_ty )
+  = WARN( True, ptext (sLit "No absent value for") <+> ppr arg_ty )
     Nothing
   where
     arg_ty  = idType arg