{-# LANGUAGE LambdaCase #-}
module GHC.Driver.Flags
( DumpFlag(..)
, getDumpFlagFrom
, enabledIfVerbose
, GeneralFlag(..)
, Language(..)
, defaultLanguage
, optimisationFlags
, codeGenFlags
, WarningGroup(..)
, warningGroupName
, warningGroupFlags
, warningGroupIncludesExtendedWarnings
, WarningFlag(..)
, warnFlagNames
, warningGroups
, warningHierarchies
, smallestWarningGroups
, smallestWarningGroupsForCategory
, standardWarnings
, minusWOpts
, minusWallOpts
, minusWeverythingOpts
, minusWcompatOpts
, unusedBindsFlags
, TurnOnFlag
, turnOn
, turnOff
, impliedXFlags
, validHoleFitsImpliedGFlags
, impliedGFlags
, impliedOffGFlags
, glasgowExtsFlags
, ExtensionDeprecation(..)
, Deprecation(..)
, extensionDeprecation
, deprecation
, extensionNames
, extensionName
)
where
import GHC.Prelude
import GHC.Utils.Outputable
import GHC.Utils.Binary
import GHC.Data.EnumSet as EnumSet
import Control.DeepSeq
import Control.Monad (guard)
import Data.List.NonEmpty (NonEmpty(..))
import Data.Maybe (fromMaybe,mapMaybe)
import qualified GHC.LanguageExtensions as LangExt
data Language = Haskell98 | Haskell2010 | GHC2021 | GHC2024
deriving (Language -> Language -> Bool
(Language -> Language -> Bool)
-> (Language -> Language -> Bool) -> Eq Language
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Language -> Language -> Bool
== :: Language -> Language -> Bool
$c/= :: Language -> Language -> Bool
/= :: Language -> Language -> Bool
Eq, Int -> Language
Language -> Int
Language -> [Language]
Language -> Language
Language -> Language -> [Language]
Language -> Language -> Language -> [Language]
(Language -> Language)
-> (Language -> Language)
-> (Int -> Language)
-> (Language -> Int)
-> (Language -> [Language])
-> (Language -> Language -> [Language])
-> (Language -> Language -> [Language])
-> (Language -> Language -> Language -> [Language])
-> Enum Language
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Language -> Language
succ :: Language -> Language
$cpred :: Language -> Language
pred :: Language -> Language
$ctoEnum :: Int -> Language
toEnum :: Int -> Language
$cfromEnum :: Language -> Int
fromEnum :: Language -> Int
$cenumFrom :: Language -> [Language]
enumFrom :: Language -> [Language]
$cenumFromThen :: Language -> Language -> [Language]
enumFromThen :: Language -> Language -> [Language]
$cenumFromTo :: Language -> Language -> [Language]
enumFromTo :: Language -> Language -> [Language]
$cenumFromThenTo :: Language -> Language -> Language -> [Language]
enumFromThenTo :: Language -> Language -> Language -> [Language]
Enum, Int -> Language -> ShowS
[Language] -> ShowS
Language -> String
(Int -> Language -> ShowS)
-> (Language -> String) -> ([Language] -> ShowS) -> Show Language
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Language -> ShowS
showsPrec :: Int -> Language -> ShowS
$cshow :: Language -> String
show :: Language -> String
$cshowList :: [Language] -> ShowS
showList :: [Language] -> ShowS
Show, Language
Language -> Language -> Bounded Language
forall a. a -> a -> Bounded a
$cminBound :: Language
minBound :: Language
$cmaxBound :: Language
maxBound :: Language
Bounded)
defaultLanguage :: Language
defaultLanguage :: Language
defaultLanguage = Language
GHC2021
instance Outputable Language where
ppr :: Language -> SDoc
ppr = String -> SDoc
forall doc. IsLine doc => String -> doc
text (String -> SDoc) -> (Language -> String) -> Language -> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Language -> String
forall a. Show a => a -> String
show
instance Binary Language where
put_ :: WriteBinHandle -> Language -> IO ()
put_ WriteBinHandle
bh = WriteBinHandle -> Int -> IO ()
forall a. Binary a => WriteBinHandle -> a -> IO ()
put_ WriteBinHandle
bh (Int -> IO ()) -> (Language -> Int) -> Language -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Language -> Int
forall a. Enum a => a -> Int
fromEnum
get :: ReadBinHandle -> IO Language
get ReadBinHandle
bh = Int -> Language
forall a. Enum a => Int -> a
toEnum (Int -> Language) -> IO Int -> IO Language
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ReadBinHandle -> IO Int
forall a. Binary a => ReadBinHandle -> IO a
get ReadBinHandle
bh
instance NFData Language where
rnf :: Language -> ()
rnf Language
x = Language
x Language -> () -> ()
forall a b. a -> b -> b
`seq` ()
type TurnOnFlag = Bool
turnOn :: TurnOnFlag; turnOn :: Bool
turnOn = Bool
True
turnOff :: TurnOnFlag; turnOff :: Bool
turnOff = Bool
False
data Deprecation = NotDeprecated | Deprecated deriving (Deprecation -> Deprecation -> Bool
(Deprecation -> Deprecation -> Bool)
-> (Deprecation -> Deprecation -> Bool) -> Eq Deprecation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Deprecation -> Deprecation -> Bool
== :: Deprecation -> Deprecation -> Bool
$c/= :: Deprecation -> Deprecation -> Bool
/= :: Deprecation -> Deprecation -> Bool
Eq, Eq Deprecation
Eq Deprecation =>
(Deprecation -> Deprecation -> Ordering)
-> (Deprecation -> Deprecation -> Bool)
-> (Deprecation -> Deprecation -> Bool)
-> (Deprecation -> Deprecation -> Bool)
-> (Deprecation -> Deprecation -> Bool)
-> (Deprecation -> Deprecation -> Deprecation)
-> (Deprecation -> Deprecation -> Deprecation)
-> Ord Deprecation
Deprecation -> Deprecation -> Bool
Deprecation -> Deprecation -> Ordering
Deprecation -> Deprecation -> Deprecation
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Deprecation -> Deprecation -> Ordering
compare :: Deprecation -> Deprecation -> Ordering
$c< :: Deprecation -> Deprecation -> Bool
< :: Deprecation -> Deprecation -> Bool
$c<= :: Deprecation -> Deprecation -> Bool
<= :: Deprecation -> Deprecation -> Bool
$c> :: Deprecation -> Deprecation -> Bool
> :: Deprecation -> Deprecation -> Bool
$c>= :: Deprecation -> Deprecation -> Bool
>= :: Deprecation -> Deprecation -> Bool
$cmax :: Deprecation -> Deprecation -> Deprecation
max :: Deprecation -> Deprecation -> Deprecation
$cmin :: Deprecation -> Deprecation -> Deprecation
min :: Deprecation -> Deprecation -> Deprecation
Ord)
data ExtensionDeprecation
= ExtensionNotDeprecated
| ExtensionDeprecatedFor [LangExt.Extension]
| ExtensionFlagDeprecatedCond TurnOnFlag String
| ExtensionFlagDeprecated String
deriving ExtensionDeprecation -> ExtensionDeprecation -> Bool
(ExtensionDeprecation -> ExtensionDeprecation -> Bool)
-> (ExtensionDeprecation -> ExtensionDeprecation -> Bool)
-> Eq ExtensionDeprecation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExtensionDeprecation -> ExtensionDeprecation -> Bool
== :: ExtensionDeprecation -> ExtensionDeprecation -> Bool
$c/= :: ExtensionDeprecation -> ExtensionDeprecation -> Bool
/= :: ExtensionDeprecation -> ExtensionDeprecation -> Bool
Eq
deprecation :: ExtensionDeprecation -> Deprecation
deprecation :: ExtensionDeprecation -> Deprecation
deprecation ExtensionDeprecation
ExtensionNotDeprecated = Deprecation
NotDeprecated
deprecation ExtensionDeprecation
_ = Deprecation
Deprecated
extensionDeprecation :: LangExt.Extension -> ExtensionDeprecation
extensionDeprecation :: Extension -> ExtensionDeprecation
extensionDeprecation = \case
Extension
LangExt.TypeInType -> [Extension] -> ExtensionDeprecation
ExtensionDeprecatedFor [Extension
LangExt.DataKinds, Extension
LangExt.PolyKinds]
Extension
LangExt.NullaryTypeClasses -> [Extension] -> ExtensionDeprecation
ExtensionDeprecatedFor [Extension
LangExt.MultiParamTypeClasses]
Extension
LangExt.RelaxedPolyRec -> Bool -> String -> ExtensionDeprecation
ExtensionFlagDeprecatedCond Bool
turnOff
String
"You can't turn off RelaxedPolyRec any more"
Extension
LangExt.DatatypeContexts -> Bool -> String -> ExtensionDeprecation
ExtensionFlagDeprecatedCond Bool
turnOn
String
"It was widely considered a misfeature, and has been removed from the Haskell language."
Extension
LangExt.AutoDeriveTypeable -> Bool -> String -> ExtensionDeprecation
ExtensionFlagDeprecatedCond Bool
turnOn
String
"Typeable instances are created automatically for all types since GHC 8.2."
Extension
LangExt.OverlappingInstances -> String -> ExtensionDeprecation
ExtensionFlagDeprecated
String
"instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS"
Extension
_ -> ExtensionDeprecation
ExtensionNotDeprecated
extensionName :: LangExt.Extension -> String
extensionName :: Extension -> String
extensionName = \case
Extension
LangExt.Cpp -> String
"CPP"
Extension
LangExt.OverlappingInstances -> String
"OverlappingInstances"
Extension
LangExt.UndecidableInstances -> String
"UndecidableInstances"
Extension
LangExt.IncoherentInstances -> String
"IncoherentInstances"
Extension
LangExt.UndecidableSuperClasses -> String
"UndecidableSuperClasses"
Extension
LangExt.MonomorphismRestriction -> String
"MonomorphismRestriction"
Extension
LangExt.MonoLocalBinds -> String
"MonoLocalBinds"
Extension
LangExt.DeepSubsumption -> String
"DeepSubsumption"
Extension
LangExt.RelaxedPolyRec -> String
"RelaxedPolyRec"
Extension
LangExt.ExtendedDefaultRules -> String
"ExtendedDefaultRules"
Extension
LangExt.NamedDefaults -> String
"NamedDefaults"
Extension
LangExt.ForeignFunctionInterface -> String
"ForeignFunctionInterface"
Extension
LangExt.UnliftedFFITypes -> String
"UnliftedFFITypes"
Extension
LangExt.InterruptibleFFI -> String
"InterruptibleFFI"
Extension
LangExt.CApiFFI -> String
"CApiFFI"
Extension
LangExt.GHCForeignImportPrim -> String
"GHCForeignImportPrim"
Extension
LangExt.JavaScriptFFI -> String
"JavaScriptFFI"
Extension
LangExt.ParallelArrays -> String
"ParallelArrays"
Extension
LangExt.Arrows -> String
"Arrows"
Extension
LangExt.TemplateHaskell -> String
"TemplateHaskell"
Extension
LangExt.TemplateHaskellQuotes -> String
"TemplateHaskellQuotes"
Extension
LangExt.QualifiedDo -> String
"QualifiedDo"
Extension
LangExt.QuasiQuotes -> String
"QuasiQuotes"
Extension
LangExt.ImplicitParams -> String
"ImplicitParams"
Extension
LangExt.ImplicitPrelude -> String
"ImplicitPrelude"
Extension
LangExt.ScopedTypeVariables -> String
"ScopedTypeVariables"
Extension
LangExt.AllowAmbiguousTypes -> String
"AllowAmbiguousTypes"
Extension
LangExt.UnboxedTuples -> String
"UnboxedTuples"
Extension
LangExt.UnboxedSums -> String
"UnboxedSums"
Extension
LangExt.UnliftedNewtypes -> String
"UnliftedNewtypes"
Extension
LangExt.UnliftedDatatypes -> String
"UnliftedDatatypes"
Extension
LangExt.BangPatterns -> String
"BangPatterns"
Extension
LangExt.TypeFamilies -> String
"TypeFamilies"
Extension
LangExt.TypeFamilyDependencies -> String
"TypeFamilyDependencies"
Extension
LangExt.TypeInType -> String
"TypeInType"
Extension
LangExt.OverloadedStrings -> String
"OverloadedStrings"
Extension
LangExt.OverloadedLists -> String
"OverloadedLists"
Extension
LangExt.NumDecimals -> String
"NumDecimals"
Extension
LangExt.OrPatterns -> String
"OrPatterns"
Extension
LangExt.DisambiguateRecordFields -> String
"DisambiguateRecordFields"
Extension
LangExt.RecordWildCards -> String
"RecordWildCards"
Extension
LangExt.NamedFieldPuns -> String
"NamedFieldPuns"
Extension
LangExt.ViewPatterns -> String
"ViewPatterns"
Extension
LangExt.GADTs -> String
"GADTs"
Extension
LangExt.GADTSyntax -> String
"GADTSyntax"
Extension
LangExt.NPlusKPatterns -> String
"NPlusKPatterns"
Extension
LangExt.DoAndIfThenElse -> String
"DoAndIfThenElse"
Extension
LangExt.BlockArguments -> String
"BlockArguments"
Extension
LangExt.RebindableSyntax -> String
"RebindableSyntax"
Extension
LangExt.ConstraintKinds -> String
"ConstraintKinds"
Extension
LangExt.PolyKinds -> String
"PolyKinds"
Extension
LangExt.DataKinds -> String
"DataKinds"
Extension
LangExt.TypeData -> String
"TypeData"
Extension
LangExt.InstanceSigs -> String
"InstanceSigs"
Extension
LangExt.ApplicativeDo -> String
"ApplicativeDo"
Extension
LangExt.LinearTypes -> String
"LinearTypes"
Extension
LangExt.RequiredTypeArguments -> String
"RequiredTypeArguments"
Extension
LangExt.StandaloneDeriving -> String
"StandaloneDeriving"
Extension
LangExt.DeriveDataTypeable -> String
"DeriveDataTypeable"
Extension
LangExt.AutoDeriveTypeable -> String
"AutoDeriveTypeable"
Extension
LangExt.DeriveFunctor -> String
"DeriveFunctor"
Extension
LangExt.DeriveTraversable -> String
"DeriveTraversable"
Extension
LangExt.DeriveFoldable -> String
"DeriveFoldable"
Extension
LangExt.DeriveGeneric -> String
"DeriveGeneric"
Extension
LangExt.DefaultSignatures -> String
"DefaultSignatures"
Extension
LangExt.DeriveAnyClass -> String
"DeriveAnyClass"
Extension
LangExt.DeriveLift -> String
"DeriveLift"
Extension
LangExt.DerivingStrategies -> String
"DerivingStrategies"
Extension
LangExt.DerivingVia -> String
"DerivingVia"
Extension
LangExt.TypeSynonymInstances -> String
"TypeSynonymInstances"
Extension
LangExt.FlexibleContexts -> String
"FlexibleContexts"
Extension
LangExt.FlexibleInstances -> String
"FlexibleInstances"
Extension
LangExt.ConstrainedClassMethods -> String
"ConstrainedClassMethods"
Extension
LangExt.MultiParamTypeClasses -> String
"MultiParamTypeClasses"
Extension
LangExt.NullaryTypeClasses -> String
"NullaryTypeClasses"
Extension
LangExt.FunctionalDependencies -> String
"FunctionalDependencies"
Extension
LangExt.UnicodeSyntax -> String
"UnicodeSyntax"
Extension
LangExt.ExistentialQuantification -> String
"ExistentialQuantification"
Extension
LangExt.MagicHash -> String
"MagicHash"
Extension
LangExt.EmptyDataDecls -> String
"EmptyDataDecls"
Extension
LangExt.KindSignatures -> String
"KindSignatures"
Extension
LangExt.RoleAnnotations -> String
"RoleAnnotations"
Extension
LangExt.ParallelListComp -> String
"ParallelListComp"
Extension
LangExt.TransformListComp -> String
"TransformListComp"
Extension
LangExt.MonadComprehensions -> String
"MonadComprehensions"
Extension
LangExt.GeneralizedNewtypeDeriving -> String
"GeneralizedNewtypeDeriving"
Extension
LangExt.RecursiveDo -> String
"RecursiveDo"
Extension
LangExt.PostfixOperators -> String
"PostfixOperators"
Extension
LangExt.TupleSections -> String
"TupleSections"
Extension
LangExt.PatternGuards -> String
"PatternGuards"
Extension
LangExt.LiberalTypeSynonyms -> String
"LiberalTypeSynonyms"
Extension
LangExt.RankNTypes -> String
"RankNTypes"
Extension
LangExt.ImpredicativeTypes -> String
"ImpredicativeTypes"
Extension
LangExt.TypeOperators -> String
"TypeOperators"
Extension
LangExt.ExplicitNamespaces -> String
"ExplicitNamespaces"
Extension
LangExt.PackageImports -> String
"PackageImports"
Extension
LangExt.ExplicitForAll -> String
"ExplicitForAll"
Extension
LangExt.AlternativeLayoutRule -> String
"AlternativeLayoutRule"
Extension
LangExt.AlternativeLayoutRuleTransitional -> String
"AlternativeLayoutRuleTransitional"
Extension
LangExt.DatatypeContexts -> String
"DatatypeContexts"
Extension
LangExt.NondecreasingIndentation -> String
"NondecreasingIndentation"
Extension
LangExt.RelaxedLayout -> String
"RelaxedLayout"
Extension
LangExt.TraditionalRecordSyntax -> String
"TraditionalRecordSyntax"
Extension
LangExt.LambdaCase -> String
"LambdaCase"
Extension
LangExt.MultiWayIf -> String
"MultiWayIf"
Extension
LangExt.BinaryLiterals -> String
"BinaryLiterals"
Extension
LangExt.NegativeLiterals -> String
"NegativeLiterals"
Extension
LangExt.HexFloatLiterals -> String
"HexFloatLiterals"
Extension
LangExt.DuplicateRecordFields -> String
"DuplicateRecordFields"
Extension
LangExt.OverloadedLabels -> String
"OverloadedLabels"
Extension
LangExt.EmptyCase -> String
"EmptyCase"
Extension
LangExt.PatternSynonyms -> String
"PatternSynonyms"
Extension
LangExt.PartialTypeSignatures -> String
"PartialTypeSignatures"
Extension
LangExt.NamedWildCards -> String
"NamedWildCards"
Extension
LangExt.StaticPointers -> String
"StaticPointers"
Extension
LangExt.TypeApplications -> String
"TypeApplications"
Extension
LangExt.Strict -> String
"Strict"
Extension
LangExt.StrictData -> String
"StrictData"
Extension
LangExt.EmptyDataDeriving -> String
"EmptyDataDeriving"
Extension
LangExt.NumericUnderscores -> String
"NumericUnderscores"
Extension
LangExt.QuantifiedConstraints -> String
"QuantifiedConstraints"
Extension
LangExt.StarIsType -> String
"StarIsType"
Extension
LangExt.ImportQualifiedPost -> String
"ImportQualifiedPost"
Extension
LangExt.CUSKs -> String
"CUSKs"
Extension
LangExt.StandaloneKindSignatures -> String
"StandaloneKindSignatures"
Extension
LangExt.LexicalNegation -> String
"LexicalNegation"
Extension
LangExt.FieldSelectors -> String
"FieldSelectors"
Extension
LangExt.OverloadedRecordDot -> String
"OverloadedRecordDot"
Extension
LangExt.OverloadedRecordUpdate -> String
"OverloadedRecordUpdate"
Extension
LangExt.TypeAbstractions -> String
"TypeAbstractions"
Extension
LangExt.ExtendedLiterals -> String
"ExtendedLiterals"
Extension
LangExt.ListTuplePuns -> String
"ListTuplePuns"
Extension
LangExt.MultilineStrings -> String
"MultilineStrings"
extensionAlternateNames :: LangExt.Extension -> [String]
extensionAlternateNames :: Extension -> [String]
extensionAlternateNames = \case
Extension
LangExt.GeneralizedNewtypeDeriving -> [String
"GeneralisedNewtypeDeriving"]
Extension
LangExt.RankNTypes -> [String
"Rank2Types", String
"PolymorphicComponents"]
Extension
_ -> []
extensionDeprecatedNames :: LangExt.Extension -> [String]
extensionDeprecatedNames :: Extension -> [String]
extensionDeprecatedNames = \case
Extension
LangExt.RecursiveDo -> [String
"DoRec"]
Extension
LangExt.NamedFieldPuns -> [String
"RecordPuns"]
Extension
LangExt.ScopedTypeVariables -> [String
"PatternSignatures"]
Extension
_ -> []
extensionNames :: LangExt.Extension -> [ (ExtensionDeprecation, String) ]
extensionNames :: Extension -> [(ExtensionDeprecation, String)]
extensionNames Extension
ext = ExtensionDeprecation
-> [String] -> [(ExtensionDeprecation, String)]
forall {a} {b}. a -> [b] -> [(a, b)]
mk (Extension -> ExtensionDeprecation
extensionDeprecation Extension
ext) (Extension -> String
extensionName Extension
ext String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Extension -> [String]
extensionAlternateNames Extension
ext)
[(ExtensionDeprecation, String)]
-> [(ExtensionDeprecation, String)]
-> [(ExtensionDeprecation, String)]
forall a. [a] -> [a] -> [a]
++ ExtensionDeprecation
-> [String] -> [(ExtensionDeprecation, String)]
forall {a} {b}. a -> [b] -> [(a, b)]
mk ([Extension] -> ExtensionDeprecation
ExtensionDeprecatedFor [Extension
ext]) (Extension -> [String]
extensionDeprecatedNames Extension
ext)
where mk :: a -> [b] -> [(a, b)]
mk a
depr = (b -> (a, b)) -> [b] -> [(a, b)]
forall a b. (a -> b) -> [a] -> [b]
map (\b
name -> (a
depr, b
name))
impliedXFlags :: [(LangExt.Extension, TurnOnFlag, LangExt.Extension)]
impliedXFlags :: [(Extension, Bool, Extension)]
impliedXFlags
= [ (Extension
LangExt.RankNTypes, Bool
turnOn, Extension
LangExt.ExplicitForAll)
, (Extension
LangExt.QuantifiedConstraints, Bool
turnOn, Extension
LangExt.ExplicitForAll)
, (Extension
LangExt.ScopedTypeVariables, Bool
turnOn, Extension
LangExt.ExplicitForAll)
, (Extension
LangExt.LiberalTypeSynonyms, Bool
turnOn, Extension
LangExt.ExplicitForAll)
, (Extension
LangExt.ExistentialQuantification, Bool
turnOn, Extension
LangExt.ExplicitForAll)
, (Extension
LangExt.FlexibleInstances, Bool
turnOn, Extension
LangExt.TypeSynonymInstances)
, (Extension
LangExt.FunctionalDependencies, Bool
turnOn, Extension
LangExt.MultiParamTypeClasses)
, (Extension
LangExt.MultiParamTypeClasses, Bool
turnOn, Extension
LangExt.ConstrainedClassMethods)
, (Extension
LangExt.TypeFamilyDependencies, Bool
turnOn, Extension
LangExt.TypeFamilies)
, (Extension
LangExt.RebindableSyntax, Bool
turnOff, Extension
LangExt.ImplicitPrelude)
, (Extension
LangExt.DerivingVia, Bool
turnOn, Extension
LangExt.DerivingStrategies)
, (Extension
LangExt.GADTs, Bool
turnOn, Extension
LangExt.GADTSyntax)
, (Extension
LangExt.GADTs, Bool
turnOn, Extension
LangExt.MonoLocalBinds)
, (Extension
LangExt.TypeFamilies, Bool
turnOn, Extension
LangExt.MonoLocalBinds)
, (Extension
LangExt.TypeFamilies, Bool
turnOn, Extension
LangExt.KindSignatures)
, (Extension
LangExt.PolyKinds, Bool
turnOn, Extension
LangExt.KindSignatures)
, (Extension
LangExt.TypeInType, Bool
turnOn, Extension
LangExt.DataKinds)
, (Extension
LangExt.TypeInType, Bool
turnOn, Extension
LangExt.PolyKinds)
, (Extension
LangExt.TypeInType, Bool
turnOn, Extension
LangExt.KindSignatures)
, (Extension
LangExt.StandaloneKindSignatures, Bool
turnOff, Extension
LangExt.CUSKs)
, (Extension
LangExt.AutoDeriveTypeable, Bool
turnOn, Extension
LangExt.DeriveDataTypeable)
, (Extension
LangExt.TypeFamilies, Bool
turnOn, Extension
LangExt.ExplicitNamespaces)
, (Extension
LangExt.TypeOperators, Bool
turnOn, Extension
LangExt.ExplicitNamespaces)
, (Extension
LangExt.ImpredicativeTypes, Bool
turnOn, Extension
LangExt.RankNTypes)
, (Extension
LangExt.RecordWildCards, Bool
turnOn, Extension
LangExt.DisambiguateRecordFields)
, (Extension
LangExt.ParallelArrays, Bool
turnOn, Extension
LangExt.ParallelListComp)
, (Extension
LangExt.JavaScriptFFI, Bool
turnOn, Extension
LangExt.InterruptibleFFI)
, (Extension
LangExt.DeriveTraversable, Bool
turnOn, Extension
LangExt.DeriveFunctor)
, (Extension
LangExt.DeriveTraversable, Bool
turnOn, Extension
LangExt.DeriveFoldable)
, (Extension
LangExt.DuplicateRecordFields, Bool
turnOn, Extension
LangExt.DisambiguateRecordFields)
, (Extension
LangExt.TemplateHaskell, Bool
turnOn, Extension
LangExt.TemplateHaskellQuotes)
, (Extension
LangExt.Strict, Bool
turnOn, Extension
LangExt.StrictData)
, (Extension
LangExt.UnboxedTuples, Bool
turnOn, Extension
LangExt.UnboxedSums)
, (Extension
LangExt.UnliftedDatatypes, Bool
turnOn, Extension
LangExt.DataKinds)
, (Extension
LangExt.UnliftedDatatypes, Bool
turnOn, Extension
LangExt.StandaloneKindSignatures)
, (Extension
LangExt.LinearTypes, Bool
turnOn, Extension
LangExt.MonoLocalBinds)
]
validHoleFitsImpliedGFlags :: [(GeneralFlag, TurnOnFlag, GeneralFlag)]
validHoleFitsImpliedGFlags :: [(GeneralFlag, Bool, GeneralFlag)]
validHoleFitsImpliedGFlags
= [ (GeneralFlag
Opt_UnclutterValidHoleFits, Bool
turnOff, GeneralFlag
Opt_ShowTypeAppOfHoleFits)
, (GeneralFlag
Opt_UnclutterValidHoleFits, Bool
turnOff, GeneralFlag
Opt_ShowTypeAppVarsOfHoleFits)
, (GeneralFlag
Opt_UnclutterValidHoleFits, Bool
turnOff, GeneralFlag
Opt_ShowDocsOfHoleFits)
, (GeneralFlag
Opt_ShowTypeAppVarsOfHoleFits, Bool
turnOff, GeneralFlag
Opt_ShowTypeAppOfHoleFits)
, (GeneralFlag
Opt_UnclutterValidHoleFits, Bool
turnOff, GeneralFlag
Opt_ShowProvOfHoleFits) ]
impliedGFlags :: [(GeneralFlag, TurnOnFlag, GeneralFlag)]
impliedGFlags :: [(GeneralFlag, Bool, GeneralFlag)]
impliedGFlags = [(GeneralFlag
Opt_DeferTypeErrors, Bool
turnOn, GeneralFlag
Opt_DeferTypedHoles)
,(GeneralFlag
Opt_DeferTypeErrors, Bool
turnOn, GeneralFlag
Opt_DeferOutOfScopeVariables)
,(GeneralFlag
Opt_DoLinearCoreLinting, Bool
turnOn, GeneralFlag
Opt_DoCoreLinting)
,(GeneralFlag
Opt_Strictness, Bool
turnOn, GeneralFlag
Opt_WorkerWrapper)
,(GeneralFlag
Opt_WriteIfSimplifiedCore, Bool
turnOn, GeneralFlag
Opt_WriteInterface)
,(GeneralFlag
Opt_ByteCodeAndObjectCode, Bool
turnOn, GeneralFlag
Opt_WriteIfSimplifiedCore)
,(GeneralFlag
Opt_InfoTableMap, Bool
turnOn, GeneralFlag
Opt_InfoTableMapWithStack)
,(GeneralFlag
Opt_InfoTableMap, Bool
turnOn, GeneralFlag
Opt_InfoTableMapWithFallback)
] [(GeneralFlag, Bool, GeneralFlag)]
-> [(GeneralFlag, Bool, GeneralFlag)]
-> [(GeneralFlag, Bool, GeneralFlag)]
forall a. [a] -> [a] -> [a]
++ [(GeneralFlag, Bool, GeneralFlag)]
validHoleFitsImpliedGFlags
impliedOffGFlags :: [(GeneralFlag, TurnOnFlag, GeneralFlag)]
impliedOffGFlags :: [(GeneralFlag, Bool, GeneralFlag)]
impliedOffGFlags = [(GeneralFlag
Opt_Strictness, Bool
turnOff, GeneralFlag
Opt_WorkerWrapper)]
glasgowExtsFlags :: [LangExt.Extension]
glasgowExtsFlags :: [Extension]
glasgowExtsFlags = [
Extension
LangExt.ConstrainedClassMethods
, Extension
LangExt.DeriveDataTypeable
, Extension
LangExt.DeriveFoldable
, Extension
LangExt.DeriveFunctor
, Extension
LangExt.DeriveGeneric
, Extension
LangExt.DeriveTraversable
, Extension
LangExt.EmptyDataDecls
, Extension
LangExt.ExistentialQuantification
, Extension
LangExt.ExplicitNamespaces
, Extension
LangExt.FlexibleContexts
, Extension
LangExt.FlexibleInstances
, Extension
LangExt.ForeignFunctionInterface
, Extension
LangExt.FunctionalDependencies
, Extension
LangExt.GeneralizedNewtypeDeriving
, Extension
LangExt.ImplicitParams
, Extension
LangExt.KindSignatures
, Extension
LangExt.LiberalTypeSynonyms
, Extension
LangExt.MagicHash
, Extension
LangExt.MultiParamTypeClasses
, Extension
LangExt.ParallelListComp
, Extension
LangExt.PatternGuards
, Extension
LangExt.PostfixOperators
, Extension
LangExt.RankNTypes
, Extension
LangExt.RecursiveDo
, Extension
LangExt.ScopedTypeVariables
, Extension
LangExt.StandaloneDeriving
, Extension
LangExt.TypeOperators
, Extension
LangExt.TypeSynonymInstances
, Extension
LangExt.UnboxedTuples
, Extension
LangExt.UnicodeSyntax
, Extension
LangExt.UnliftedFFITypes ]
data DumpFlag
= Opt_D_dump_cmm
| Opt_D_dump_cmm_from_stg
| Opt_D_dump_cmm_raw
| Opt_D_dump_cmm_verbose_by_proc
| Opt_D_dump_cmm_verbose
| Opt_D_dump_cmm_cfg
| Opt_D_dump_cmm_cbe
| Opt_D_dump_cmm_switch
| Opt_D_dump_cmm_proc
| Opt_D_dump_cmm_sp
| Opt_D_dump_cmm_sink
| Opt_D_dump_cmm_caf
| Opt_D_dump_cmm_procmap
| Opt_D_dump_cmm_split
| Opt_D_dump_cmm_info
| Opt_D_dump_cmm_cps
| Opt_D_dump_cmm_thread_sanitizer
| Opt_D_dump_cfg_weights
| Opt_D_dump_asm
| Opt_D_dump_asm_native
| Opt_D_dump_asm_liveness
| Opt_D_dump_asm_regalloc
| Opt_D_dump_asm_regalloc_stages
| Opt_D_dump_asm_conflicts
| Opt_D_dump_asm_stats
| Opt_D_dump_c_backend
| Opt_D_dump_llvm
| Opt_D_dump_js
| Opt_D_dump_core_stats
| Opt_D_dump_deriv
| Opt_D_dump_ds
| Opt_D_dump_ds_preopt
| Opt_D_dump_foreign
| Opt_D_dump_inlinings
| Opt_D_dump_verbose_inlinings
| Opt_D_dump_rule_firings
| Opt_D_dump_rule_rewrites
| Opt_D_dump_simpl_trace
| Opt_D_dump_occur_anal
| Opt_D_dump_parsed
| Opt_D_dump_parsed_ast
| Opt_D_dump_rn
| Opt_D_dump_rn_ast
| Opt_D_dump_simpl
| Opt_D_dump_simpl_iterations
| Opt_D_dump_spec
| Opt_D_dump_spec_constr
| Opt_D_dump_prep
| Opt_D_dump_late_cc
| Opt_D_dump_stg_from_core
| Opt_D_dump_stg_unarised
| Opt_D_dump_stg_cg
| Opt_D_dump_stg_tags
| Opt_D_dump_stg_final
| Opt_D_dump_call_arity
| Opt_D_dump_exitify
| Opt_D_dump_dmdanal
| Opt_D_dump_dmd_signatures
| Opt_D_dump_cpranal
| Opt_D_dump_cpr_signatures
| Opt_D_dump_tc
| Opt_D_dump_tc_ast
| Opt_D_dump_hie
| Opt_D_dump_types
| Opt_D_dump_rules
| Opt_D_dump_cse
| Opt_D_dump_float_out
| Opt_D_dump_float_in
| Opt_D_dump_liberate_case
| Opt_D_dump_static_argument_transformation
| Opt_D_dump_worker_wrapper
| Opt_D_dump_rn_trace
| Opt_D_dump_rn_stats
| Opt_D_dump_opt_cmm
| Opt_D_dump_simpl_stats
| Opt_D_dump_cs_trace
| Opt_D_dump_tc_trace
| Opt_D_dump_ec_trace
| Opt_D_dump_if_trace
| Opt_D_dump_splices
| Opt_D_th_dec_file
| Opt_D_dump_BCOs
| Opt_D_dump_ticked
| Opt_D_dump_rtti
| Opt_D_source_stats
| Opt_D_verbose_stg2stg
| Opt_D_dump_hi
| Opt_D_dump_hi_diffs
| Opt_D_dump_mod_cycles
| Opt_D_dump_mod_map
| Opt_D_dump_timings
| Opt_D_dump_view_pattern_commoning
| Opt_D_verbose_core2core
| Opt_D_dump_debug
| Opt_D_dump_json
| Opt_D_ppr_debug
| Opt_D_no_debug_output
| Opt_D_dump_faststrings
| Opt_D_faststring_stats
| Opt_D_ipe_stats
deriving (DumpFlag -> DumpFlag -> Bool
(DumpFlag -> DumpFlag -> Bool)
-> (DumpFlag -> DumpFlag -> Bool) -> Eq DumpFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DumpFlag -> DumpFlag -> Bool
== :: DumpFlag -> DumpFlag -> Bool
$c/= :: DumpFlag -> DumpFlag -> Bool
/= :: DumpFlag -> DumpFlag -> Bool
Eq, Int -> DumpFlag -> ShowS
[DumpFlag] -> ShowS
DumpFlag -> String
(Int -> DumpFlag -> ShowS)
-> (DumpFlag -> String) -> ([DumpFlag] -> ShowS) -> Show DumpFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DumpFlag -> ShowS
showsPrec :: Int -> DumpFlag -> ShowS
$cshow :: DumpFlag -> String
show :: DumpFlag -> String
$cshowList :: [DumpFlag] -> ShowS
showList :: [DumpFlag] -> ShowS
Show, Int -> DumpFlag
DumpFlag -> Int
DumpFlag -> [DumpFlag]
DumpFlag -> DumpFlag
DumpFlag -> DumpFlag -> [DumpFlag]
DumpFlag -> DumpFlag -> DumpFlag -> [DumpFlag]
(DumpFlag -> DumpFlag)
-> (DumpFlag -> DumpFlag)
-> (Int -> DumpFlag)
-> (DumpFlag -> Int)
-> (DumpFlag -> [DumpFlag])
-> (DumpFlag -> DumpFlag -> [DumpFlag])
-> (DumpFlag -> DumpFlag -> [DumpFlag])
-> (DumpFlag -> DumpFlag -> DumpFlag -> [DumpFlag])
-> Enum DumpFlag
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: DumpFlag -> DumpFlag
succ :: DumpFlag -> DumpFlag
$cpred :: DumpFlag -> DumpFlag
pred :: DumpFlag -> DumpFlag
$ctoEnum :: Int -> DumpFlag
toEnum :: Int -> DumpFlag
$cfromEnum :: DumpFlag -> Int
fromEnum :: DumpFlag -> Int
$cenumFrom :: DumpFlag -> [DumpFlag]
enumFrom :: DumpFlag -> [DumpFlag]
$cenumFromThen :: DumpFlag -> DumpFlag -> [DumpFlag]
enumFromThen :: DumpFlag -> DumpFlag -> [DumpFlag]
$cenumFromTo :: DumpFlag -> DumpFlag -> [DumpFlag]
enumFromTo :: DumpFlag -> DumpFlag -> [DumpFlag]
$cenumFromThenTo :: DumpFlag -> DumpFlag -> DumpFlag -> [DumpFlag]
enumFromThenTo :: DumpFlag -> DumpFlag -> DumpFlag -> [DumpFlag]
Enum)
getDumpFlagFrom
:: (a -> Int)
-> (a -> EnumSet DumpFlag)
-> DumpFlag -> a -> Bool
getDumpFlagFrom :: forall a.
(a -> Int) -> (a -> EnumSet DumpFlag) -> DumpFlag -> a -> Bool
getDumpFlagFrom a -> Int
getVerbosity a -> EnumSet DumpFlag
getFlags DumpFlag
f a
x
= (DumpFlag
f DumpFlag -> EnumSet DumpFlag -> Bool
forall a. Enum a => a -> EnumSet a -> Bool
`EnumSet.member` a -> EnumSet DumpFlag
getFlags a
x)
Bool -> Bool -> Bool
|| (a -> Int
getVerbosity a
x Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
4 Bool -> Bool -> Bool
&& DumpFlag -> Bool
enabledIfVerbose DumpFlag
f)
enabledIfVerbose :: DumpFlag -> Bool
enabledIfVerbose :: DumpFlag -> Bool
enabledIfVerbose DumpFlag
Opt_D_dump_tc_trace = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rn_trace = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_cs_trace = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_if_trace = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_tc = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rn = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rn_stats = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_hi_diffs = Bool
False
enabledIfVerbose DumpFlag
Opt_D_verbose_core2core = Bool
False
enabledIfVerbose DumpFlag
Opt_D_verbose_stg2stg = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_splices = Bool
False
enabledIfVerbose DumpFlag
Opt_D_th_dec_file = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rule_firings = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rule_rewrites = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_simpl_trace = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_rtti = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_inlinings = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_verbose_inlinings = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_core_stats = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_asm_stats = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_types = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_simpl_iterations = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_ticked = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_view_pattern_commoning = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_mod_cycles = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_mod_map = Bool
False
enabledIfVerbose DumpFlag
Opt_D_dump_ec_trace = Bool
False
enabledIfVerbose DumpFlag
_ = Bool
True
data GeneralFlag
= Opt_DumpToFile
| Opt_DumpWithWays
| Opt_D_dump_minimal_imports
| Opt_DoCoreLinting
| Opt_DoLinearCoreLinting
| Opt_DoStgLinting
| Opt_DoCmmLinting
| Opt_DoAsmLinting
| Opt_DoAnnotationLinting
| Opt_DoBoundsChecking
| Opt_NoLlvmMangler
| Opt_FastLlvm
| Opt_NoTypeableBinds
| Opt_DistinctConstructorTables
| Opt_InfoTableMap
| Opt_InfoTableMapWithFallback
| Opt_InfoTableMapWithStack
| Opt_WarnIsError
| Opt_ShowWarnGroups
| Opt_HideSourcePaths
| Opt_PrintExplicitForalls
| Opt_PrintExplicitKinds
| Opt_PrintExplicitCoercions
| Opt_PrintExplicitRuntimeReps
| Opt_PrintEqualityRelations
| Opt_PrintAxiomIncomps
| Opt_PrintUnicodeSyntax
| Opt_PrintExpandedSynonyms
| Opt_PrintPotentialInstances
| Opt_PrintRedundantPromotionTicks
| Opt_PrintTypecheckerElaboration
| Opt_CallArity
| Opt_Exitification
| Opt_Strictness
| Opt_LateDmdAnal
| Opt_KillAbsence
| Opt_KillOneShot
| Opt_FullLaziness
| Opt_FloatIn
| Opt_LocalFloatOut
| Opt_LocalFloatOutTopLevel
| Opt_LateSpecialise
| Opt_Specialise
| Opt_SpecialiseAggressively
| Opt_CrossModuleSpecialise
| Opt_PolymorphicSpecialisation
| Opt_InlineGenerics
| Opt_InlineGenericsAggressively
| Opt_StaticArgumentTransformation
| Opt_CSE
| Opt_StgCSE
| Opt_StgLiftLams
| Opt_LiberateCase
| Opt_SpecConstr
| Opt_SpecConstrKeen
| Opt_SpecialiseIncoherents
| Opt_DoLambdaEtaExpansion
| Opt_DoCleverArgEtaExpansion
| Opt_IgnoreAsserts
| Opt_DoEtaReduction
| Opt_CaseMerge
| Opt_CaseFolding
| Opt_UnboxStrictFields
| Opt_UnboxSmallStrictFields
| Opt_DictsCheap
| Opt_EnableRewriteRules
| Opt_EnableThSpliceWarnings
| Opt_RegsGraph
| Opt_RegsIterative
| Opt_PedanticBottoms
| Opt_LlvmFillUndefWithGarbage
| Opt_IrrefutableTuples
| Opt_CmmSink
| Opt_CmmStaticPred
| Opt_CmmElimCommonBlocks
| Opt_CmmControlFlow
| Opt_AsmShortcutting
| Opt_OmitYields
| Opt_FunToThunk
| Opt_DictsStrict
| Opt_DmdTxDictSel
| Opt_Loopification
| Opt_CfgBlocklayout
| Opt_WeightlessBlocklayout
| Opt_CprAnal
| Opt_WorkerWrapper
| Opt_WorkerWrapperUnlift
| Opt_SolveConstantDicts
| Opt_AlignmentSanitisation
| Opt_CatchNonexhaustiveCases
| Opt_NumConstantFolding
| Opt_CoreConstantFolding
| Opt_FastPAPCalls
| Opt_DoTagInferenceChecks
| Opt_SimplPreInlining
| Opt_IgnoreInterfacePragmas
| Opt_OmitInterfacePragmas
| Opt_ExposeAllUnfoldings
| Opt_ExposeOverloadedUnfoldings
| Opt_KeepAutoRules
| Opt_WriteInterface
| Opt_WriteHie
| Opt_DisableJsMinifier
| Opt_DisableJsCsources
| Opt_AutoSccsOnIndividualCafs
| Opt_ProfCountEntries
| Opt_ProfLateInlineCcs
| Opt_ProfLateCcs
| Opt_ProfLateOverloadedCcs
| Opt_ProfLateoverloadedCallsCCs
| Opt_ProfManualCcs
| Opt_Pp
| Opt_ForceRecomp
| Opt_IgnoreOptimChanges
| Opt_IgnoreHpcChanges
| Opt_ExcessPrecision
| Opt_EagerBlackHoling
| Opt_OrigThunkInfo
| Opt_NoHsMain
| Opt_SplitSections
| Opt_StgStats
| Opt_HideAllPackages
| Opt_HideAllPluginPackages
| Opt_PrintBindResult
| Opt_Haddock
| Opt_HaddockOptions
| Opt_BreakOnException
| Opt_BreakOnError
| Opt_PrintEvldWithShow
| Opt_PrintBindContents
| Opt_GenManifest
| Opt_EmbedManifest
| Opt_SharedImplib
| Opt_BuildingCabalPackage
| Opt_IgnoreDotGhci
| Opt_GhciSandbox
| Opt_InsertBreakpoints
| Opt_GhciHistory
| Opt_GhciLeakCheck
| Opt_ValidateHie
| Opt_LocalGhciHistory
| Opt_NoIt
| Opt_HelpfulErrors
| Opt_DeferTypeErrors
| Opt_DeferTypedHoles
| Opt_DeferOutOfScopeVariables
| Opt_PIC
| Opt_PIE
| Opt_PICExecutable
| Opt_ExternalDynamicRefs
| Opt_Ticky
| Opt_Ticky_Allocd
| Opt_Ticky_LNE
| Opt_Ticky_Dyn_Thunk
| Opt_Ticky_Tag
| Opt_Ticky_AP
| Opt_CmmThreadSanitizer
| Opt_RPath
| Opt_RelativeDynlibPaths
| Opt_CompactUnwind
| Opt_Hpc
| Opt_FamAppCache
| Opt_ExternalInterpreter
| Opt_OptimalApplicativeDo
| Opt_VersionMacros
| Opt_WholeArchiveHsLibs
| Opt_SingleLibFolder
| Opt_ExposeInternalSymbols
| Opt_KeepCAFs
| Opt_KeepGoing
| Opt_ByteCode
| Opt_ByteCodeAndObjectCode
| Opt_UnoptimizedCoreForInterpreter
| Opt_LinkRts
| Opt_ErrorSpans
| Opt_DeferDiagnostics
| Opt_DiagnosticsAsJSON
| Opt_DiagnosticsShowCaret
| Opt_PprCaseAsLet
| Opt_PprShowTicks
| Opt_ShowHoleConstraints
| Opt_ShowValidHoleFits
| Opt_SortValidHoleFits
| Opt_SortBySizeHoleFits
| Opt_SortBySubsumHoleFits
| Opt_AbstractRefHoleFits
| Opt_UnclutterValidHoleFits
| Opt_ShowTypeAppOfHoleFits
| Opt_ShowTypeAppVarsOfHoleFits
| Opt_ShowDocsOfHoleFits
| Opt_ShowTypeOfHoleFits
| Opt_ShowProvOfHoleFits
| Opt_ShowMatchesOfHoleFits
| Opt_ShowLoadedModules
| Opt_HexWordLiterals
| Opt_SuppressCoercions
| Opt_SuppressCoercionTypes
| Opt_SuppressVarKinds
| Opt_SuppressModulePrefixes
| Opt_SuppressTypeApplications
| Opt_SuppressIdInfo
| Opt_SuppressUnfoldings
| Opt_SuppressTypeSignatures
| Opt_SuppressUniques
| Opt_SuppressStgExts
| Opt_SuppressStgReps
| Opt_SuppressTicks
| Opt_SuppressTimestamps
| Opt_SuppressCoreSizes
| Opt_ShowErrorContext
| Opt_ObjectDeterminism
| Opt_AutoLinkPackages
| Opt_ImplicitImportQualified
| Opt_KeepHscppFiles
| Opt_KeepHiDiffs
| Opt_KeepHcFiles
| Opt_KeepSFiles
| Opt_KeepTmpFiles
| Opt_KeepRawTokenStream
| Opt_KeepLlvmFiles
| Opt_KeepHiFiles
| Opt_KeepOFiles
| Opt_BuildDynamicToo
| Opt_WriteIfSimplifiedCore
| Opt_UseBytecodeRatherThanObjects
| Opt_DistrustAllPackages
| Opt_PackageTrust
| Opt_PluginTrustworthy
| Opt_G_NoStateHack
| Opt_G_NoOptCoercion
deriving (GeneralFlag -> GeneralFlag -> Bool
(GeneralFlag -> GeneralFlag -> Bool)
-> (GeneralFlag -> GeneralFlag -> Bool) -> Eq GeneralFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GeneralFlag -> GeneralFlag -> Bool
== :: GeneralFlag -> GeneralFlag -> Bool
$c/= :: GeneralFlag -> GeneralFlag -> Bool
/= :: GeneralFlag -> GeneralFlag -> Bool
Eq, Int -> GeneralFlag -> ShowS
[GeneralFlag] -> ShowS
GeneralFlag -> String
(Int -> GeneralFlag -> ShowS)
-> (GeneralFlag -> String)
-> ([GeneralFlag] -> ShowS)
-> Show GeneralFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> GeneralFlag -> ShowS
showsPrec :: Int -> GeneralFlag -> ShowS
$cshow :: GeneralFlag -> String
show :: GeneralFlag -> String
$cshowList :: [GeneralFlag] -> ShowS
showList :: [GeneralFlag] -> ShowS
Show, Int -> GeneralFlag
GeneralFlag -> Int
GeneralFlag -> [GeneralFlag]
GeneralFlag -> GeneralFlag
GeneralFlag -> GeneralFlag -> [GeneralFlag]
GeneralFlag -> GeneralFlag -> GeneralFlag -> [GeneralFlag]
(GeneralFlag -> GeneralFlag)
-> (GeneralFlag -> GeneralFlag)
-> (Int -> GeneralFlag)
-> (GeneralFlag -> Int)
-> (GeneralFlag -> [GeneralFlag])
-> (GeneralFlag -> GeneralFlag -> [GeneralFlag])
-> (GeneralFlag -> GeneralFlag -> [GeneralFlag])
-> (GeneralFlag -> GeneralFlag -> GeneralFlag -> [GeneralFlag])
-> Enum GeneralFlag
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: GeneralFlag -> GeneralFlag
succ :: GeneralFlag -> GeneralFlag
$cpred :: GeneralFlag -> GeneralFlag
pred :: GeneralFlag -> GeneralFlag
$ctoEnum :: Int -> GeneralFlag
toEnum :: Int -> GeneralFlag
$cfromEnum :: GeneralFlag -> Int
fromEnum :: GeneralFlag -> Int
$cenumFrom :: GeneralFlag -> [GeneralFlag]
enumFrom :: GeneralFlag -> [GeneralFlag]
$cenumFromThen :: GeneralFlag -> GeneralFlag -> [GeneralFlag]
enumFromThen :: GeneralFlag -> GeneralFlag -> [GeneralFlag]
$cenumFromTo :: GeneralFlag -> GeneralFlag -> [GeneralFlag]
enumFromTo :: GeneralFlag -> GeneralFlag -> [GeneralFlag]
$cenumFromThenTo :: GeneralFlag -> GeneralFlag -> GeneralFlag -> [GeneralFlag]
enumFromThenTo :: GeneralFlag -> GeneralFlag -> GeneralFlag -> [GeneralFlag]
Enum)
optimisationFlags :: EnumSet GeneralFlag
optimisationFlags :: EnumSet GeneralFlag
optimisationFlags = [GeneralFlag] -> EnumSet GeneralFlag
forall a. Enum a => [a] -> EnumSet a
EnumSet.fromList
[ GeneralFlag
Opt_CallArity
, GeneralFlag
Opt_Strictness
, GeneralFlag
Opt_LateDmdAnal
, GeneralFlag
Opt_KillAbsence
, GeneralFlag
Opt_KillOneShot
, GeneralFlag
Opt_FullLaziness
, GeneralFlag
Opt_FloatIn
, GeneralFlag
Opt_LateSpecialise
, GeneralFlag
Opt_Specialise
, GeneralFlag
Opt_SpecialiseAggressively
, GeneralFlag
Opt_CrossModuleSpecialise
, GeneralFlag
Opt_StaticArgumentTransformation
, GeneralFlag
Opt_CSE
, GeneralFlag
Opt_StgCSE
, GeneralFlag
Opt_StgLiftLams
, GeneralFlag
Opt_LiberateCase
, GeneralFlag
Opt_SpecConstr
, GeneralFlag
Opt_SpecConstrKeen
, GeneralFlag
Opt_DoLambdaEtaExpansion
, GeneralFlag
Opt_IgnoreAsserts
, GeneralFlag
Opt_DoEtaReduction
, GeneralFlag
Opt_CaseMerge
, GeneralFlag
Opt_CaseFolding
, GeneralFlag
Opt_UnboxStrictFields
, GeneralFlag
Opt_UnboxSmallStrictFields
, GeneralFlag
Opt_DictsCheap
, GeneralFlag
Opt_EnableRewriteRules
, GeneralFlag
Opt_RegsGraph
, GeneralFlag
Opt_RegsIterative
, GeneralFlag
Opt_IrrefutableTuples
, GeneralFlag
Opt_CmmSink
, GeneralFlag
Opt_CmmElimCommonBlocks
, GeneralFlag
Opt_AsmShortcutting
, GeneralFlag
Opt_FunToThunk
, GeneralFlag
Opt_DmdTxDictSel
, GeneralFlag
Opt_Loopification
, GeneralFlag
Opt_CfgBlocklayout
, GeneralFlag
Opt_WeightlessBlocklayout
, GeneralFlag
Opt_CprAnal
, GeneralFlag
Opt_WorkerWrapper
, GeneralFlag
Opt_WorkerWrapperUnlift
, GeneralFlag
Opt_SolveConstantDicts
]
codeGenFlags :: EnumSet GeneralFlag
codeGenFlags :: EnumSet GeneralFlag
codeGenFlags = [GeneralFlag] -> EnumSet GeneralFlag
forall a. Enum a => [a] -> EnumSet a
EnumSet.fromList
[
GeneralFlag
Opt_EagerBlackHoling
, GeneralFlag
Opt_ExcessPrecision
, GeneralFlag
Opt_DictsStrict
, GeneralFlag
Opt_PedanticBottoms
, GeneralFlag
Opt_OmitYields
, GeneralFlag
Opt_ExposeAllUnfoldings
, GeneralFlag
Opt_ExposeOverloadedUnfoldings
, GeneralFlag
Opt_NoTypeableBinds
, GeneralFlag
Opt_ObjectDeterminism
, GeneralFlag
Opt_Haddock
, GeneralFlag
Opt_CatchNonexhaustiveCases
, GeneralFlag
Opt_LlvmFillUndefWithGarbage
, GeneralFlag
Opt_DoTagInferenceChecks
, GeneralFlag
Opt_DistinctConstructorTables
, GeneralFlag
Opt_InfoTableMap
, GeneralFlag
Opt_InfoTableMapWithStack
, GeneralFlag
Opt_InfoTableMapWithFallback
, GeneralFlag
Opt_OrigThunkInfo
]
data WarningFlag =
Opt_WarnDuplicateExports
| Opt_WarnDuplicateConstraints
| Opt_WarnRedundantConstraints
| Opt_WarnHiShadows
| Opt_WarnImplicitPrelude
| Opt_WarnIncompletePatterns
| Opt_WarnIncompleteUniPatterns
| Opt_WarnIncompletePatternsRecUpd
| Opt_WarnOverflowedLiterals
| Opt_WarnEmptyEnumerations
| Opt_WarnMissingFields
| Opt_WarnMissingImportList
| Opt_WarnMissingMethods
| Opt_WarnMissingSignatures
| Opt_WarnMissingLocalSignatures
| Opt_WarnNameShadowing
| Opt_WarnOverlappingPatterns
| Opt_WarnTypeDefaults
| Opt_WarnMonomorphism
| Opt_WarnUnusedTopBinds
| Opt_WarnUnusedLocalBinds
| Opt_WarnUnusedPatternBinds
| Opt_WarnUnusedImports
| Opt_WarnUnusedMatches
| Opt_WarnUnusedTypePatterns
| Opt_WarnUnusedForalls
| Opt_WarnUnusedRecordWildcards
| Opt_WarnRedundantBangPatterns
| Opt_WarnRedundantRecordWildcards
| Opt_WarnDeprecatedFlags
| Opt_WarnMissingMonadFailInstances
| Opt_WarnSemigroup
| Opt_WarnDodgyExports
| Opt_WarnDodgyImports
| Opt_WarnOrphans
| Opt_WarnAutoOrphans
| Opt_WarnIdentities
| Opt_WarnTabs
| Opt_WarnUnrecognisedPragmas
| Opt_WarnMisplacedPragmas
| Opt_WarnDodgyForeignImports
| Opt_WarnUnusedDoBind
| Opt_WarnWrongDoBind
| Opt_WarnAlternativeLayoutRuleTransitional
| Opt_WarnUnsafe
| Opt_WarnSafe
| Opt_WarnTrustworthySafe
| Opt_WarnMissedSpecs
| Opt_WarnAllMissedSpecs
| Opt_WarnUnsupportedCallingConventions
| Opt_WarnUnsupportedLlvmVersion
|
| Opt_WarnInlineRuleShadowing
| Opt_WarnTypedHoles
| Opt_WarnPartialTypeSignatures
| Opt_WarnMissingExportedSignatures
| Opt_WarnUntickedPromotedConstructors
| Opt_WarnDerivingTypeable
| Opt_WarnDeferredTypeErrors
| Opt_WarnDeferredOutOfScopeVariables
| Opt_WarnNonCanonicalMonadInstances
| Opt_WarnNonCanonicalMonadFailInstances
| Opt_WarnNonCanonicalMonoidInstances
| Opt_WarnMissingPatternSynonymSignatures
| Opt_WarnUnrecognisedWarningFlags
| Opt_WarnSimplifiableClassConstraints
| Opt_WarnCPPUndef
| Opt_WarnUnbangedStrictPatterns
| Opt_WarnMissingHomeModules
| Opt_WarnPartialFields
| Opt_WarnMissingExportList
| Opt_WarnInaccessibleCode
| Opt_WarnStarIsType
| Opt_WarnStarBinder
| Opt_WarnImplicitKindVars
| Opt_WarnSpaceAfterBang
| Opt_WarnMissingDerivingStrategies
| Opt_WarnPrepositiveQualifiedModule
| Opt_WarnUnusedPackages
| Opt_WarnInferredSafeImports
| Opt_WarnMissingSafeHaskellMode
| Opt_WarnCompatUnqualifiedImports
| Opt_WarnDerivingDefaults
| Opt_WarnInvalidHaddock
| Opt_WarnOperatorWhitespaceExtConflict
| Opt_WarnOperatorWhitespace
| Opt_WarnAmbiguousFields
| Opt_WarnImplicitLift
| Opt_WarnMissingKindSignatures
| Opt_WarnMissingPolyKindSignatures
| Opt_WarnMissingExportedPatternSynonymSignatures
| Opt_WarnRedundantStrictnessFlags
| Opt_WarnForallIdentifier
| Opt_WarnUnicodeBidirectionalFormatCharacters
| Opt_WarnGADTMonoLocalBinds
| Opt_WarnTypeEqualityOutOfScope
| Opt_WarnTypeEqualityRequiresOperators
| Opt_WarnLoopySuperclassSolve
| Opt_WarnTermVariableCapture
| Opt_WarnMissingRoleAnnotations
| Opt_WarnImplicitRhsQuantification
| Opt_WarnIncompleteExportWarnings
| Opt_WarnIncompleteRecordSelectors
| Opt_WarnBadlyStagedTypes
| Opt_WarnInconsistentFlags
| Opt_WarnDataKindsTC
| Opt_WarnDeprecatedTypeAbstractions
| Opt_WarnDefaultedExceptionContext
| Opt_WarnViewPatternSignatures
deriving (WarningFlag -> WarningFlag -> Bool
(WarningFlag -> WarningFlag -> Bool)
-> (WarningFlag -> WarningFlag -> Bool) -> Eq WarningFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WarningFlag -> WarningFlag -> Bool
== :: WarningFlag -> WarningFlag -> Bool
$c/= :: WarningFlag -> WarningFlag -> Bool
/= :: WarningFlag -> WarningFlag -> Bool
Eq, Eq WarningFlag
Eq WarningFlag =>
(WarningFlag -> WarningFlag -> Ordering)
-> (WarningFlag -> WarningFlag -> Bool)
-> (WarningFlag -> WarningFlag -> Bool)
-> (WarningFlag -> WarningFlag -> Bool)
-> (WarningFlag -> WarningFlag -> Bool)
-> (WarningFlag -> WarningFlag -> WarningFlag)
-> (WarningFlag -> WarningFlag -> WarningFlag)
-> Ord WarningFlag
WarningFlag -> WarningFlag -> Bool
WarningFlag -> WarningFlag -> Ordering
WarningFlag -> WarningFlag -> WarningFlag
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: WarningFlag -> WarningFlag -> Ordering
compare :: WarningFlag -> WarningFlag -> Ordering
$c< :: WarningFlag -> WarningFlag -> Bool
< :: WarningFlag -> WarningFlag -> Bool
$c<= :: WarningFlag -> WarningFlag -> Bool
<= :: WarningFlag -> WarningFlag -> Bool
$c> :: WarningFlag -> WarningFlag -> Bool
> :: WarningFlag -> WarningFlag -> Bool
$c>= :: WarningFlag -> WarningFlag -> Bool
>= :: WarningFlag -> WarningFlag -> Bool
$cmax :: WarningFlag -> WarningFlag -> WarningFlag
max :: WarningFlag -> WarningFlag -> WarningFlag
$cmin :: WarningFlag -> WarningFlag -> WarningFlag
min :: WarningFlag -> WarningFlag -> WarningFlag
Ord, Int -> WarningFlag -> ShowS
[WarningFlag] -> ShowS
WarningFlag -> String
(Int -> WarningFlag -> ShowS)
-> (WarningFlag -> String)
-> ([WarningFlag] -> ShowS)
-> Show WarningFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WarningFlag -> ShowS
showsPrec :: Int -> WarningFlag -> ShowS
$cshow :: WarningFlag -> String
show :: WarningFlag -> String
$cshowList :: [WarningFlag] -> ShowS
showList :: [WarningFlag] -> ShowS
Show, Int -> WarningFlag
WarningFlag -> Int
WarningFlag -> [WarningFlag]
WarningFlag -> WarningFlag
WarningFlag -> WarningFlag -> [WarningFlag]
WarningFlag -> WarningFlag -> WarningFlag -> [WarningFlag]
(WarningFlag -> WarningFlag)
-> (WarningFlag -> WarningFlag)
-> (Int -> WarningFlag)
-> (WarningFlag -> Int)
-> (WarningFlag -> [WarningFlag])
-> (WarningFlag -> WarningFlag -> [WarningFlag])
-> (WarningFlag -> WarningFlag -> [WarningFlag])
-> (WarningFlag -> WarningFlag -> WarningFlag -> [WarningFlag])
-> Enum WarningFlag
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: WarningFlag -> WarningFlag
succ :: WarningFlag -> WarningFlag
$cpred :: WarningFlag -> WarningFlag
pred :: WarningFlag -> WarningFlag
$ctoEnum :: Int -> WarningFlag
toEnum :: Int -> WarningFlag
$cfromEnum :: WarningFlag -> Int
fromEnum :: WarningFlag -> Int
$cenumFrom :: WarningFlag -> [WarningFlag]
enumFrom :: WarningFlag -> [WarningFlag]
$cenumFromThen :: WarningFlag -> WarningFlag -> [WarningFlag]
enumFromThen :: WarningFlag -> WarningFlag -> [WarningFlag]
$cenumFromTo :: WarningFlag -> WarningFlag -> [WarningFlag]
enumFromTo :: WarningFlag -> WarningFlag -> [WarningFlag]
$cenumFromThenTo :: WarningFlag -> WarningFlag -> WarningFlag -> [WarningFlag]
enumFromThenTo :: WarningFlag -> WarningFlag -> WarningFlag -> [WarningFlag]
Enum, WarningFlag
WarningFlag -> WarningFlag -> Bounded WarningFlag
forall a. a -> a -> Bounded a
$cminBound :: WarningFlag
minBound :: WarningFlag
$cmaxBound :: WarningFlag
maxBound :: WarningFlag
Bounded)
warnFlagNames :: WarningFlag -> NonEmpty String
warnFlagNames :: WarningFlag -> NonEmpty String
warnFlagNames WarningFlag
wflag = case WarningFlag
wflag of
WarningFlag
Opt_WarnAlternativeLayoutRuleTransitional -> String
"alternative-layout-rule-transitional" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnAmbiguousFields -> String
"ambiguous-fields" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnAutoOrphans -> String
"auto-orphans" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTermVariableCapture -> String
"term-variable-capture" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnCPPUndef -> String
"cpp-undef" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnbangedStrictPatterns -> String
"unbanged-strict-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDeferredTypeErrors -> String
"deferred-type-errors" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDeferredOutOfScopeVariables -> String
"deferred-out-of-scope-variables" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDeprecatedFlags -> String
"deprecated-flags" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDerivingDefaults -> String
"deriving-defaults" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDerivingTypeable -> String
"deriving-typeable" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDodgyExports -> String
"dodgy-exports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDodgyForeignImports -> String
"dodgy-foreign-imports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDodgyImports -> String
"dodgy-imports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnEmptyEnumerations -> String
"empty-enumerations" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDuplicateConstraints -> String
"duplicate-constraints" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnRedundantConstraints -> String
"redundant-constraints" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDuplicateExports -> String
"duplicate-exports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnHiShadows -> String
"hi-shadowing" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnInaccessibleCode -> String
"inaccessible-code" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnImplicitPrelude -> String
"implicit-prelude" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnImplicitKindVars -> String
"implicit-kind-vars" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIncompletePatterns -> String
"incomplete-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIncompletePatternsRecUpd -> String
"incomplete-record-updates" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIncompleteUniPatterns -> String
"incomplete-uni-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnInlineRuleShadowing -> String
"inline-rule-shadowing" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIdentities -> String
"identities" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingFields -> String
"missing-fields" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingImportList -> String
"missing-import-lists" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingExportList -> String
"missing-export-lists" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingLocalSignatures -> String
"missing-local-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingMethods -> String
"missing-methods" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingMonadFailInstances -> String
"missing-monadfail-instances" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnSemigroup -> String
"semigroup" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingSignatures -> String
"missing-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingKindSignatures -> String
"missing-kind-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingPolyKindSignatures -> String
"missing-poly-kind-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingExportedSignatures -> String
"missing-exported-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMonomorphism -> String
"monomorphism-restriction" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnNameShadowing -> String
"name-shadowing" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnNonCanonicalMonadInstances -> String
"noncanonical-monad-instances" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnNonCanonicalMonadFailInstances -> String
"noncanonical-monadfail-instances" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnNonCanonicalMonoidInstances -> String
"noncanonical-monoid-instances" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnOrphans -> String
"orphans" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnOverflowedLiterals -> String
"overflowed-literals" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnOverlappingPatterns -> String
"overlapping-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissedSpecs -> String
"missed-specialisations" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| [String
"missed-specializations"]
WarningFlag
Opt_WarnAllMissedSpecs -> String
"all-missed-specialisations" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| [String
"all-missed-specializations"]
WarningFlag
Opt_WarnSafe -> String
"safe" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTrustworthySafe -> String
"trustworthy-safe" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnInferredSafeImports -> String
"inferred-safe-imports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingSafeHaskellMode -> String
"missing-safe-haskell-mode" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTabs -> String
"tabs" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTypeDefaults -> String
"type-defaults" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTypedHoles -> String
"typed-holes" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnPartialTypeSignatures -> String
"partial-type-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnrecognisedPragmas -> String
"unrecognised-pragmas" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMisplacedPragmas -> String
"misplaced-pragmas" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnsafe -> String
"unsafe" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnsupportedCallingConventions -> String
"unsupported-calling-conventions" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnsupportedLlvmVersion -> String
"unsupported-llvm-version" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissedExtraSharedLib -> String
"missed-extra-shared-lib" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUntickedPromotedConstructors -> String
"unticked-promoted-constructors" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedDoBind -> String
"unused-do-bind" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedForalls -> String
"unused-foralls" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedImports -> String
"unused-imports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedLocalBinds -> String
"unused-local-binds" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedMatches -> String
"unused-matches" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedPatternBinds -> String
"unused-pattern-binds" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedTopBinds -> String
"unused-top-binds" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedTypePatterns -> String
"unused-type-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedRecordWildcards -> String
"unused-record-wildcards" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnRedundantBangPatterns -> String
"redundant-bang-patterns" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnRedundantRecordWildcards -> String
"redundant-record-wildcards" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnRedundantStrictnessFlags -> String
"redundant-strictness-flags" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnWrongDoBind -> String
"wrong-do-bind" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingPatternSynonymSignatures -> String
"missing-pattern-synonym-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingDerivingStrategies -> String
"missing-deriving-strategies" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnSimplifiableClassConstraints -> String
"simplifiable-class-constraints" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingHomeModules -> String
"missing-home-modules" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnrecognisedWarningFlags -> String
"unrecognised-warning-flags" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnStarBinder -> String
"star-binder" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnStarIsType -> String
"star-is-type" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnSpaceAfterBang -> String
"missing-space-after-bang" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnPartialFields -> String
"partial-fields" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnPrepositiveQualifiedModule -> String
"prepositive-qualified-module" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnusedPackages -> String
"unused-packages" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnCompatUnqualifiedImports -> String
"compat-unqualified-imports" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnInvalidHaddock -> String
"invalid-haddock" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnOperatorWhitespaceExtConflict -> String
"operator-whitespace-ext-conflict" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnOperatorWhitespace -> String
"operator-whitespace" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnImplicitLift -> String
"implicit-lift" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingExportedPatternSynonymSignatures -> String
"missing-exported-pattern-synonym-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnForallIdentifier -> String
"forall-identifier" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnUnicodeBidirectionalFormatCharacters -> String
"unicode-bidirectional-format-characters" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnGADTMonoLocalBinds -> String
"gadt-mono-local-binds" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTypeEqualityOutOfScope -> String
"type-equality-out-of-scope" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnLoopySuperclassSolve -> String
"loopy-superclass-solve" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnTypeEqualityRequiresOperators -> String
"type-equality-requires-operators" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnMissingRoleAnnotations -> String
"missing-role-annotations" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnImplicitRhsQuantification -> String
"implicit-rhs-quantification" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIncompleteExportWarnings -> String
"incomplete-export-warnings" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnIncompleteRecordSelectors -> String
"incomplete-record-selectors" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnBadlyStagedTypes -> String
"badly-staged-types" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnInconsistentFlags -> String
"inconsistent-flags" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDataKindsTC -> String
"data-kinds-tc" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDeprecatedTypeAbstractions -> String
"deprecated-type-abstractions" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnDefaultedExceptionContext -> String
"defaulted-exception-context" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
WarningFlag
Opt_WarnViewPatternSignatures -> String
"view-pattern-signatures" String -> [String] -> NonEmpty String
forall a. a -> [a] -> NonEmpty a
:| []
data WarningGroup = W_compat
| W_unused_binds
| W_extended_warnings
| W_default
|
| W_all
| W_everything
deriving (WarningGroup
WarningGroup -> WarningGroup -> Bounded WarningGroup
forall a. a -> a -> Bounded a
$cminBound :: WarningGroup
minBound :: WarningGroup
$cmaxBound :: WarningGroup
maxBound :: WarningGroup
Bounded, Int -> WarningGroup
WarningGroup -> Int
WarningGroup -> [WarningGroup]
WarningGroup -> WarningGroup
WarningGroup -> WarningGroup -> [WarningGroup]
WarningGroup -> WarningGroup -> WarningGroup -> [WarningGroup]
(WarningGroup -> WarningGroup)
-> (WarningGroup -> WarningGroup)
-> (Int -> WarningGroup)
-> (WarningGroup -> Int)
-> (WarningGroup -> [WarningGroup])
-> (WarningGroup -> WarningGroup -> [WarningGroup])
-> (WarningGroup -> WarningGroup -> [WarningGroup])
-> (WarningGroup -> WarningGroup -> WarningGroup -> [WarningGroup])
-> Enum WarningGroup
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: WarningGroup -> WarningGroup
succ :: WarningGroup -> WarningGroup
$cpred :: WarningGroup -> WarningGroup
pred :: WarningGroup -> WarningGroup
$ctoEnum :: Int -> WarningGroup
toEnum :: Int -> WarningGroup
$cfromEnum :: WarningGroup -> Int
fromEnum :: WarningGroup -> Int
$cenumFrom :: WarningGroup -> [WarningGroup]
enumFrom :: WarningGroup -> [WarningGroup]
$cenumFromThen :: WarningGroup -> WarningGroup -> [WarningGroup]
enumFromThen :: WarningGroup -> WarningGroup -> [WarningGroup]
$cenumFromTo :: WarningGroup -> WarningGroup -> [WarningGroup]
enumFromTo :: WarningGroup -> WarningGroup -> [WarningGroup]
$cenumFromThenTo :: WarningGroup -> WarningGroup -> WarningGroup -> [WarningGroup]
enumFromThenTo :: WarningGroup -> WarningGroup -> WarningGroup -> [WarningGroup]
Enum, WarningGroup -> WarningGroup -> Bool
(WarningGroup -> WarningGroup -> Bool)
-> (WarningGroup -> WarningGroup -> Bool) -> Eq WarningGroup
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WarningGroup -> WarningGroup -> Bool
== :: WarningGroup -> WarningGroup -> Bool
$c/= :: WarningGroup -> WarningGroup -> Bool
/= :: WarningGroup -> WarningGroup -> Bool
Eq)
warningGroupName :: WarningGroup -> String
warningGroupName :: WarningGroup -> String
warningGroupName WarningGroup
W_compat = String
"compat"
warningGroupName WarningGroup
W_unused_binds = String
"unused-binds"
warningGroupName WarningGroup
W_extended_warnings = String
"extended-warnings"
warningGroupName WarningGroup
W_default = String
"default"
warningGroupName WarningGroup
W_extra = String
"extra"
warningGroupName WarningGroup
W_all = String
"all"
warningGroupName WarningGroup
W_everything = String
"everything"
warningGroupFlags :: WarningGroup -> [WarningFlag]
warningGroupFlags :: WarningGroup -> [WarningFlag]
warningGroupFlags WarningGroup
W_compat = [WarningFlag]
minusWcompatOpts
warningGroupFlags WarningGroup
W_unused_binds = [WarningFlag]
unusedBindsFlags
warningGroupFlags WarningGroup
W_extended_warnings = []
warningGroupFlags WarningGroup
W_default = [WarningFlag]
standardWarnings
warningGroupFlags WarningGroup
W_extra = [WarningFlag]
minusWOpts
warningGroupFlags WarningGroup
W_all = [WarningFlag]
minusWallOpts
warningGroupFlags WarningGroup
W_everything = [WarningFlag]
minusWeverythingOpts
warningGroupIncludesExtendedWarnings :: WarningGroup -> Bool
warningGroupIncludesExtendedWarnings :: WarningGroup -> Bool
warningGroupIncludesExtendedWarnings WarningGroup
W_compat = Bool
False
warningGroupIncludesExtendedWarnings WarningGroup
W_unused_binds = Bool
False
warningGroupIncludesExtendedWarnings WarningGroup
W_extended_warnings = Bool
True
warningGroupIncludesExtendedWarnings WarningGroup
W_default = Bool
True
warningGroupIncludesExtendedWarnings WarningGroup
W_extra = Bool
True
warningGroupIncludesExtendedWarnings WarningGroup
W_all = Bool
True
warningGroupIncludesExtendedWarnings WarningGroup
W_everything = Bool
True
warningGroups :: [WarningGroup]
warningGroups :: [WarningGroup]
warningGroups = [WarningGroup
forall a. Bounded a => a
minBound..WarningGroup
forall a. Bounded a => a
maxBound]
warningHierarchies :: [[WarningGroup]]
warningHierarchies :: [[WarningGroup]]
warningHierarchies = [[WarningGroup]]
hierarchies [[WarningGroup]] -> [[WarningGroup]] -> [[WarningGroup]]
forall a. [a] -> [a] -> [a]
++ (WarningGroup -> [WarningGroup])
-> [WarningGroup] -> [[WarningGroup]]
forall a b. (a -> b) -> [a] -> [b]
map (WarningGroup -> [WarningGroup] -> [WarningGroup]
forall a. a -> [a] -> [a]
:[]) [WarningGroup]
rest
where
hierarchies :: [[WarningGroup]]
hierarchies = [[WarningGroup
W_default, WarningGroup
W_extra, WarningGroup
W_all]]
rest :: [WarningGroup]
rest = (WarningGroup -> Bool) -> [WarningGroup] -> [WarningGroup]
forall a. (a -> Bool) -> [a] -> [a]
filter (WarningGroup -> [WarningGroup] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` WarningGroup
W_everything WarningGroup -> [WarningGroup] -> [WarningGroup]
forall a. a -> [a] -> [a]
: [[WarningGroup]] -> [WarningGroup]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[WarningGroup]]
hierarchies) [WarningGroup]
warningGroups
smallestWarningGroups :: WarningFlag -> [WarningGroup]
smallestWarningGroups :: WarningFlag -> [WarningGroup]
smallestWarningGroups WarningFlag
flag = ([WarningGroup] -> Maybe WarningGroup)
-> [[WarningGroup]] -> [WarningGroup]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe [WarningGroup] -> Maybe WarningGroup
go [[WarningGroup]]
warningHierarchies where
go :: [WarningGroup] -> Maybe WarningGroup
go (WarningGroup
group:[WarningGroup]
rest) = Maybe WarningGroup
-> Maybe (Maybe WarningGroup) -> Maybe WarningGroup
forall a. a -> Maybe a -> a
fromMaybe ([WarningGroup] -> Maybe WarningGroup
go [WarningGroup]
rest) (Maybe (Maybe WarningGroup) -> Maybe WarningGroup)
-> Maybe (Maybe WarningGroup) -> Maybe WarningGroup
forall a b. (a -> b) -> a -> b
$ do
Bool -> Maybe ()
forall (f :: * -> *). Alternative f => Bool -> f ()
guard (WarningFlag
flag WarningFlag -> [WarningFlag] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` WarningGroup -> [WarningFlag]
warningGroupFlags WarningGroup
group)
Maybe WarningGroup -> Maybe (Maybe WarningGroup)
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (WarningGroup -> Maybe WarningGroup
forall a. a -> Maybe a
Just WarningGroup
group)
go [] = Maybe WarningGroup
forall a. Maybe a
Nothing
smallestWarningGroupsForCategory :: [WarningGroup]
smallestWarningGroupsForCategory :: [WarningGroup]
smallestWarningGroupsForCategory = [WarningGroup
W_extended_warnings]
standardWarnings :: [WarningFlag]
standardWarnings :: [WarningFlag]
standardWarnings
= [ WarningFlag
Opt_WarnOverlappingPatterns,
WarningFlag
Opt_WarnDeprecatedFlags,
WarningFlag
Opt_WarnDeferredTypeErrors,
WarningFlag
Opt_WarnTypedHoles,
WarningFlag
Opt_WarnDeferredOutOfScopeVariables,
WarningFlag
Opt_WarnPartialTypeSignatures,
WarningFlag
Opt_WarnUnrecognisedPragmas,
WarningFlag
Opt_WarnMisplacedPragmas,
WarningFlag
Opt_WarnDuplicateExports,
WarningFlag
Opt_WarnDerivingDefaults,
WarningFlag
Opt_WarnOverflowedLiterals,
WarningFlag
Opt_WarnEmptyEnumerations,
WarningFlag
Opt_WarnAmbiguousFields,
WarningFlag
Opt_WarnMissingFields,
WarningFlag
Opt_WarnMissingMethods,
WarningFlag
Opt_WarnWrongDoBind,
WarningFlag
Opt_WarnUnsupportedCallingConventions,
WarningFlag
Opt_WarnDodgyForeignImports,
WarningFlag
Opt_WarnInlineRuleShadowing,
WarningFlag
Opt_WarnAlternativeLayoutRuleTransitional,
WarningFlag
Opt_WarnUnsupportedLlvmVersion,
WarningFlag
Opt_WarnMissedExtraSharedLib,
WarningFlag
Opt_WarnTabs,
WarningFlag
Opt_WarnUnrecognisedWarningFlags,
WarningFlag
Opt_WarnSimplifiableClassConstraints,
WarningFlag
Opt_WarnStarBinder,
WarningFlag
Opt_WarnStarIsType,
WarningFlag
Opt_WarnInaccessibleCode,
WarningFlag
Opt_WarnSpaceAfterBang,
WarningFlag
Opt_WarnNonCanonicalMonadInstances,
WarningFlag
Opt_WarnNonCanonicalMonoidInstances,
WarningFlag
Opt_WarnOperatorWhitespaceExtConflict,
WarningFlag
Opt_WarnUnicodeBidirectionalFormatCharacters,
WarningFlag
Opt_WarnGADTMonoLocalBinds,
WarningFlag
Opt_WarnBadlyStagedTypes,
WarningFlag
Opt_WarnTypeEqualityRequiresOperators,
WarningFlag
Opt_WarnInconsistentFlags,
WarningFlag
Opt_WarnDataKindsTC,
WarningFlag
Opt_WarnTypeEqualityOutOfScope,
WarningFlag
Opt_WarnViewPatternSignatures
]
minusWOpts :: [WarningFlag]
minusWOpts :: [WarningFlag]
minusWOpts
= [WarningFlag]
standardWarnings [WarningFlag] -> [WarningFlag] -> [WarningFlag]
forall a. [a] -> [a] -> [a]
++
[ WarningFlag
Opt_WarnUnusedTopBinds,
WarningFlag
Opt_WarnUnusedLocalBinds,
WarningFlag
Opt_WarnUnusedPatternBinds,
WarningFlag
Opt_WarnUnusedMatches,
WarningFlag
Opt_WarnUnusedForalls,
WarningFlag
Opt_WarnUnusedImports,
WarningFlag
Opt_WarnIncompletePatterns,
WarningFlag
Opt_WarnDodgyExports,
WarningFlag
Opt_WarnDodgyImports,
WarningFlag
Opt_WarnUnbangedStrictPatterns
]
minusWallOpts :: [WarningFlag]
minusWallOpts :: [WarningFlag]
minusWallOpts
= [WarningFlag]
minusWOpts [WarningFlag] -> [WarningFlag] -> [WarningFlag]
forall a. [a] -> [a] -> [a]
++
[ WarningFlag
Opt_WarnTypeDefaults,
WarningFlag
Opt_WarnNameShadowing,
WarningFlag
Opt_WarnMissingSignatures,
WarningFlag
Opt_WarnHiShadows,
WarningFlag
Opt_WarnOrphans,
WarningFlag
Opt_WarnUnusedDoBind,
WarningFlag
Opt_WarnTrustworthySafe,
WarningFlag
Opt_WarnMissingPatternSynonymSignatures,
WarningFlag
Opt_WarnUnusedRecordWildcards,
WarningFlag
Opt_WarnRedundantRecordWildcards,
WarningFlag
Opt_WarnIncompleteUniPatterns,
WarningFlag
Opt_WarnIncompletePatternsRecUpd,
WarningFlag
Opt_WarnIncompleteExportWarnings,
WarningFlag
Opt_WarnDerivingTypeable
]
minusWeverythingOpts :: [WarningFlag]
minusWeverythingOpts :: [WarningFlag]
minusWeverythingOpts = [ Int -> WarningFlag
forall a. Enum a => Int -> a
toEnum Int
0 .. ]
minusWcompatOpts :: [WarningFlag]
minusWcompatOpts :: [WarningFlag]
minusWcompatOpts
= [ WarningFlag
Opt_WarnImplicitRhsQuantification
, WarningFlag
Opt_WarnDeprecatedTypeAbstractions
]
unusedBindsFlags :: [WarningFlag]
unusedBindsFlags :: [WarningFlag]
unusedBindsFlags = [ WarningFlag
Opt_WarnUnusedTopBinds
, WarningFlag
Opt_WarnUnusedLocalBinds
, WarningFlag
Opt_WarnUnusedPatternBinds
]