
On 18/02/13 14:02, Edsko de Vries wrote:
Dear Simon, other ghc devs,
I hooked into genericHscRecompile to traverse the typechecked source and construct an environment of type
[(SrcSpan, Id)]
recording all identifiers in the source with their type, definition site, etc. To be precise, I am traversing the
tcg_binds :: LHsBinds Id, -- Value bindings in this module
field of the TcGblEnv structure returned by the type checker. The problem is that I have so far been unable to find top-level user-supplied type annotations inside LHsBinds. The closest thing I've found is the PostTcType of a MatchGroup, but that is not Located; what I'm really looking for is an LSig. Now, let-bindings get a HsValBindsLR instead of an LHsBinds, and that *does* contain signatures. My question is two-fold:
1. First, am I missing something? Are there LSigs somewhere inside the TcGblEnv where I simply haven't seen them?
This might not be directly answering your question, but there are quite a few things that are not in the output of the typechecker, type signatures being one of them. There's a little list in GHC.hs which I paste below for your enjoyment: -- - the export list -- - the imports -- - type signatures -- - type/data/newtype declarations -- - class declarations -- - instances I vaguely remember having some discussions in the past about having the typechecker run over the renamed versions of these replacing Names with Ids, but I don't think it ever got implemented. So the best you can do right now is use the renamed versions of these, and you get Names rather than Ids. Cheers, Simon
2. If not, is there a good reason why tcg_binds is an LHsBinds rather than an HsValBindsLR? And if there isn't, would you accept a patch making the change?
Thanks,
Edsko
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs