never executed always true always false
    1 module HelVM.HelMA.Automaton.API.OptimizationLevel where
    2 
    3 import           HelVM.HelIO.Containers.MTIndexSafe
    4 
    5 -- | Constructors
    6 
    7 optimizationLevelFromNatural ∷ Natural → OptimizationLevel
    8 optimizationLevelFromNatural = optimizationLevelFromInt . fromIntegral
    9 
   10 optimizationLevelFromInt ∷ Int → OptimizationLevel
   11 optimizationLevelFromInt = fromInt optimizationLevels
   12 
   13 defaultOptimizationLevel ∷ OptimizationLevel
   14 defaultOptimizationLevel = minBound
   15 
   16 optimizationLevels ∷ NonEmpty OptimizationLevel
   17 optimizationLevels = universeNonEmpty
   18 
   19 -- | Types
   20 
   21 data OptimizationLevel
   22   = NoOptimizations
   23   | BasicOptimizations
   24   | SomeOptimizations
   25   | AllOptimizations
   26   deriving stock (Bounded, Enum, Eq, Read, Show)
   27 
   28 ----
   29 
   30 fromInt ∷ (Bounded a, Foldable t) ⇒ t a → Int → a
   31 fromInt l i = fromMaybe maxBound $ indexMaybe (toList l) i