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
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs