cabal-gild-1.0.2.1: source/library/CabalGild/Type/Language.hs
module CabalGild.Type.Language where
import qualified Distribution.Parsec as Parsec
import qualified Distribution.Pretty as Pretty
import qualified Language.Haskell.Extension as Extension
-- | This type exists to provide an 'Ord' instance for
-- 'Language.Language', which was added in @Cabal-syntax-3.10.1.0@.
newtype Language = Language
{ unwrap :: Extension.Language
}
deriving (Eq, Show)
instance Ord Language where
compare x y = case (unwrap x, unwrap y) of
(Extension.Haskell98, Extension.Haskell98) -> EQ
(Extension.Haskell98, _) -> LT
(Extension.Haskell2010, Extension.Haskell2010) -> EQ
(Extension.Haskell2010, Extension.Haskell98) -> GT
(Extension.Haskell2010, _) -> LT
(Extension.GHC2021, Extension.GHC2021) -> EQ
(Extension.GHC2021, Extension.UnknownLanguage _) -> LT
(Extension.GHC2021, _) -> GT
(Extension.UnknownLanguage s, Extension.UnknownLanguage t) -> compare s t
(Extension.UnknownLanguage _, _) -> GT
instance Parsec.Parsec Language where
parsec = Language <$> Parsec.parsec
instance Pretty.Pretty Language where
pretty = Pretty.pretty . unwrap