Implement the EmptyDataDeriving proposal
[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 | RebindableSyntax
67 | ConstraintKinds
68 | PolyKinds -- Kind polymorphism
69 | DataKinds -- Datatype promotion
70 | InstanceSigs
71 | ApplicativeDo
72
73 | StandaloneDeriving
74 | DeriveDataTypeable
75 | AutoDeriveTypeable -- Automatic derivation of Typeable
76 | DeriveFunctor
77 | DeriveTraversable
78 | DeriveFoldable
79 | DeriveGeneric -- Allow deriving Generic/1
80 | DefaultSignatures -- Allow extra signatures for defmeths
81 | DeriveAnyClass -- Allow deriving any class
82 | DeriveLift -- Allow deriving Lift
83 | DerivingStrategies
84
85 | TypeSynonymInstances
86 | FlexibleContexts
87 | FlexibleInstances
88 | ConstrainedClassMethods
89 | MultiParamTypeClasses
90 | NullaryTypeClasses
91 | FunctionalDependencies
92 | UnicodeSyntax
93 | ExistentialQuantification
94 | MagicHash
95 | EmptyDataDecls
96 | KindSignatures
97 | RoleAnnotations
98 | ParallelListComp
99 | TransformListComp
100 | MonadComprehensions
101 | GeneralizedNewtypeDeriving
102 | RecursiveDo
103 | PostfixOperators
104 | TupleSections
105 | PatternGuards
106 | LiberalTypeSynonyms
107 | RankNTypes
108 | ImpredicativeTypes
109 | TypeOperators
110 | ExplicitNamespaces
111 | PackageImports
112 | ExplicitForAll
113 | AlternativeLayoutRule
114 | AlternativeLayoutRuleTransitional
115 | DatatypeContexts
116 | NondecreasingIndentation
117 | RelaxedLayout
118 | TraditionalRecordSyntax
119 | LambdaCase
120 | MultiWayIf
121 | BinaryLiterals
122 | NegativeLiterals
123 | DuplicateRecordFields
124 | OverloadedLabels
125 | EmptyCase
126 | PatternSynonyms
127 | PartialTypeSignatures
128 | NamedWildCards
129 | StaticPointers
130 | TypeApplications
131 | Strict
132 | StrictData
133 | MonadFailDesugaring
134 | EmptyDataDeriving
135 deriving (Eq, Enum, Show, Generic)