{-# LANGUAGE CPP #-}

-- | Operations for handling languages (e.g., Haskell2010).
module HIndent.Language
  ( convertLanguage
  ) where

import qualified GHC.Driver.Session as GLP
import GHC.Stack
import qualified Language.Haskell.Extension as Cabal

-- | This function converts a value of 'Language' defined in the 'Cabal'
-- package to the same value of 'Language' defined in the 'ghc-lib-parser'
-- package.
--
-- This function raises an error if a 'UnknownLanguage' value is passed.
convertLanguage :: HasCallStack => Cabal.Language -> GLP.Language
convertLanguage :: HasCallStack => Language -> Language
convertLanguage Language
Cabal.Haskell98 = Language
GLP.Haskell98
convertLanguage Language
Cabal.Haskell2010 = Language
GLP.Haskell2010
#if MIN_VERSION_Cabal(3,6,0)
convertLanguage Language
Cabal.GHC2021 = Language
GLP.GHC2021
#endif
convertLanguage (Cabal.UnknownLanguage String
s) = String -> Language
forall a. HasCallStack => String -> a
error (String -> Language) -> String -> Language
forall a b. (a -> b) -> a -> b
$ String
"Unknown language: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
s