{-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} module GHC.Builtin.Utils (GHC(..), isKnownKeyName, lookupKnownKeyName) where import Data.Maybe import Control.Applicative import GHC.Types.Unique import GHC.Types.Unique.FM import GHC.Builtin.Imports import GHC.Builtin.Uniques import GHC.Builtin.Names.GHC908 qualified as GHC908 import GHC.Builtin.Names.GHC910 qualified as GHC910 import GHC.Builtin.Names.GHC912 qualified as GHC912 data GHC = GHC908 | GHC910 | GHC912 lookupKnownKeyName :: GHC -> Unique -> Maybe Name lookupKnownKeyName :: GHC -> Unique -> Maybe Name lookupKnownKeyName = \ case GHC GHC908 -> Unique -> Maybe Name lookupKnownKeyName908 GHC GHC910 -> Unique -> Maybe Name lookupKnownKeyName910 GHC GHC912 -> Unique -> Maybe Name lookupKnownKeyName912 lookupKnownKeyName908 :: Unique -> Maybe Name lookupKnownKeyName908 :: Unique -> Maybe Name lookupKnownKeyName908 Unique u = Unique -> Maybe Name knownUniqueName Unique u Maybe Name -> Maybe Name -> Maybe Name forall a. Maybe a -> Maybe a -> Maybe a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> UniqFM Name Name -> Unique -> Maybe Name forall key elt. UniqFM key elt -> Unique -> Maybe elt lookupUFM_Directly UniqFM Name Name knownKeysMap908 Unique u lookupKnownKeyName910 :: Unique -> Maybe Name lookupKnownKeyName910 :: Unique -> Maybe Name lookupKnownKeyName910 Unique u = Unique -> Maybe Name knownUniqueName Unique u Maybe Name -> Maybe Name -> Maybe Name forall a. Maybe a -> Maybe a -> Maybe a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> UniqFM Name Name -> Unique -> Maybe Name forall key elt. UniqFM key elt -> Unique -> Maybe elt lookupUFM_Directly UniqFM Name Name knownKeysMap910 Unique u lookupKnownKeyName912 :: Unique -> Maybe Name lookupKnownKeyName912 :: Unique -> Maybe Name lookupKnownKeyName912 Unique u = Unique -> Maybe Name knownUniqueName Unique u Maybe Name -> Maybe Name -> Maybe Name forall a. Maybe a -> Maybe a -> Maybe a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> UniqFM Name Name -> Unique -> Maybe Name forall key elt. UniqFM key elt -> Unique -> Maybe elt lookupUFM_Directly UniqFM Name Name knownKeysMap912 Unique u knownKeysMap908 :: UniqFM Name Name knownKeysMap908 :: UniqFM Name Name knownKeysMap908 = [Name] -> UniqFM Name Name forall key. Uniquable key => [key] -> UniqFM key key listToIdentityUFM [Name] GHC908.knownKeyNames knownKeysMap910 :: UniqFM Name Name knownKeysMap910 :: UniqFM Name Name knownKeysMap910 = [Name] -> UniqFM Name Name forall key. Uniquable key => [key] -> UniqFM key key listToIdentityUFM [Name] GHC910.knownKeyNames knownKeysMap912 :: UniqFM Name Name knownKeysMap912 :: UniqFM Name Name knownKeysMap912 = [Name] -> UniqFM Name Name forall key. Uniquable key => [key] -> UniqFM key key listToIdentityUFM [Name] GHC912.knownKeyNames isKnownKeyName :: Name -> Bool isKnownKeyName :: Name -> Bool isKnownKeyName Name n = Maybe Name -> Bool forall a. Maybe a -> Bool isJust (Unique -> Maybe Name knownUniqueName (Unique -> Maybe Name) -> Unique -> Maybe Name forall a b. (a -> b) -> a -> b $ Name -> Unique nameUnique Name n) Bool -> Bool -> Bool || Name -> UniqFM Name () -> Bool forall key elt. Uniquable key => key -> UniqFM key elt -> Bool elemUFM Name n UniqFM Name () knownKeys #if __GLASGOW_HASKELL__ == 908 || __GLASGOW_HASKELL__ == 910 || __GLASGOW_HASKELL__ == 912 knownKeys :: UniqFM Name () knownKeys :: UniqFM Name () knownKeys = () () -> UniqFM Name Name -> UniqFM Name () forall a b. a -> UniqFM Name b -> UniqFM Name a forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ UniqFM Name Name knownKeysMap908 UniqFM Name Name -> UniqFM Name Name -> UniqFM Name Name forall a. Semigroup a => a -> a -> a <> UniqFM Name Name knownKeysMap910 UniqFM Name Name -> UniqFM Name Name -> UniqFM Name Name forall a. Semigroup a => a -> a -> a <> UniqFM Name Name knownKeysMap912 #endif