{-|
Module      : Parsley.Internal.Frontend.Analysis.Flags
Description : Flags needed to control analysis.
License     : BSD-3-Clause
Maintainer  : Jamie Willis
Stability   : experimental

Contains flags that can control how analysis should proceed.

@since 1.5.0.0
-}
module Parsley.Internal.Frontend.Analysis.Flags (AnalysisFlags(letBound), emptyFlags) where

{-|
The packaged flags object.

@since 1.5.0.0
-}
newtype AnalysisFlags = AnalysisFlags {
  {-|
  Is the binding used in this analysis let-bound?

  @since 1.5.0.0
  -}
  AnalysisFlags -> Bool
letBound :: Bool
}

{-|
An empty `AnalysisFlags` instance populated with sensible default values.

@since 1.5.0.0
-}
emptyFlags :: AnalysisFlags
emptyFlags :: AnalysisFlags
emptyFlags = Bool -> AnalysisFlags
AnalysisFlags Bool
False