Opened 3 years ago

Closed 3 years ago

#12033 closed bug (fixed)

[TypeApplications] GHC internal error

Reported by: Iceland_jack Owned by:
Priority: normal Milestone:
Component: Compiler Version: 8.1
Keywords: TypeApplications Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case: partial-sigs/should_compile/T12033
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:


Toying around, got

GHCi, version 8.1.20160503:  :? for help
[1 of 1] Compiling Main             ( /tmp/CatFail.hs, interpreted )

/tmp/CatFail.hs:55:26: error:
    • GHC internal error: ‘a’ is not in scope during type checking, but it passed the renamer
      tcl_env of environment: [a1Ej :-> Type variable ‘i’ = i,
                               a1Ek :-> Type variable ‘p’ = p, a1Et :-> Type variable ‘a’ = a,
                               a1Eu :-> Type variable ‘b’ = b]
    • In the first argument of ‘Vacuous’, namely ‘a’
      In the type ‘Vacuous a’
      In the expression: Dict @(Vacuous a)

/tmp/CatFail.hs:66:10: error:
    • Couldn't match type ‘Fun p q’ with ‘Vacuous’
        arising from a use of ‘Main.$dmsrc’
    • In the expression: Main.$dmsrc
      In an equation for ‘src’: src = Main.$dmsrc
      In the instance declaration for ‘Category (Nat p q)’
    • Relevant bindings include
        src :: Nat p q a b -> Dict (Ob (Nat p q) a)
          (bound at /tmp/CatFail.hs:66:10)
Failed, modules loaded: none.

Attachments (2)

CatFail.hs (2.5 KB) - added by Iceland_jack 3 years ago.
HaskellBug.hs (1.7 KB) - added by sjcjoosten 3 years ago.
Small example with similar behavior

Download all attachments as: .zip

Change History (6)

Changed 3 years ago by Iceland_jack

Attachment: CatFail.hs added

Changed 3 years ago by sjcjoosten

Attachment: HaskellBug.hs added

Small example with similar behavior

comment:1 Changed 3 years ago by sjcjoosten

I ran into this too, I'm not sure whether it is the same bug, but I managed to reproduce the same GHC internal error in a very small example. Based on what the two examples have in common, I would say this has something to do with the TypeFamilies switch (without it, ghc works as expected).

comment:2 Changed 3 years ago by simonpj

CatFail.hs fails with

T12033a.hs:45:31: error:
    Not in scope: type constructor or class ‘Dict’

so perhaps the test isn't right. Anyway, I think #12055, which does reproduce, is a simpler test case.

On the other hand HaskellBug.hs really is a new and quite different bug. Patch coming for that.

comment:3 Changed 3 years ago by Simon Peyton Jones <simonpj@…>

In 15b9bf4b/ghc:

Improve typechecking of let-bindings

This major commit was initially triggered by #11339, but it spiraled
into a major review of the way in which type signatures for bindings
are handled, especially partial type signatures.  On the way I fixed a
number of other bugs, namely

The main change is that I completely reorganised the way in which type
signatures in bindings are handled. The new story is in TcSigs
Note [Overview of type signatures].  Some specific:

* Changes in the data types for signatures in TcRnTypes:
  TcIdSigInfo and new TcIdSigInst

* New module TcSigs deals with typechecking type signatures
  and pragmas. It contains code mostly moved from TcBinds,
  which is already too big

* HsTypes: I swapped the nesting of HsWildCardBndrs
  and HsImplicitBndsrs, so that the wildcards are on the
  oustide not the insidde in a LHsSigWcType.  This is just
  a matter of convenient, nothing deep.

There are a host of other changes as knock-on effects, and
it all took FAR longer than I anticipated :-).  But it is
a significant improvement, I think.

Lots of error messages changed slightly, some just variants but
some modest improvements.

New tests

* typecheck/should_compile
    * SigTyVars: a scoped-tyvar test
    * ExPat, ExPatFail: existential pattern bindings
    * T12069
    * T11700
    * T11339

* partial-sigs/should_compile
    * T12033
    * T11339a
    * T11670

One thing to check:

* Small change to output from ghc-api/landmines.
  Need to check with Alan Zimmerman

comment:4 Changed 3 years ago by simonpj

Resolution: fixed
Status: newclosed
Test Case: partial-sigs/should_compile/T12033

With the above patch, HaskellBug problem is fixed. I've added it as a regression test.

That leaves #12055, which we'll handle on that ticket, so I'm closing this one.

Note: See TracTickets for help on using tickets.