TickBox representation change
[ghc-hetmet.git] / compiler / basicTypes / Id.lhs
index edaeb7a..549a58b 100644 (file)
@@ -22,7 +22,7 @@ module Id (
        -- Modifying an Id
        setIdName, setIdUnique, Id.setIdType, setIdExported, setIdNotExported, 
        setIdInfo, lazySetIdInfo, modifyIdInfo, maybeModifyIdInfo,
-       zapLamIdInfo, zapDemandIdInfo, 
+       zapLamIdInfo, zapDemandIdInfo, zapFragileIdInfo,
 
        -- Predicates
        isImplicitId, isDeadBinder, isDictId,
@@ -33,6 +33,7 @@ module Id (
        isFCallId, isFCallId_maybe,
        isDataConWorkId, isDataConWorkId_maybe, isDataConId_maybe, idDataCon,
        isBottomingId, idIsFrom,
+        isTickBoxOp, isTickBoxOp_maybe,
        hasNoBinding, 
 
        -- Inline pragma stuff
@@ -313,6 +314,19 @@ isDeadBinder bndr | isId bndr = isDeadOcc (idOccInfo bndr)
                  | otherwise = False   -- TyVars count as not dead
 \end{code}
 
+\begin{code}
+isTickBoxOp :: Id -> Bool
+isTickBoxOp id = 
+  case globalIdDetails id of
+    TickBoxOpId tick -> True
+    _                -> False
+
+isTickBoxOp_maybe :: Id -> Maybe TickBoxOp
+isTickBoxOp_maybe id = 
+  case globalIdDetails id of
+    TickBoxOpId tick -> Just tick
+    _                -> Nothing
+\end{code}
 
 %************************************************************************
 %*                                                                     *
@@ -513,9 +527,15 @@ clearOneShotLambda id
 \end{code}
 
 \begin{code}
+zapInfo :: (IdInfo -> Maybe IdInfo) -> Id -> Id
+zapInfo zapper id = maybeModifyIdInfo (zapper (idInfo id)) id
+
 zapLamIdInfo :: Id -> Id
-zapLamIdInfo id = maybeModifyIdInfo (zapLamInfo (idInfo id)) id
+zapLamIdInfo = zapInfo zapLamInfo
+
+zapDemandIdInfo = zapInfo zapDemandInfo
 
-zapDemandIdInfo id = maybeModifyIdInfo (zapDemandInfo (idInfo id)) id
+zapFragileIdInfo :: Id -> Id
+zapFragileIdInfo = zapInfo zapFragileInfo 
 \end{code}