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@conal.net> wrote:
Got it. Silly me. Thanks!! - Conal
On Tue, Mar 22, 2016 at 5:25 PM, Andrew Farmer <xichekolas@gmail.com> wrote:
Er, dictionary... sorry, mkDataOccFS
On Tue, Mar 22, 2016 at 5:24 PM, Andrew Farmer <xichekolas@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@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@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs