-
-glaExtsEnabled, ffiEnabled, parrEnabled :: Int -> Bool
-glaExtsEnabled flags = testBit flags glaExtsBit
-ffiEnabled flags = testBit flags ffiBit
-parrEnabled flags = testBit flags parrBit
-arrowsEnabled flags = testBit flags arrowsBit
-thEnabled flags = testBit flags thBit
-ipEnabled flags = testBit flags ipBit
-tvEnabled flags = testBit flags tvBit
-bangPatEnabled flags = testBit flags bangPatBit
-idxTysEnabled flags = testBit flags idxTysBit
-haddockEnabled flags = testBit flags haddockBit
+magicHashBit :: Int
+magicHashBit = 11 -- "#" in both functions and operators
+kindSigsBit :: Int
+kindSigsBit = 12 -- Kind signatures on type variables
+recursiveDoBit :: Int
+recursiveDoBit = 13 -- mdo
+unicodeSyntaxBit :: Int
+unicodeSyntaxBit = 14 -- the forall symbol, arrow symbols, etc
+unboxedTuplesBit :: Int
+unboxedTuplesBit = 15 -- (# and #)
+standaloneDerivingBit :: Int
+standaloneDerivingBit = 16 -- standalone instance deriving declarations
+transformComprehensionsBit :: Int
+transformComprehensionsBit = 17
+qqBit :: Int
+qqBit = 18 -- enable quasiquoting
+inRulePragBit :: Int
+inRulePragBit = 19
+rawTokenStreamBit :: Int
+rawTokenStreamBit = 20 -- producing a token stream with all comments included
+newQualOpsBit :: Int
+newQualOpsBit = 21 -- Haskell' qualified operator syntax, e.g. Prelude.(+)
+
+always :: Int -> Bool
+always _ = True
+genericsEnabled :: Int -> Bool
+genericsEnabled flags = testBit flags genericsBit
+parrEnabled :: Int -> Bool
+parrEnabled flags = testBit flags parrBit
+arrowsEnabled :: Int -> Bool
+arrowsEnabled flags = testBit flags arrowsBit
+thEnabled :: Int -> Bool
+thEnabled flags = testBit flags thBit
+ipEnabled :: Int -> Bool
+ipEnabled flags = testBit flags ipBit
+explicitForallEnabled :: Int -> Bool
+explicitForallEnabled flags = testBit flags explicitForallBit
+bangPatEnabled :: Int -> Bool
+bangPatEnabled flags = testBit flags bangPatBit
+-- tyFamEnabled :: Int -> Bool
+-- tyFamEnabled flags = testBit flags tyFamBit
+haddockEnabled :: Int -> Bool
+haddockEnabled flags = testBit flags haddockBit
+magicHashEnabled :: Int -> Bool
+magicHashEnabled flags = testBit flags magicHashBit
+-- kindSigsEnabled :: Int -> Bool
+-- kindSigsEnabled flags = testBit flags kindSigsBit
+unicodeSyntaxEnabled :: Int -> Bool
+unicodeSyntaxEnabled flags = testBit flags unicodeSyntaxBit
+unboxedTuplesEnabled :: Int -> Bool
+unboxedTuplesEnabled flags = testBit flags unboxedTuplesBit
+standaloneDerivingEnabled :: Int -> Bool
+standaloneDerivingEnabled flags = testBit flags standaloneDerivingBit
+qqEnabled :: Int -> Bool
+qqEnabled flags = testBit flags qqBit
+-- inRulePrag :: Int -> Bool
+-- inRulePrag flags = testBit flags inRulePragBit
+rawTokenStreamEnabled :: Int -> Bool
+rawTokenStreamEnabled flags = testBit flags rawTokenStreamBit
+newQualOps :: Int -> Bool
+newQualOps flags = testBit flags newQualOpsBit
+oldQualOps :: Int -> Bool
+oldQualOps flags = not (newQualOps flags)