Top-level type signatures in TcGblEnv?

Simon Marlow marlowsd at gmail.com
Mon Feb 18 15:31:54 CET 2013


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 at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>




More information about the ghc-devs mailing list