Thanks a lot for your suggestion! I’ve looked into GHC source plugins. And, specifically, into your `hashtag-coerce` example:
* https://github.com/mpickering/hashtag-coerce <https://github.com/mpickering/hashtag-coerce> As far as I can see, this allows only to analyse source code (to produce warnings or errors). While my actual goal is actually to refactor code automatically. And I would like to avoid full compilation process to make it work faster. Thanks, Dmitrii > On 21 Jun 2018, at 5:51 PM, Matthew Pickering <matthewtpicker...@gmail.com> > wrote: > > This doesn't answer your question directly but if you want to gather > information about a module then using a source plugin would probably > be easier and more robust than using the GHC API. > > You need to write a function of type: > > ``` > ModSummary -> TcGblEnv -> TcM TcGblEnv > ``` > > In `TcGblEnv` you will find `tcg_rdr_env` which contains all top-level > things and describes how they came to be in scope. > > Source plugins will be in GHC 8.6. > > Cheers, > > Matt > > > On Thu, Jun 21, 2018 at 10:06 AM, Dmitriy Kovanikov <kovani...@gmail.com> > wrote: >> Hello! >> >> I’m trying to use GHC as a library. And my goal is to be able to gather >> information about where each function or data type came from. I’ve started >> by simply calling `getNamesInScope` function and observing its result. Here >> is my code: >> >> * Main.hs: https://lpaste.net/9026688686753841152 >> >> And here is the code for my test modules: >> >> * test/X.hs: https://lpaste.net/6844657232357883904 >> * test/Y.hs: https://lpaste.net/8673289058127970304 >> >> Unfortunately, my implementation doesn't work since I’m not very familiar >> with GHC API. >> And I see the following errors after executing my `Main.hs` file (I’m using >> ghc-8.2.2): >> >> * error messages: https://lpaste.net/3316737208131518464 >> >> Could you please point me to places or parts of GHC API or some >> documentation about module dependencies and how to make ghc see imports of >> other modules? I can’t find simple and small enough usage example of this >> part of the library. >> >> Thanks in advance, >> Dmitrii Kovanikov >> >> _______________________________________________ >> ghc-devs mailing list >> ghc-devs@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >>
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs