{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskellQuotes #-} module Test.Tasty.AutoCollect.ExternalNames ( ExternalNames (..), loadExternalNames, ) where import Test.Tasty (TestTree) import Test.Tasty.ExpectedFailure (expectFail, expectFailBecause, ignoreTest, ignoreTestBecause) import Test.Tasty.AutoCollect.Error import Test.Tasty.AutoCollect.GHC import Test.Tasty.Ext.Todo (testTreeTodo) data ExternalNames = ExternalNames { ExternalNames -> Name name_String :: Name , ExternalNames -> Name name_concat :: Name , ExternalNames -> Name name_map :: Name , ExternalNames -> Name name_TestTree :: Name , ExternalNames -> Name name_testTreeTodo :: Name , ExternalNames -> Name name_expectFail :: Name , ExternalNames -> Name name_expectFailBecause :: Name , ExternalNames -> Name name_ignoreTest :: Name , ExternalNames -> Name name_ignoreTestBecause :: Name } loadExternalNames :: HscEnv -> IO ExternalNames loadExternalNames :: HscEnv -> IO ExternalNames loadExternalNames HscEnv env = do Name name_String <- Name -> IO Name loadName ''String Name name_concat <- Name -> IO Name loadName 'concat Name name_map <- Name -> IO Name loadName 'map Name name_TestTree <- Name -> IO Name loadName ''TestTree Name name_testTreeTodo <- Name -> IO Name loadName 'testTreeTodo Name name_expectFail <- Name -> IO Name loadName 'expectFail Name name_expectFailBecause <- Name -> IO Name loadName 'expectFailBecause Name name_ignoreTest <- Name -> IO Name loadName 'ignoreTest Name name_ignoreTestBecause <- Name -> IO Name loadName 'ignoreTestBecause forall (f :: * -> *) a. Applicative f => a -> f a pure ExternalNames{Name name_ignoreTestBecause :: Name name_ignoreTest :: Name name_expectFailBecause :: Name name_expectFail :: Name name_testTreeTodo :: Name name_TestTree :: Name name_map :: Name name_concat :: Name name_String :: Name name_ignoreTestBecause :: Name name_ignoreTest :: Name name_expectFailBecause :: Name name_expectFail :: Name name_testTreeTodo :: Name name_TestTree :: Name name_map :: Name name_concat :: Name name_String :: Name ..} where loadName :: Name -> IO Name loadName Name name = HscEnv -> IORef NameCache -> Name -> IO (Maybe Name) thNameToGhcNameIO HscEnv env (HscEnv -> IORef NameCache hsc_NC HscEnv env) Name name forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall a. String -> a autocollectError forall a b. (a -> b) -> a -> b $ String "Could not get Name for " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show Name name) forall (m :: * -> *) a. Monad m => a -> m a return