----------------------------------------------------------------------------- -- -- Module : Language.PureScript.Options -- Copyright : (c) Phil Freeman 2013 -- License : MIT -- -- Maintainer : Phil Freeman -- Stability : experimental -- Portability : -- -- | -- The data type of compiler options -- ----------------------------------------------------------------------------- {-# LANGUAGE GADTs, DataKinds, StandaloneDeriving #-} module Language.PureScript.Options where -- | -- Indicates the mode of the compiler. Lifted using DataKinds to refine the Options type. -- data Mode = Compile | Make -- | -- Per-mode options -- data ModeOptions mode where CompileOptions :: String -> [String] -> [String] -> ModeOptions Compile MakeOptions :: ModeOptions Make browserNamespace :: ModeOptions Compile -> String browserNamespace (CompileOptions ns _ _) = ns entryPointModules :: ModeOptions Compile -> [String] entryPointModules (CompileOptions _ ms _) = ms codeGenModules :: ModeOptions Compile -> [String] codeGenModules (CompileOptions _ _ ms) = ms deriving instance Show (ModeOptions mode) -- | -- The data type of compiler options -- data Options mode = Options { -- | -- Disable inclusion of the built in Prelude -- optionsNoPrelude :: Bool -- | -- Disable tail-call elimination -- , optionsNoTco :: Bool -- | -- Disable inlining of calls to return and bind for the Eff monad -- , optionsNoMagicDo :: Bool -- | -- When specified, checks the type of `main` in the module, and generate a call to run main -- after the module definitions. -- , optionsMain :: Maybe String -- | -- Skip all optimizations -- , optionsNoOptimizations :: Bool -- | -- Verbose error message -- , optionsVerboseErrors :: Bool -- | -- Specify the namespace that PureScript modules will be exported to when running in the -- browser. -- , optionsAdditional :: ModeOptions mode } deriving Show -- | -- Default compiler options -- defaultCompileOptions :: Options Compile defaultCompileOptions = Options False False False Nothing False False (CompileOptions "PS" [] []) -- | -- Default make options -- defaultMakeOptions :: Options Make defaultMakeOptions = Options False False False Nothing False False MakeOptions