Nuke isCertainlyPredReprTy
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 7 Sep 2011 16:44:52 +0000 (17:44 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 7 Sep 2011 16:44:52 +0000 (17:44 +0100)
compiler/basicTypes/Id.lhs
compiler/coreSyn/CoreUtils.lhs
compiler/types/Type.lhs

index e66fbeb..2536497 100644 (file)
@@ -58,7 +58,7 @@ module Id (
        hasNoBinding, 
 
        -- ** Evidence variables
-       DictId, isDictId, isCertainlyEvVar,
+       DictId, isDictId, isEvVar,
 
        -- ** Inline pragma stuff
        idInlinePragma, setInlinePragma, modifyInlinePragma,
@@ -447,8 +447,8 @@ isTickBoxOp_maybe id =
 %************************************************************************
 
 \begin{code}
-isCertainlyEvVar :: Var -> Bool
-isCertainlyEvVar var = isCertainlyPredReprTy (varType var)
+isEvVar :: Var -> Bool
+isEvVar var = isPredTy (varType var)
 
 isDictId :: Id -> Bool
 isDictId id = isDictTy (idType id)
index 0b10210..bc1e45e 100644 (file)
@@ -630,7 +630,7 @@ isExpandableApp fn n_val_args
      go n_val_args ty 
        | Just (_, ty) <- splitForAllTy_maybe ty   = go n_val_args ty
        | Just (arg, ty) <- splitFunTy_maybe ty
-       , isCertainlyPredReprTy arg                = go (n_val_args-1) ty
+       , isPredTy arg                             = go (n_val_args-1) ty
        | otherwise                                = False
 \end{code}
 
@@ -1435,7 +1435,7 @@ tryEtaReduce bndrs body
        | otherwise = idArity fun             
 
     ---------------
-    ok_lam v = isTyVar v || isCertainlyEvVar v
+    ok_lam v = isTyVar v || isEvVar v
 
     ---------------
     ok_arg :: Var              -- Of type bndr_t
index 27108a5..0811ba5 100644 (file)
@@ -61,7 +61,7 @@ module Type (
         funTyCon,
 
         -- ** Predicates on types
-        isTyVarTy, isFunTy, isDictTy, isCertainlyPredReprTy, isPredTy,
+        isTyVarTy, isFunTy, isDictTy, isPredTy,
 
        -- (Lifting and boxity)
        isUnLiftedType, isUnboxedTupleType, isAlgType, isClosedAlgType,
@@ -774,6 +774,9 @@ noParenPred :: PredType -> Bool
 -- But   (?x::Int) => Int -> Int
 noParenPred p = isClassPred p || isEqPred p
 
+isPredTy :: Type -> Bool
+isPredTy ty = typeKind ty `eqKind` constraintKind
+
 isClassPred, isEqPred, isIPPred :: PredType -> Bool
 isClassPred ty = case tyConAppTyCon_maybe ty of
     Just tyCon | isClassTyCon tyCon -> True
@@ -788,20 +791,6 @@ isIPPred ty = case tyConAppTyCon_maybe ty of
 
 Make PredTypes
 
-\begin{code}
--- We can't tell if a type originated from an IParam predicate, so
--- this function is conservative. It is only used in the eta-contraction/expansion
--- logic at the moment, so this doesn't matter a great deal.
-isCertainlyPredReprTy :: Type -> Bool
-isCertainlyPredReprTy ty | Just ty' <- coreView ty = isCertainlyPredReprTy ty'
-isCertainlyPredReprTy ty = case tyConAppTyCon_maybe ty of
-       Just tc -> tc `hasKey` eqPrimTyConKey || isClassTyCon tc
-       Nothing -> False
-
-isPredTy :: Type -> Bool
-isPredTy ty = typeKind ty `eqKind` constraintKind
-\end{code}
-
 --------------------- Equality types ---------------------------------
 \begin{code}
 -- | Creates a type equality predicate