module CSPM.CommandLineOptions (
Options(..),
allOptions,
defaultOptions,
typeCheckerOptions,
setOptions,
) where
import CSPM
import qualified CSPM.TypeChecker.Exceptions as TC
import System.Console.GetOpt
data Options = Options {
tcOptions :: TC.ErrorOptions
}
defaultOptions :: Options
defaultOptions = Options {
tcOptions = TC.defaultErrorOptions
}
typeCheckerOptions :: (a -> Options) -> (a -> Options -> a) ->
[OptDescr (a -> a)]
typeCheckerOptions get set =
let
setFlag func opts = set opts (func o)
where o = get opts
in [
Option [] ["fno-warn-deprecations"]
(NoArg (setFlag $ \ o -> o {
tcOptions = (tcOptions o) {
TC.warnDeprecatedNamesUsed = False
}
}))
"Disables type-checker warnings for deprecations",
Option [] ["fno-warn-unchecked-calls"]
(NoArg (setFlag $ \o -> o {
tcOptions = (tcOptions o) {
TC.warnUnsafeNamesUsed = False
}
}))
("Disables type-checker warnings for function calls that cannot " ++
"be type-checked")
]
allOptions :: (a -> Options) -> (a -> Options -> a) ->
[OptDescr (a -> a)]
allOptions get set = typeCheckerOptions get set
setOptions :: CSPMMonad m => Options -> m ()
setOptions opts = do
modifyTypeCheckerErrorOptions (\ _ -> tcOptions opts)