{-# LANGUAGE CPP #-} module GHC.NotExport.Plugin (plugin) where #if MIN_VERSION_ghc(9,0,0) import GHC.Driver.Plugins import GHC.Types.Avail import GHC.Types.Name import GHC.Tc.Types import GHC.Utils.Outputable #else import GhcPlugins import Plugins import TcRnTypes import Avail #endif import Data.List (isPrefixOf) plugin :: Plugin plugin :: Plugin plugin = Plugin defaultPlugin { typeCheckResultAction = notExportPlugins, pluginRecompile = purePlugin } notExportPlugins :: p -> p -> TcGblEnv -> m TcGblEnv notExportPlugins p cmdOptions p modSummary TcGblEnv env = do let updated_tcg_exports :: [AvailInfo] updated_tcg_exports = (AvailInfo -> Bool) -> [AvailInfo] -> [AvailInfo] forall a. (a -> Bool) -> [a] -> [a] filter (\AvailInfo v -> Bool -> Bool not (CommandLineOption -> CommandLineOption -> Bool forall a. Eq a => [a] -> [a] -> Bool isPrefixOf CommandLineOption "inline_c_ffi" ((SDoc -> CommandLineOption showSDocUnsafe (SDoc -> CommandLineOption) -> (AvailInfo -> SDoc) -> AvailInfo -> CommandLineOption forall b c a. (b -> c) -> (a -> b) -> a -> c . OccName -> SDoc forall a. Outputable a => a -> SDoc ppr (OccName -> SDoc) -> (AvailInfo -> OccName) -> AvailInfo -> SDoc forall b c a. (b -> c) -> (a -> b) -> a -> c . Name -> OccName nameOccName (Name -> OccName) -> (AvailInfo -> Name) -> AvailInfo -> OccName forall b c a. (b -> c) -> (a -> b) -> a -> c . AvailInfo -> Name availName) AvailInfo v))) ([AvailInfo] -> [AvailInfo]) -> [AvailInfo] -> [AvailInfo] forall a b. (a -> b) -> a -> b $ TcGblEnv -> [AvailInfo] tcg_exports TcGblEnv env TcGblEnv -> m TcGblEnv forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return TcGblEnv env {tcg_exports = updated_tcg_exports}