Hey Sam,
gave the following, which works for me:
module Main where
import Control.Monad
import Control.Monad.IO.Class
import BasicTypes
import DynFlags
import GHC
import GHC.Paths (libdir)
import Maybes
import Panic
main = runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
void $ setSessionDynFlags $ dflags {
hscTarget = HscInterpreted
, ghcLink = LinkInMemory
}
t <- guessTarget "Main.hs" Nothing
setTargets [t]
_ <- load LoadAllTargets
graph <- getModuleGraph
mss <- filterM (isLoaded . ms_mod_name) (mgModSummaries graph)
let m = ms_mod ms
ms = head mss
liftIO . putStrLn $ (show . length $ mss) ++ " modules loaded"
mi <- getModuleInfo m
let mod_info = fromJust mi
dflags <- getDynFlags
let names = GHC.modInfoTopLevelScope mod_info `orElse` []
liftIO $ putStrLn $ "seen " <> (show $ length names) <> " Names"
--
Best, Artem