import Panic
import SrcLoc
+import Data.List
+
data Flag m = Flag
{
flagName :: String, -- flag, without the leading -
flagDeprecated :: Deprecated -- is the flag deprecated?
}
-data Deprecated = Supported | Deprecated String
+data Deprecated = Supported
+ | Deprecated String
+ | DeprecatedFullText String
data OptKind m -- Suppose the flag is -f
= NoArg (m ()) -- -f all by itself
let warns' = case deprecated of
Deprecated warning ->
L loc ("Warning: " ++ dash_arg ++ " is deprecated: " ++ warning) : warns
+ DeprecatedFullText warning ->
+ L loc ("Warning: " ++ warning) : warns
Supported -> warns
in case processOneArg action rest arg args of
Left err -> process spec args spare (L loc err : errs) warns'
= case [ (removeSpaces rest, optKind, flagDeprecated flag)
| flag <- spec,
let optKind = flagOptKind flag,
- Just rest <- [maybePrefixMatch (flagName flag) arg],
+ Just rest <- [stripPrefix (flagName flag) arg],
arg_ok optKind rest arg ]
of
[] -> Nothing