liquidhaskell-0.6.0.0: src/Language/Haskell/Liquid/UX/Config.hs
-----------------------------------------------------------------------------
-- | Command Line Config Options --------------------------------------------
-----------------------------------------------------------------------------
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
module Language.Haskell.Liquid.UX.Config (
-- * Configuration Options
Config (..)
, HasConfig (..)
, hasOpt
) where
import Prelude hiding (error)
import Data.Serialize ( Serialize )
import Language.Fixpoint.Types.Config hiding (Config)
import Data.Typeable (Typeable)
import Data.Generics (Data)
import GHC.Generics
-- NOTE: adding strictness annotations breaks the help message
data Config = Config {
files :: [FilePath] -- ^ source files to check
, idirs :: [FilePath] -- ^ path to directory for including specs
, newcheck :: Bool -- ^ new liquid-fixpoint sort check
, diffcheck :: Bool -- ^ check subset of binders modified (+ dependencies) since last check
, linear :: Bool -- ^ uninterpreted integer multiplication and division
, higherorder :: Bool -- ^ allow higher order binders into the logic
, fullcheck :: Bool -- ^ check all binders (overrides diffcheck)
, saveQuery :: Bool -- ^ save fixpoint query
, binders :: [String] -- ^ set of binders to check
, noCheckUnknown :: Bool -- ^ whether to complain about specifications for unexported and unused values
, notermination :: Bool -- ^ disable termination check
, autoproofs :: Bool -- ^ automatically construct proofs from axioms
, nowarnings :: Bool -- ^ disable warnings output (only show errors)
, trustinternals :: Bool -- ^ type all internal variables with true
, nocaseexpand :: Bool -- ^ disable case expand
, strata :: Bool -- ^ enable strata analysis
, notruetypes :: Bool -- ^ disable truing top level types
, totality :: Bool -- ^ check totality in definitions
, noPrune :: Bool -- ^ disable prunning unsorted Refinements
, cores :: Maybe Int -- ^ number of cores used to solve constraints
, minPartSize :: Int -- ^ Minimum size of a partition
, maxPartSize :: Int -- ^ Maximum size of a partition. Overrides minPartSize
, maxParams :: Int -- ^ the maximum number of parameters to accept when mining qualifiers
, smtsolver :: Maybe SMTSolver -- ^ name of smtsolver to use [default: try z3, cvc4, mathsat in order]
, shortNames :: Bool -- ^ drop module qualifers from pretty-printed names.
, shortErrors :: Bool -- ^ don't show subtyping errors and contexts.
, cabalDir :: Bool -- ^ find and use .cabal file to include paths to sources for imported modules
, ghcOptions :: [String] -- ^ command-line options to pass to GHC
, cFiles :: [String] -- ^ .c files to compile and link against (for GHC)
, eliminate :: Bool
, port :: Int -- ^ port at which lhi should listen
, exactDC :: Bool -- ^ Automatically generate singleton types for data constructors
, scrapeImports :: Bool -- ^ scrape qualifiers from imported specifications
, scrapeUsedImports :: Bool -- ^ scrape qualifiers from used, imported specifications
, elimStats :: Bool -- ^ print eliminate stats
} deriving (Generic, Data, Typeable, Show, Eq)
instance Serialize SMTSolver
instance Serialize Config
class HasConfig t where
getConfig :: t -> Config
hasOpt :: HasConfig t => t -> (Config -> Bool) -> Bool
hasOpt t f = f (getConfig t)
instance HasConfig Config where
getConfig = id