@@ -608,13 +608,39 @@ logLevel = do i <- getIState
608setErrContext :: Bool -> Idris ()
608setErrContext :: Bool -> Idris ()
609setErrContext t = do i <- getIState
609setErrContext t = do i <- getIState
610 let opts = idris_options i
610 let opts = idris_options i
611− let opt' = opts { opt_errContext = t }
611+ let opts' = opts { opt_errContext = t }
612− putIState $ i { idris_options = opt' }
612+ putIState $ i { idris_options = opts' }
614errContext :: Idris Bool
614errContext :: Idris Bool
615errContext = do i <- getIState
615errContext = do i <- getIState
616 return (opt_errContext (idris_options i))
616 return (opt_errContext (idris_options i))
618+getOptimise :: Idris [Optimisation]
619+getOptimise = do i <- getIState
620+ return (opt_optimise (idris_options i))
622+setOptimise :: [Optimisation] -> Idris ()
623+setOptimise newopts = do i <- getIState
624+ let opts = idris_options i
625+ let opts' = opts { opt_optimise = newopts }
626+ putIState $ i { idris_options = opts' }
628+addOptimise :: Optimisation -> Idris ()
629+addOptimise opt = do opts <- getOptimise
630+ setOptimise (nub (opt : opts))
632+removeOptimise :: Optimisation -> Idris ()
633+removeOptimise opt = do opts <- getOptimise
634+ setOptimise ((nub opts) \\ [opt])
636+-- Set appropriate optimisation set for the given level. We only have
637+-- one optimisation that is configurable at the moment, however!
638+setOptLevel :: Int -> Idris ()
639+setOptLevel n | n <= 0 = setOptimise []
640+setOptLevel 1 = setOptimise []
641+setOptLevel 2 = setOptimise [PETransform]
642+setOptLevel n | n >= 3 = setOptimise [PETransform]
618useREPL :: Idris Bool
644useREPL :: Idris Bool
619useREPL = do i <- getIState
645useREPL = do i <- getIState
620 return (opt_repl (idris_options i))
646 return (opt_repl (idris_options i))
@@ -708,16 +734,6 @@ targetCPU :: Idris String
708targetCPU = do i <- getIState
734targetCPU = do i <- getIState
709 return (opt_cpu (idris_options i))
735 return (opt_cpu (idris_options i))
711−setOptLevel :: Word -> Idris ()
712−setOptLevel t = do i <- getIState
713− let opts = idris_options i
714− opt' = opts { opt_optLevel = t }
715− putIState $ i { idris_options = opt' }
717−optLevel :: Idris Word
718−optLevel = do i <- getIState
719− return (opt_optLevel (idris_options i))
721verbose :: Idris Bool
737verbose :: Idris Bool
722verbose = do i <- getIState
738verbose = do i <- getIState
723 return (opt_verbose (idris_options i))
739 return (opt_verbose (idris_options i))