Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
bfc2cfa1
Commit
bfc2cfa1
authored
Jan 26, 2008
by
twanvl
Browse files
Fixed warnings in basicTypes/Demand
parent
75b21108
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/basicTypes/Demand.lhs
View file @
bfc2cfa1
...
...
@@ -5,13 +5,6 @@
\section[Demand]{@Demand@: the amount of demand on a value}
\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
#ifndef OLD_STRICTNESS
module Demand () where
#else
...
...
@@ -75,6 +68,9 @@ data Demand
type MaybeAbsent = Bool -- True <=> not even used
-- versions that don't worry about Absence:
wwLazy, wwStrict, wwPrim, wwEnum :: Demand
wwUnpack :: [Demand] -> Demand
wwLazy = WwLazy False
wwStrict = WwStrict
wwUnpack xs = WwUnpack False xs
...
...
@@ -84,8 +80,9 @@ wwEnum = WwEnum
seqDemand :: Demand -> ()
seqDemand (WwLazy a) = a `seq` ()
seqDemand (WwUnpack b ds) = b `seq` seqDemands ds
seqDemand
other
= ()
seqDemand
_
= ()
seqDemands :: [Demand] -> ()
seqDemands [] = ()
seqDemands (d:ds) = seqDemand d `seq` seqDemands ds
\end{code}
...
...
@@ -107,7 +104,7 @@ isStrict d = not (isLazy d)
isPrim :: Demand -> Bool
isPrim WwPrim = True
isPrim
other
= False
isPrim
_
= False
\end{code}
...
...
@@ -119,12 +116,14 @@ isPrim other = False
\begin{code}
pprDemands :: [Demand] -> Bool -> SDoc
pprDemands demands bot = hcat (map pprDemand demands) <> pp_bot
where
pp_bot | bot = ptext SLIT("B")
| otherwise = empty
pprDemand :: Demand -> SDoc
pprDemand (WwLazy False) = char 'L'
pprDemand (WwLazy True) = char 'A'
pprDemand WwStrict = char 'S'
...
...
@@ -185,7 +184,7 @@ data StrictnessInfo
seqStrictnessInfo :: StrictnessInfo -> ()
seqStrictnessInfo (StrictnessInfo ds b) = b `seq` seqDemands ds
seqStrictnessInfo
other
= ()
seqStrictnessInfo
_
= ()
\end{code}
\begin{code}
...
...
@@ -196,17 +195,21 @@ mkStrictnessInfo (xs, is_bot)
| otherwise = StrictnessInfo xs is_bot
where
totally_boring (WwLazy False) = True
totally_boring
other
= False
totally_boring
_
= False
noStrictnessInfo :: StrictnessInfo
noStrictnessInfo = NoStrictnessInfo
isBottomingStrictness :: StrictnessInfo -> Bool
isBottomingStrictness (StrictnessInfo _ bot) = bot
isBottomingStrictness NoStrictnessInfo = False
-- appIsBottom returns true if an application to n args would diverge
appIsBottom :: StrictnessInfo -> Int -> Bool
appIsBottom (StrictnessInfo ds bot) n = bot && (listLengthCmp ds n /=GT) -- not more than 'n' elts in 'ds'.
appIsBottom NoStrictnessInfo
n
= False
appIsBottom NoStrictnessInfo
_
= False
ppStrictnessInfo :: StrictnessInfo -> SDoc
ppStrictnessInfo NoStrictnessInfo = empty
ppStrictnessInfo (StrictnessInfo wrapper_args bot) = hsep [pprDemands wrapper_args bot]
\end{code}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment