\end{itemize}
\begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module BasicTypes(
Version, bumpVersion, initialVersion,
| IAmALoopBreaker -- Used by the occurrence analyser to mark loop-breakers
-- in a group of recursive definitions
- !RulesOnly -- True <=> This loop breaker mentions the other binders
- -- in its recursive group only in its RULES, not
- -- in its rhs
- -- See OccurAnal Note [RulesOnly]
+ !RulesOnly -- True <=> This is a weak or rules-only loop breaker
+ -- See OccurAnal Note [Weak loop breakers]
type RulesOnly = Bool
\end{code}
neverInlineSpec = Inline NeverActive False -- NOINLINE
instance Outputable Activation where
- ppr AlwaysActive = empty -- The default
+ ppr NeverActive = ptext SLIT("NEVER")
+ ppr AlwaysActive = ptext SLIT("ALWAYS")
ppr (ActiveBefore n) = brackets (char '~' <> int n)
ppr (ActiveAfter n) = brackets (int n)
- ppr NeverActive = ptext SLIT("NEVER")
instance Outputable InlineSpec where
- ppr (Inline act True) = ptext SLIT("INLINE") <> ppr act
- ppr (Inline act False) = ptext SLIT("NOINLINE") <> ppr act
+ ppr (Inline act is_inline)
+ | is_inline = ptext SLIT("INLINE")
+ <> case act of
+ AlwaysActive -> empty
+ other -> ppr act
+ | otherwise = ptext SLIT("NOINLINE")
+ <> case act of
+ NeverActive -> empty
+ other -> ppr act
isActive :: CompilerPhase -> Activation -> Bool
isActive p NeverActive = False