Commit eb546347 authored by Ian Lynagh's avatar Ian Lynagh

Make some utils -Wall clean

parent d727d6d7
......@@ -54,7 +54,7 @@ import GHC.ConsoleHandler
import System.Posix
#endif
import IO ( isPermissionError, isDoesNotExistError )
import IO ( isPermissionError )
#if defined(GLOB)
import System.Process(runInteractiveCommand)
......@@ -409,7 +409,7 @@ getPkgDatabases modify my_flags = do
user_conf = dir </> subdir </> "package.conf"
user_exists <- doesFileExist user_conf
return (Just (user_conf,user_exists))
Left ex ->
Left _ ->
return Nothing
-- If the user database doesn't exist, and this command isn't a
......@@ -434,7 +434,7 @@ getPkgDatabases modify my_flags = do
let db_flags = [ f | Just f <- map is_db_flag my_flags ]
where is_db_flag FlagUser
| Just (user_conf,user_exists) <- mb_user_conf
| Just (user_conf, _user_exists) <- mb_user_conf
= Just user_conf
is_db_flag FlagGlobal = Just virt_global_conf
is_db_flag (FlagConfig f) = Just f
......@@ -550,7 +550,7 @@ modifyPackage
-> Force
-> IO ()
modifyPackage fn pkgid my_flags force = do
(db_stack, Just to_modify) <- getPkgDatabases True{-modify-} my_flags
(db_stack, Just _to_modify) <- getPkgDatabases True{-modify-} my_flags
((db_name, pkgs), ps) <- fmap head $ findPackagesByDB db_stack (Id pkgid)
-- let ((db_name, pkgs) : rest_of_stack) = db_stack
-- ps <- findPackages [(db_name,pkgs)] (Id pkgid)
......@@ -563,7 +563,8 @@ modifyPackage fn pkgid my_flags force = do
let
old_broken = brokenPackages (allPackagesInStack db_stack)
rest_of_stack = [ (nm,pkgs) | (nm,pkgs) <- db_stack, nm /= db_name ]
rest_of_stack = [ (nm, mypkgs)
| (nm, mypkgs) <- db_stack, nm /= db_name ]
new_stack = (db_name,new_config) : rest_of_stack
new_broken = map package (brokenPackages (allPackagesInStack new_stack))
newly_broken = filter (`notElem` map package old_broken) new_broken
......@@ -666,7 +667,7 @@ findPackagesByDB :: PackageDBStack -> PackageArg
-> IO [(NamedPackageDB, [InstalledPackageInfo])]
findPackagesByDB db_stack pkgarg
= case [ (db, matched)
| db@(db_name,pkgs) <- db_stack,
| db@(_, pkgs) <- db_stack,
let matched = filter (pkgarg `matchesPkg`) pkgs,
not (null matched) ] of
[] -> die ("cannot find package " ++ pkg_msg pkgarg)
......@@ -783,8 +784,8 @@ brokenPackages pkgs = go [] pkgs
where
go avail not_avail =
case partition (depsAvailable avail) not_avail of
([], not_avail) -> not_avail
(new_avail, not_avail) -> go (new_avail ++ avail) not_avail
([], not_avail') -> not_avail'
(new_avail, not_avail') -> go (new_avail ++ avail) not_avail'
depsAvailable :: [InstalledPackageInfo] -> InstalledPackageInfo
-> Bool
......@@ -1141,12 +1142,14 @@ catchIO io handler = io `Exception.catch` handler'
handler' e = Exception.throw e
#endif
#if mingw32_HOST_OS || mingw32_TARGET_OS
throwIOIO :: Exception.IOException -> IO a
#if __GLASGOW_HASKELL__ >= 609
throwIOIO = Exception.throwIO
#else
throwIOIO ioe = Exception.throwIO (Exception.IOException ioe)
#endif
#endif
catchError :: IO a -> (String -> IO a) -> IO a
#if __GLASGOW_HASKELL__ >= 609
......
-- (c) 2007 Andy Gill
-- Main driver for Hpc
import Trace.Hpc.Tix
import HpcFlags
import System.Environment
import System.Exit
......@@ -36,7 +35,7 @@ helpList =
]
section :: String -> [String] -> String
section msg [] = ""
section _ [] = ""
section msg cmds = msg ++ ":\n"
++ unlines [ take 14 (" " ++ cmd ++ repeat ' ') ++ summary hook
| cmd <- cmds
......@@ -48,10 +47,10 @@ dispatch :: [String] -> IO ()
dispatch [] = do
helpList
exitWith ExitSuccess
dispatch (txt:args) = do
dispatch (txt:args0) = do
case lookup txt hooks' of
Just plugin -> parse plugin args
_ -> parse help_plugin (txt:args)
Just plugin -> parse plugin args0
_ -> parse help_plugin (txt:args0)
where
parse plugin args =
case getOpt Permute (options plugin []) args of
......@@ -68,12 +67,15 @@ dispatch (txt:args) = do
$ foldr (.) id o
$ init_flags plugin
implementation plugin flags ns
main :: IO ()
main = do
args <- getArgs
dispatch args
------------------------------------------------------------------------------
hooks :: [Plugin]
hooks = [ help_plugin
, report_plugin
, markup_plugin
......@@ -86,10 +88,12 @@ hooks = [ help_plugin
, version_plugin
]
hooks' :: [(String, Plugin)]
hooks' = [ (name hook,hook) | hook <- hooks ]
------------------------------------------------------------------------------
help_plugin :: Plugin
help_plugin = Plugin { name = "help"
, usage = "[<HPC_COMMAND>]"
, summary = "Display help for hpc or a single command"
......@@ -99,10 +103,11 @@ help_plugin = Plugin { name = "help"
, final_flags = default_final_flags
}
help_main flags [] = do
help_main :: Flags -> [String] -> IO ()
help_main _ [] = do
helpList
exitWith ExitSuccess
help_main flags (sub_txt:_) = do
help_main _ (sub_txt:_) = do
case lookup sub_txt hooks' of
Nothing -> do
putStrLn $ "no such hpc command : " ++ sub_txt
......@@ -111,10 +116,12 @@ help_main flags (sub_txt:_) = do
command_usage plugin'
exitWith ExitSuccess
help_options :: FlagOptSeq
help_options = id
------------------------------------------------------------------------------
version_plugin :: Plugin
version_plugin = Plugin { name = "version"
, usage = ""
, summary = "Display version for hpc"
......@@ -124,6 +131,7 @@ version_plugin = Plugin { name = "version"
, final_flags = default_final_flags
}
version_main :: Flags -> [String] -> IO ()
version_main _ _ = putStrLn $ "hpc tools, version 0.6"
......
......@@ -13,15 +13,16 @@ import HpcFlags
import Control.Monad
import qualified HpcSet as Set
import qualified HpcMap as Map
import System.Environment
------------------------------------------------------------------------------
sum_options :: FlagOptSeq
sum_options
= excludeOpt
. includeOpt
. outputOpt
. unionModuleOpt
sum_plugin :: Plugin
sum_plugin = Plugin { name = "sum"
, usage = "[OPTION] .. <TIX_FILE> [<TIX_FILE> [<TIX_FILE> ..]]"
, options = sum_options
......@@ -31,6 +32,7 @@ sum_plugin = Plugin { name = "sum"
, final_flags = default_final_flags
}
combine_options :: FlagOptSeq
combine_options
= excludeOpt
. includeOpt
......@@ -39,6 +41,7 @@ combine_options
. combineFunOptInfo
. unionModuleOpt
combine_plugin :: Plugin
combine_plugin = Plugin { name = "combine"
, usage = "[OPTION] .. <TIX_FILE> <TIX_FILE>"
, options = combine_options
......@@ -48,6 +51,7 @@ combine_plugin = Plugin { name = "combine"
, final_flags = default_final_flags
}
map_options :: FlagOptSeq
map_options
= excludeOpt
. includeOpt
......@@ -56,6 +60,7 @@ map_options
. mapFunOptInfo
. unionModuleOpt
map_plugin :: Plugin
map_plugin = Plugin { name = "map"
, usage = "[OPTION] .. <TIX_FILE> "
, options = map_options
......@@ -68,7 +73,7 @@ map_plugin = Plugin { name = "map"
------------------------------------------------------------------------------
sum_main :: Flags -> [String] -> IO ()
sum_main flags [] = hpcError sum_plugin $ "no .tix file specified"
sum_main _ [] = hpcError sum_plugin $ "no .tix file specified"
sum_main flags (first_file:more_files) = do
Just tix <- readTix first_file
......@@ -95,7 +100,7 @@ combine_main flags [first_file,second_file] = do
case outputFile flags of
"-" -> putStrLn (show tix)
out -> writeTix out tix
combine_main flags [] = hpcError combine_plugin $ "need exactly two .tix files to combine"
combine_main _ _ = hpcError combine_plugin $ "need exactly two .tix files to combine"
map_main :: Flags -> [String] -> IO ()
map_main flags [first_file] = do
......@@ -111,8 +116,8 @@ map_main flags [first_file] = do
case outputFile flags of
"-" -> putStrLn (show tix')
out -> writeTix out tix'
map_main flags [] = hpcError map_plugin $ "no .tix file specified"
map_main flags _ = hpcError map_plugin $ "to many .tix files specified"
map_main _ [] = hpcError map_plugin $ "no .tix file specified"
map_main _ _ = hpcError map_plugin $ "to many .tix files specified"
mergeTixFile :: Flags -> (Integer -> Integer -> Integer) -> Tix -> String -> IO Tix
mergeTixFile flags fn tix file_name = do
......
......@@ -9,11 +9,11 @@ import HpcFlags
import Control.Monad
import qualified HpcSet as Set
import qualified HpcMap as Map
import System.Environment
import HpcUtils
import Data.Tree
------------------------------------------------------------------------------
draft_options :: FlagOptSeq
draft_options
= excludeOpt
. includeOpt
......@@ -21,6 +21,7 @@ draft_options
. hpcDirOpt
. outputOpt
draft_plugin :: Plugin
draft_plugin = Plugin { name = "draft"
, usage = "[OPTION] .. <TIX_FILE>"
, options = draft_options
......@@ -33,6 +34,7 @@ draft_plugin = Plugin { name = "draft"
------------------------------------------------------------------------------
draft_main :: Flags -> [String] -> IO ()
draft_main _ [] = error "draft_main: unhandled case: []"
draft_main hpcflags (progName:mods) = do
let hpcflags1 = hpcflags
{ includeMods = Set.fromList mods
......@@ -55,15 +57,14 @@ draft_main hpcflags (progName:mods) = do
makeDraft :: Flags -> TixModule -> IO String
makeDraft hpcflags tix = do
let mod = tixModuleName tix
hash = tixModuleHash tix
let modu = tixModuleName tix
tixs = tixModuleTixs tix
mix@(Mix filepath timestamp hash tabstop entries) <- readMixWithFlags hpcflags (Right tix)
(Mix filepath _ _ _ entries) <- readMixWithFlags hpcflags (Right tix)
let forest = createMixEntryDom
[ (span,(box,v > 0))
| ((span,box),v) <- zip entries tixs
[ (srcspan,(box,v > 0))
| ((srcspan,box),v) <- zip entries tixs
]
-- let show' (span,stuff) = show (span,stuff,grabHpcPos hsMap span)
......@@ -95,22 +96,25 @@ makeDraft hpcflags tix = do
where
txt = grabHpcPos hsMap pos
showPleaseTick d (TickInside [str] pos pleases) =
showPleaseTick d (TickInside [str] _ pleases) =
spaces d ++ "inside \"" ++ str ++ "\" {\n" ++
showPleaseTicks (d + 2) pleases ++
spaces d ++ "}"
showPleaseTick _ (TickInside _ _ _)
= error "showPleaseTick: Unhandled case TickInside"
showPleaseTicks d pleases = unlines (map (showPleaseTick d) pleases)
spaces d = take d (repeat ' ')
return $ "module " ++ show (fixPackageSuffix mod) ++ " {\n" ++
return $ "module " ++ show (fixPackageSuffix modu) ++ " {\n" ++
showPleaseTicks 2 non_ticked ++ "}"
fixPackageSuffix :: String -> String
fixPackageSuffix mod = case span (/= '/') mod of
(before,'/':after) -> before ++ ":" ++ after
_ -> mod
fixPackageSuffix modu = case span (/= '/') modu of
(before,'/':after) -> before ++ ":" ++ after
_ -> modu
data PleaseTick
= TickFun [String] HpcPos
......@@ -118,6 +122,8 @@ data PleaseTick
| TickInside [String] HpcPos [PleaseTick]
deriving Show
mkTickInside :: [String] -> HpcPos -> [PleaseTick]
-> [PleaseTick] -> [PleaseTick]
mkTickInside _ _ [] = id
mkTickInside nm pos inside = (TickInside nm pos inside :)
......@@ -127,11 +133,11 @@ findNotTickedFromTree (Node (pos,(TopLevelBox nm,False):_) _)
= [ TickFun nm pos ]
findNotTickedFromTree (Node (pos,(LocalBox nm,False):_) _)
= [ TickFun nm pos ]
findNotTickedFromTree (Node (pos,(TopLevelBox nm,True):others) children)
findNotTickedFromTree (Node (pos,(TopLevelBox nm,True):_) children)
= mkTickInside nm pos (findNotTickedFromList children) []
findNotTickedFromTree (Node (pos,_:others) children) =
findNotTickedFromTree (Node (pos,others) children)
findNotTickedFromTree (Node (pos,[]) children) = findNotTickedFromList children
findNotTickedFromTree (Node (_, []) children) = findNotTickedFromList children
findNotTickedFromList :: [MixEntryDom [(BoxLabel,Bool)]] -> [PleaseTick]
findNotTickedFromList = concatMap findNotTickedFromTree
......
......@@ -3,7 +3,6 @@
module HpcFlags where
import System.Console.GetOpt
import Data.Maybe ( fromMaybe )
import qualified HpcSet as Set
import Data.Char
import Trace.Hpc.Tix
......@@ -30,6 +29,7 @@ data Flags = Flags
, mergeModule :: MergeFun -- module-wise merge
}
default_flags :: Flags
default_flags = Flags
{ outputFile = "-"
, includeMods = Set.empty
......@@ -54,6 +54,7 @@ default_flags = Flags
-- We do this after reading flags, because the defaults
-- depends on if specific flags we used.
default_final_flags :: Flags -> Flags
default_final_flags flags = flags
{ srcDirs = if null (srcDirs flags)
then ["."]
......@@ -71,6 +72,10 @@ anArg flag detail argtype fn = (:) $ Option [] [flag] (ReqArg fn argtype) detail
infoArg :: String -> FlagOptSeq
infoArg info = (:) $ Option [] [] (NoArg $ id) info
excludeOpt, includeOpt, hpcDirOpt, srcDirOpt, destDirOpt, outputOpt,
perModuleOpt, decListOpt, xmlOutputOpt, funTotalsOpt,
altHighlightOpt, combineFunOpt, combineFunOptInfo, mapFunOpt,
mapFunOptInfo, unionModuleOpt :: FlagOptSeq
excludeOpt = anArg "exclude" "exclude MODULE and/or PACKAGE" "[PACKAGE:][MODULE]"
$ \ a f -> f { excludeMods = a `Set.insert` excludeMods f }
......@@ -125,12 +130,13 @@ unionModuleOpt = noArg "union"
-------------------------------------------------------------------------------
readMixWithFlags :: Flags -> Either String TixModule -> IO Mix
readMixWithFlags flags mod = readMix [ dir ++ "/" ++ hpcDir flags
| dir <- srcDirs flags
] mod
readMixWithFlags flags modu = readMix [ dir ++ "/" ++ hpcDir flags
| dir <- srcDirs flags
] modu
-------------------------------------------------------------------------------
command_usage :: Plugin -> IO ()
command_usage plugin =
putStrLn $
"Usage: hpc " ++ (name plugin) ++ " " ++
......@@ -213,9 +219,10 @@ data PostFun = ID | INV | ZERO
thePostFun :: PostFun -> Integer -> Integer
thePostFun ID x = x
thePostFun INV 0 = 1
thePostFun INV n = 0
thePostFun ZERO x = 0
thePostFun INV _ = 0
thePostFun ZERO _ = 0
postFuns :: [(String, PostFun)]
postFuns = [ (show pos,pos)
| pos <- [ID .. ZERO]
]
......@@ -228,6 +235,7 @@ theMergeFun :: (Ord a) => MergeFun -> Set.Set a -> Set.Set a -> Set.Set a
theMergeFun INTERSECTION = Set.intersection
theMergeFun UNION = Set.union
mergeFuns :: [(String, MergeFun)]
mergeFuns = [ (show pos,pos)
| pos <- [INTERSECTION,UNION]
]
......
......@@ -24,28 +24,33 @@ lexer (c:cs) line column
| isAlpha c = lexerKW cs [c] line (succ column)
| isDigit c = lexerINT cs [c] line (succ column)
| otherwise = error "lexer failure"
lexer [] line colunm = []
lexer [] _ _ = []
lexerKW :: String -> String -> Int -> Int -> [(Int,Int,Token)]
lexerKW (c:cs) s line column
| isAlpha c = lexerKW cs (s ++ [c]) line (succ column)
lexerKW other s line column = (line,column,ID s) : lexer other line column
lexerINT :: String -> String -> Int -> Int -> [(Int,Int,Token)]
lexerINT (c:cs) s line column
| isDigit c = lexerINT cs (s ++ [c]) line (succ column)
lexerINT other s line column = (line,column,INT (read s)) : lexer other line column
-- not technically correct for the new column count, but a good approximation.
lexerSTR :: String -> Int -> Int -> [(Int,Int,Token)]
lexerSTR cs line column
= case lex ('"' : cs) of
[(str,rest)] -> (line,succ column,STR (read str))
: lexer rest line (length (show str) + column + 1)
_ -> error "bad string"
lexerCAT :: String -> String -> Int -> Int -> [(Int,Int,Token)]
lexerCAT (c:cs) s line column
| c == ']' = (line,column,CAT s) : lexer cs line (succ column)
| otherwise = lexerCAT cs (s ++ [c]) line (succ column)
lexerCAT other s line column = error "lexer failure in CAT"
lexerCAT [] _ _ _ = error "lexer failure in CAT"
test :: IO ()
test = do
t <- readFile "EXAMPLE.tc"
print (initLexer t)
......
......@@ -10,6 +10,7 @@ import qualified Data.Map as Map
lookup :: Ord key => key -> Map key elt -> Maybe elt
fromList :: Ord key => [(key,elt)] -> Map key elt
fromListWith :: Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
toList :: Ord key => Map key elt -> [(key,elt)]
#if __GLASGOW_HASKELL__ < 604
type Map key elt = Map.FiniteMap key elt
......
......@@ -12,7 +12,6 @@ import Trace.Hpc.Util
import HpcFlags
import HpcUtils
import System.Environment
import System.Directory
import Data.List
import Data.Maybe(fromJust)
......@@ -22,6 +21,7 @@ import qualified HpcSet as Set
------------------------------------------------------------------------------
markup_options :: FlagOptSeq
markup_options
= excludeOpt
. includeOpt
......@@ -30,7 +30,8 @@ markup_options
. funTotalsOpt
. altHighlightOpt
. destDirOpt
markup_plugin :: Plugin
markup_plugin = Plugin { name = "markup"
, usage = "[OPTION] .. <TIX_FILE> [<MODULE> [<MODULE> ..]]"
, options = markup_options
......@@ -75,14 +76,14 @@ markup_main flags (prog:modNames) = do
index_alt = "hpc_index_alt"
index_exp = "hpc_index_exp"
let writeSummary name cmp = do
let writeSummary filename cmp = do
let mods' = sortBy cmp mods
putStrLn $ "Writing: " ++ (name ++ ".html")
writeFile (dest_dir ++ "/" ++ name ++ ".html") $
putStrLn $ "Writing: " ++ (filename ++ ".html")
writeFile (dest_dir ++ "/" ++ filename ++ ".html") $
"<html>" ++
"<style type=\"text/css\">" ++
"table.bar { background-color: #f25913; }\n" ++
......@@ -107,13 +108,13 @@ markup_main flags (prog:modNames) = do
"<th>%</th>" ++
"<th colspan=2>covered / total</th>" ++
"</tr>" ++
concat [ showModuleSummary (modName,fileName,summary)
| (modName,fileName,summary) <- mods'
concat [ showModuleSummary (modName,fileName,modSummary)
| (modName,fileName,modSummary) <- mods'
] ++
"<tr></tr>" ++
showTotalSummary (mconcat
[ summary
| (_,_,summary) <- mods'
[ modSummary
| (_,_,modSummary) <- mods'
])
++ "</table></html>\n"
......@@ -132,7 +133,8 @@ markup_main flags (prog:modNames) = do
(percent (expTicked s1) (expTotal s1))
markup_main flags [] = hpcError markup_plugin $ "no .tix file or executable name specified"
markup_main _ []
= hpcError markup_plugin $ "no .tix file or executable name specified"
genHtmlFromMod
:: String
......@@ -145,7 +147,7 @@ genHtmlFromMod dest_dir flags tix theFunTotals invertOutput = do
let theHsPath = srcDirs flags
let modName0 = tixModuleName tix
(Mix origFile _ mixHash tabStop mix') <- readMixWithFlags flags (Right tix)
(Mix origFile _ _ tabStop mix') <- readMixWithFlags flags (Right tix)
let arr_tix :: Array Int Integer
arr_tix = listArray (0,length (tixModuleTixs tix) - 1)
......@@ -176,7 +178,7 @@ genHtmlFromMod dest_dir flags tix theFunTotals invertOutput = do
]
let summary = foldr (.) id
let modSummary = foldr (.) id
[ \ st ->
case boxLabel of
ExpBox False
......@@ -228,7 +230,7 @@ genHtmlFromMod dest_dir flags tix theFunTotals invertOutput = do
"</style>",
"<pre>"] ++ addLines content' ++ "\n</pre>\n</html>\n";
summary `seq` return (modName0,fileName,summary)
modSummary `seq` return (modName0,fileName,modSummary)
data Loc = Loc !Int !Int
deriving (Eq,Ord,Show)
......@@ -288,8 +290,8 @@ addMarkup tabStop cs loc os ((t1,t2,tik0):ticks) | loc == t1 =
where
addTo (t,tik) [] = [(t,tik)]
addTo (t,tik) ((t',tik'):xs) | t <= t' = (t,tik):(t',tik'):xs
| t > t' = (t',tik):(t',tik'):xs
addTo (t,tik) ((t',tik'):xs) | t <= t' = (t,tik):(t',tik'):xs
| otherwise = (t',tik):(t',tik'):xs
addMarkup tabStop0 cs loc os ((t1,_t2,_tik):ticks) | loc > t1 =
-- throw away this tick, because it is from a previous place ??
......@@ -392,22 +394,22 @@ data ModuleSummary = ModuleSummary
showModuleSummary :: (String, String, ModuleSummary) -> String
showModuleSummary (modName,fileName,summary) =
showModuleSummary (modName,fileName,modSummary) =
"<tr>\n" ++
"<td>&nbsp;&nbsp;<tt>module <a href=\"" ++ fileName ++ "\">"
++ modName ++ "</a></tt></td>\n" ++
showSummary (topFunTicked summary) (topFunTotal summary) ++
showSummary (altTicked summary) (altTotal summary) ++
showSummary (expTicked summary) (expTotal summary) ++
showSummary (topFunTicked modSummary) (topFunTotal modSummary) ++
showSummary (altTicked modSummary) (altTotal modSummary) ++
showSummary (expTicked modSummary) (expTotal modSummary) ++
"</tr>\n"
showTotalSummary :: ModuleSummary -> String
showTotalSummary summary =
showTotalSummary modSummary =
"<tr style=\"background: #e0e0e0\">\n" ++
"<th align=left>&nbsp;&nbsp;Program Coverage Total</tt></th>\n" ++
showSummary (topFunTicked summary) (topFunTotal summary) ++
showSummary (altTicked summary) (altTotal summary) ++
showSummary (expTicked summary) (expTotal summary) ++
showSummary (topFunTicked modSummary) (topFunTotal modSummary) ++
showSummary (altTicked modSummary) (altTotal modSummary) ++
showSummary (expTicked modSummary) (expTotal modSummary) ++
"</tr>\n"
showSummary :: (Integral t) => t -> t -> String
......@@ -422,7 +424,7 @@ showSummary ticked total =
where
showP Nothing = "-&nbsp;"
showP (Just x) = show x ++ "%"
bar 0 inner = bar 100 "invbar"
bar 0 _ = bar 100 "invbar"
bar w inner = "<table cellpadding=0 cellspacing=0 width=\"100\" class=\"bar\">" ++
"<tr><td><table cellpadding=0 cellspacing=0 width=\"" ++ show w ++ "%\">" ++
"<tr><td height=12 class=" ++ show inner ++ "></td></tr>" ++
......
......@@ -9,11 +9,13 @@ import Trace.Hpc.Util
import HpcMap as Map
import Data.Tree
overlay_options :: FlagOptSeq
overlay_options
= srcDirOpt
. hpcDirOpt
. outputOpt
overlay_plugin :: Plugin
overlay_plugin = Plugin { name = "overlay"
, usage = "[OPTION] .. <OVERLAY_FILE> [<OVERLAY_FILE> [...]]"
, options = overlay_options
......@@ -23,19 +25,19 @@ overlay_plugin = Plugin { name = "overlay"