Are you sure that Int# is in (lexical scope) in the GlobalRdrEnv of the HscEnv? If not, looking up the String in the lexicial environment will fail.

 

You can always just grab TysPrim.intPrimTyCon.

 

Simon

 

From: Ranjit Jhala <jhala@cs.ucsd.edu>
Sent: 29 June 2018 00:55
To: Simon Peyton Jones <simonpj@microsoft.com>
Cc: ghc-devs@haskell.org
Subject: Re: GHC.Prim.Int# is not at TyThing?

 

Dear Simon (and all),

 

Thanks! Then it seems my problem is much worse: somehow the code

I had that used the `HscEnv` to "resolve" names (i.e. get `Name`

and then `TyThing` and then `TyCon`) from plain strings is no

longer working with the GHC 8.4.3.

 

My efforts to distill the relevant LH code into a simple test that

shows the difference between the two versions (GHC 8.2 and 8.4) have

proven fruitless so far.

 

Can anyone point me to a (small?) example of using the GHC API

that implements something like:

 

   lookupVarType :: String -> IO String

 

which

 

   takes a `String` corresponding to the name of a top-level binder as input,

   and returns a `String` containing the TYPE of the binder as output?

 

Thanks!

 

- Ranjit.

 

 

 

 

 

 

 

 

On Thu, Jun 28, 2018 at 3:48 AM Simon Peyton Jones <simonpj@microsoft.com> wrote:

Does the above indicate that in fact, `GHC.Prim.Int#` DOES NOT (any longer) correspond to a `TyCon`?

No, it does not indicate that!  There still is a TyCon for Int#.  Indeed you can see it defined in TysPrim.intPrimTyCon.

 

Simon

 

 

From: Ranjit Jhala <jhala@cs.ucsd.edu>
Sent: 28 June 2018 06:08
To: ghc-devs@haskell.org; Simon Peyton Jones <simonpj@microsoft.com>
Subject: GHC.Prim.Int# is not at TyThing?

 

Hi all,

 

I am trying to update LiquidHaskell to GHC 8.4.

 

In doing so, I find that I can no longer resolve

(i.e. get the `TyThing`, and hence `TyCon`)

corresponding to the name:

 

 

It seems like in older versions, we had


   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int#     -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: #

 

but in GHC 8.4 this is changed so:

 

   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep
      -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep

 

Does the above indicate that in fact, `GHC.Prim.Int#`

DOES NOT (any longer) correspond to a `TyCon`? If so,

what does it correspond to? i.e. how is it represented

as a `Type` in GHC?

 

Any pointers would be most appreciated!

 

Thanks!

 

- Ranjit.