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

Reply via email to