
#10391: Ability to get export list of TH reified module -------------------------------------+------------------------------------- Reporter: dmcclean | Owner: Type: feature request | Status: new Priority: low | Milestone: Component: Template Haskell | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by dmcclean): I'm not sure how strong the connection to #1475 is, because that ticket is about writing new exports in splices, whereas this one is about reading existing splices. I'd like to take a swing at this one, and I've just traced through enough of the code to have a good plan of attack, but I barely even know where to start to tackle #1475, so if you feel strongly that there's something to be gained by attacking both at once then I may not be the man for the job. (Which isn't to say that I won't try, just that I might need considerable help getting up to speed.) Setting aside #1475, on this one the meat of it happens [here](https://github.com/ghc/ghc/blob/4efa421327cf127ebefde59b2eece693e37dc3c6/com...): {{{#!hs reifyThisModule = do usages <- fmap (map modToTHMod . moduleEnvKeys . imp_mods) getImports return $ TH.ModuleInfo usages reifyFromIface reifMod = do iface <- loadInterfaceForModule (ptext (sLit "reifying module from TH for") <+> ppr reifMod) reifMod let usages = [modToTHMod m | usage <- mi_usages iface, Just m <- [usageToModule (modulePackageKey reifMod) usage] ] return $ TH.ModuleInfo usages }}} My plan would be to extend the `reifyFromIface` bit to bind the exported names from the `AvailInfo`s in the `mi_exports` field of `iface`, flattening them into a list of names. (I'm not sure quite how to get from `Name.Name` to `Language.TH.Syntax.Name` though...) Then I would add the list of names to the `TH.ModuleInfo`. I would extend the `reifyThisModule` bit to `TH.ModuleInfo usages (error "Accessing the list of names exported by the current module is not supported.")`, or something to that effect. I assume there are style conventions on how to write such errors, I could use a pointer on where to look for that. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10391#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler