lookupRdrNameInModuleForPlugins with constructors

Conal Elliott conal at conal.net
Wed Mar 23 01:55:20 UTC 2016


I'm now able to look up value identifiers, type constructors (including
classes), and regular data constructors, but not dictionary constructors.
Here's my failing effort to look up a dictionary constructor (in CoreM):

    hasRepThing <-
      maybe (panic "HasRep lookup failure") lookupThing =<<
        (liftIO $
          lookupRdrNameInModuleForPlugins hsc_env (mkModuleName
"Circat.Rep")
             (Unqual (mkDataOcc "C:HasRep")))
    pprTrace "mkReifyEnv HasRep thing:" (ppr hasRepThing) (return ())

Result:

    ghc-stage2: panic! (the 'impossible' happened)
      (GHC version 8.1.20160307 for x86_64-apple-darwin):
            HasRep lookup failure

Same failure when I use the name string "HasRep" in place of "C:HasRep".

Any idea what I'm doing wrong here?

-- Conal

On Tue, Mar 22, 2016 at 5:40 PM, Conal Elliott <conal at conal.net> wrote:

> Got it. Silly me. Thanks!!  - Conal
>
> On Tue, Mar 22, 2016 at 5:25 PM, Andrew Farmer <xichekolas at gmail.com>
> wrote:
>
>> Er, dictionary... sorry, mkDataOccFS
>>
>> On Tue, Mar 22, 2016 at 5:24 PM, Andrew Farmer <xichekolas at gmail.com>
>> wrote:
>> > mkVarUnqual calls mkVarOccFS, which constructs an OccName in the
>> > varName namespace. You need to construct your RdrName via mkTyVarOcc,
>> > which picks the Type/Class namespace.
>> >
>> > On Tue, Mar 22, 2016 at 5:09 PM, Conal Elliott <conal at conal.net> wrote:
>> >> I'm trying to construct a dictionary in a GHC plugin. I'm stuck on
>> finding
>> >> the constructor for the dictionary. When I use `-ddump-simpl` on the
>> module
>> >> that defines the class, I see "Circat.Rep.C:HasRep". To try finding
>> that
>> >> constructor, I say
>> >>
>> >>> lookupRdrNameInModuleForPlugins hsc_env
>> >>>   (mkModuleName "Circat.Rep") (mkVarUnqual "C:HasRep")
>> >>
>> >> However, I keep getting `Nothing` as a result. (Same without the
>> "C:".) I've
>> >> also had this same difficulty when looking up constructors for
>> algebraic
>> >> data types and when looking up TyCons. For regular value Ids, lookup
>> >> succeeds.
>> >>
>> >> What am I missing?
>> >>
>> >> Thanks, - Conal
>> >>
>> >> _______________________________________________
>> >> ghc-devs mailing list
>> >> ghc-devs at haskell.org
>> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>> >>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160322/9cb50261/attachment.html>


More information about the ghc-devs mailing list