You can use `thNameToGhcName` to turn a quoted name ('foo) into a GHC
Name and and then use `lookupId` in order to get the `Id` for that
Name.Cheers, Matt On Tue, Nov 26, 2019 at 12:55 PM Josef Svenningsson <[email protected]> wrote: > > Yes, the plugin is fully aware of module A in my example. > > > > Thanks, > > > > Josef > > > > From: "Domínguez, Facundo" <[email protected]> > Date: Tuesday, November 26, 2019 at 11:56 AM > To: Josef Svenningsson <[email protected]> > Cc: "[email protected]" <[email protected]> > Subject: Re: Injecting imported functions using a core plugin > > > > Hello Josef, > > > > Do you know the location of foo when building the plugin? Otherwise, how is > the plugin supposed to learn where it comes from? > > > > Facundo > > > > On Tue, Nov 26, 2019 at 8:49 AM Josef Svenningsson <[email protected]> wrote: > > Hi ghc-devs, > > > > I’m currently writing a core plugin that I could use some help with. > > Consider the following two modules: > > > > ``` > > module A where > > > > foo :: Int > > bar :: Int > > > > module B where > > > > baz :: Int > > baz = bar > > ``` > > > > When compiling module B I run my plugin. The goal of the plugin is to replace > the occurrence of `bar` with `foo`. Note that we can be sure that `foo` is > actually imported, but unfortunately doesn’t occur anywhere in B before the > plugin performs the transformation. > > > > The problem I have is that in order to inject `foo` in B I need to have an > `Id` which represents `foo` and I’m having some trouble constructing such an > `Id`. I’ve looked through the various environments that are available during > the core to core transformations but none of them provides enough information > to actually produce the `foo` `Id` as far as I can see. I hope I’m missing > something. What do I need to do in order to construct the `foo` `Id` in > module B? > > > > Thanks, > > > > Josef > > > > PS. The way I’ve phrased my problem in this email it would be possible to > solve it with rewrite rules. My actual use case is unfortunately more > complicated and rewrite rules don’t provide enough power to do what I want. > > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
