summaryrefslogtreecommitdiff
path: root/utils/hpc
diff options
context:
space:
mode:
authorandy@galois.com <unknown>2007-07-11 07:23:49 +0000
committerandy@galois.com <unknown>2007-07-11 07:23:49 +0000
commit8788d157ec75d169832fc83ec456debab3158541 (patch)
treea49541aa2fd63c672321fba168984d8c7af82603 /utils/hpc
parente04f49034968322349e0f3f608e1b5a856fd6521 (diff)
downloadhaskell-8788d157ec75d169832fc83ec456debab3158541.tar.gz
Adding support for packages into hpc tools
Diffstat (limited to 'utils/hpc')
-rw-r--r--utils/hpc/HpcFlags.hs25
1 files changed, 18 insertions, 7 deletions
diff --git a/utils/hpc/HpcFlags.hs b/utils/hpc/HpcFlags.hs
index 607b1a80cb..2cbe0c19c3 100644
--- a/utils/hpc/HpcFlags.hs
+++ b/utils/hpc/HpcFlags.hs
@@ -67,9 +67,9 @@ anArg flag detail argtype fn = Option [] [flag] (ReqArg fn argtype) detail
infoArg :: String -> OptDescr (Flags -> Flags)
infoArg info = Option [] [] (NoArg $ id) info
-excludeOpt = anArg "exclude" "exclude MODULE" "MODULE" $ \ a f -> f { excludeMods = a `Set.insert` excludeMods f }
+excludeOpt = anArg "exclude" "exclude MODULE and/or PACKAGE" "[PACKAGE:][MODULE]" $ \ a f -> f { excludeMods = a `Set.insert` excludeMods f }
-includeOpt = anArg "include" "include MODULE" "MODULE" $ \ a f -> f { includeMods = a `Set.insert` includeMods f }
+includeOpt = anArg "include" "include MODULE and/or PACKAGE" "[PACKAGE:][MODULE]" $ \ a f -> f { includeMods = a `Set.insert` includeMods f }
hpcDirOpt = anArg "hpcdir" "path to .mix files (default .hpc)" "DIR"
$ \ a f -> f { hpcDirs = hpcDirs f ++ [a] }
hsDirOpt = anArg "hsdir" "path to .hs files (default .)" "DIR"
@@ -128,11 +128,22 @@ data Plugin = Plugin { name :: String
-- * otherwise, accepts just the included modules.
allowModule :: Flags -> String -> Bool
-allowModule flags mod
- | mod `Set.member` excludeMods flags = False
- | Set.null (includeMods flags) = True
- | mod `Set.member` includeMods flags = True
- | otherwise = False
+allowModule flags full_mod
+ | full_mod `Set.member` excludeMods flags = False
+ | pkg_name `Set.member` excludeMods flags = False
+ | mod_name `Set.member` excludeMods flags = False
+ | Set.null (includeMods flags) = True
+ | full_mod `Set.member` includeMods flags = True
+ | pkg_name `Set.member` includeMods flags = True
+ | mod_name `Set.member` includeMods flags = True
+ | otherwise = False
+ where
+ -- pkg name always ends with '/', main
+ (pkg_name,mod_name) =
+ case span (/= ':') full_mod of
+ (p,':':m) -> (p ++ ":",m)
+ (m,[]) -> (":",m)
+ _ -> error "impossible case in allowModule"
filterTix :: Flags -> Tix -> Tix
filterTix flags (Tix tixs) =