518491783f93706781dd44555da879671d5c5ba9
[ghc.git] / libraries / ghc-boot-th / GHC / LanguageExtensions / Type.hs
1 -----------------------------------------------------------------------------
2 -- |
3 -- Module : GHC.LanguageExtensions.Type
4 -- Copyright : (c) The GHC Team
5 --
6 -- Maintainer : ghc-devs@haskell.org
7 -- Portability : portable
8 --
9 -- A data type defining the language extensions supported by GHC.
10 --
11 {-# LANGUAGE DeriveGeneric #-}
12 module GHC.LanguageExtensions.Type ( Extension(..) ) where
13
14 import GHC.Generics
15
16 -- | The language extensions known to GHC.
17 --
18 -- Note that there is an orphan 'Binary' instance for this type supplied by
19 -- the "GHC.LanguageExtensions" module provided by @ghc-boot@. We can't provide
20 -- here as this would require adding transitive dependencies to the
21 -- @template-haskell@ package, which must have a minimal dependency set.
22 data Extension
23 -- See Note [Updating flag description in the User's Guide] in DynFlags
24 = Cpp
25 | OverlappingInstances
26 | UndecidableInstances
27 | IncoherentInstances
28 | UndecidableSuperClasses
29 | MonomorphismRestriction
30 | MonoPatBinds
31 | MonoLocalBinds
32 | RelaxedPolyRec -- Deprecated
33 | ExtendedDefaultRules -- Use GHC's extended rules for defaulting
34 | ForeignFunctionInterface
35 | UnliftedFFITypes
36 | InterruptibleFFI
37 | CApiFFI
38 | GHCForeignImportPrim
39 | JavaScriptFFI
40 | ParallelArrays -- Syntactic support for parallel arrays
41 | Arrows -- Arrow-notation syntax
42 | TemplateHaskell
43 | TemplateHaskellQuotes -- subset of TH supported by stage1, no splice
44 | QuasiQuotes
45 | ImplicitParams
46 | ImplicitPrelude
47 | ScopedTypeVariables
48 | AllowAmbiguousTypes
49 | UnboxedTuples
50 | UnboxedSums
51 | BangPatterns
52 | TypeFamilies
53 | TypeFamilyDependencies
54 | TypeInType
55 | OverloadedStrings
56 | OverloadedLists
57 | NumDecimals
58 | DisambiguateRecordFields
59 | RecordWildCards
60 | RecordPuns
61 | ViewPatterns
62 | GADTs
63 | GADTSyntax
64 | NPlusKPatterns
65 | DoAndIfThenElse
66 | BlockArguments
67 | RebindableSyntax
68 | ConstraintKinds
69 | PolyKinds -- Kind polymorphism
70 | DataKinds -- Datatype promotion
71 | InstanceSigs
72 | ApplicativeDo
73
74 | StandaloneDeriving
75 | DeriveDataTypeable
76 | AutoDeriveTypeable -- Automatic derivation of Typeable
77 | DeriveFunctor
78 | DeriveTraversable
79 | DeriveFoldable
80 | DeriveGeneric -- Allow deriving Generic/1
81 | DefaultSignatures -- Allow extra signatures for defmeths
82 | DeriveAnyClass -- Allow deriving any class
83 | DeriveLift -- Allow deriving Lift
84 | DerivingStrategies
85 | DerivingVia -- Derive through equal representation
86
87 | TypeSynonymInstances
88 | FlexibleContexts
89 | FlexibleInstances
90 | ConstrainedClassMethods
91 | MultiParamTypeClasses
92 | NullaryTypeClasses
93 | FunctionalDependencies
94 | UnicodeSyntax
95 | ExistentialQuantification
96 | MagicHash
97 | EmptyDataDecls
98 | KindSignatures
99 | RoleAnnotations
100 | ParallelListComp
101 | TransformListComp
102 | MonadComprehensions
103 | GeneralizedNewtypeDeriving
104 | RecursiveDo
105 | PostfixOperators
106 | TupleSections
107 | PatternGuards
108 | LiberalTypeSynonyms
109 | RankNTypes
110 | ImpredicativeTypes
111 | TypeOperators
112 | ExplicitNamespaces
113 | PackageImports
114 | ExplicitForAll
115 | AlternativeLayoutRule
116 | AlternativeLayoutRuleTransitional
117 | DatatypeContexts
118 | NondecreasingIndentation
119 | RelaxedLayout
120 | TraditionalRecordSyntax
121 | LambdaCase
122 | MultiWayIf
123 | BinaryLiterals
124 | NegativeLiterals
125 | HexFloatLiterals
126 | DuplicateRecordFields
127 | OverloadedLabels
128 | EmptyCase
129 | PatternSynonyms
130 | PartialTypeSignatures
131 | NamedWildCards
132 | StaticPointers
133 | TypeApplications
134 | Strict
135 | StrictData
136 | MonadFailDesugaring
137 | EmptyDataDeriving
138 | NumericUnderscores
139 | QuantifiedConstraints
140 deriving (Eq, Enum, Show, Generic)