Opened 22 months ago

Closed 21 months ago

Last modified 21 months ago

#14580 closed bug (fixed)

GHC panic (TypeInType) (the 'impossible' happened)

Reported by: Iceland_jack Owned by:
Priority: normal Milestone:
Component: Compiler Version: 8.3
Keywords: TypeInType Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case: polykinds/T14580
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:


$ ghci -ignore-dot-ghci
GHCi, version 8.3.20171208:  :? for help
Prelude> import Data.Kind
Prelude Data.Kind> :set -XPolyKinds -XDataKinds -XTypeInType -XTypeOperators 
Prelude Data.Kind> type Cat ob = ob -> ob -> Type
Prelude Data.Kind> data ISO' :: Cat i -> i -> i -> Type
Prelude Data.Kind> type ISO cat a b = ISO' cat a b -> Type
Prelude Data.Kind> type (a <--> b) iso cat = ISO (iso :: cat a b)
ghc-stage2: panic! (the 'impossible' happened)
  (GHC version 8.3.20171208 for x86_64-unknown-linux):
  Call stack:
      CallStack (from HasCallStack):
        callStackDoc, called at compiler/utils/Outputable.hs:1144:37 in ghc:Outputable
        pprPanic, called at compiler/types/Type.hs:951:35 in ghc:Type

Please report this as a GHC bug:

Prelude Data.Kind> 

Change History (3)

comment:1 Changed 21 months ago by Simon Peyton Jones <simonpj@…>

In 6f6d1050/ghc:

Add test for Trac #14580

comment:2 Changed 21 months ago by simonpj

Resolution: fixed
Status: newclosed
Test Case: polykinds/T14580

HEAD gives

Prelude Data.Kind> type (a <--> b) iso cat = ISO (iso :: cat a b)

<interactive>:7:31: error:
    • Expected kind ‘Cat a’, but ‘(iso :: cat a b)’ has kind ‘cat a b’
    • In the first argument of ‘ISO’, namely ‘(iso :: cat a b)’
      In the type ‘ISO (iso :: cat a b)’
      In the type declaration for ‘<-->’

probably as a result of the patches I pushed yesterday. Hurrah.

I've added a regression test, to be on the safe side.

comment:3 Changed 21 months ago by Iceland_jack

Excellent, thanks!

Note: See TracTickets for help on using tickets.