[GHC] #15076: Typed hole causes GHC to panic (No skolem info)

GHC ghc-devs at haskell.org
Sun Apr 22 14:22:46 UTC 2018


#15076: Typed hole causes GHC to panic (No skolem info)
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Compiler (Type    |              Version:  8.2.2
  checker)                           |             Keywords:  TypedHoles,
      Resolution:                    |  TypeInType
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #14040            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by RyanGlScott):

 Echoing simonpj's comments in
 https://ghc.haskell.org/trac/ghc/ticket/14040#comment:7, we can see from
 `-ddump-tc-trace` that:

 {{{
 reportUnsolved (after zonking):
   Free tyvars: (t_a1TL[tau:2] :: Proxy x_a1TC[sk:2]) a_a1Sj[sk:1]
   Tidy env: ([ESf9Q :-> 1, ESfa3 :-> 1, ESfWb :-> 2,
               ESgJA :-> 1],
              [a1Sj :-> a1_a1Sj[sk:1], a1TC :-> x_a1TC[sk:2],
               a1TD :-> a_a1TD[sk:2], a1TL :-> t0_a1TL[tau:2]])
   Wanted: WC {wc_impl =
                 Implic {
                   TcLevel = 2
                   Skolems = (x_a1TC[sk:2] :: a_a1Sj[sk:1])
                             a_a1TD[sk:2]
                             (f_a1TE[sk:2] :: forall (x :: a_a1TD[sk:2]).
 Proxy x -> *)
                   No-eqs = True
                   Status = Unsolved
                   Given =
                   Wanted =
                     WC {wc_simple =
                           [D] _ {0}:: Proxy t_a1TL[tau:2]
                                       -> Proxy
                                            (f_a1TE[sk:2] x_a1TC[sk:2]
 t_a1TL[tau:2]) (CHoleCan: TypeHole(_))}
                   Binds = EvBindsVar<a1TM>
                   Needed inner = []
                   Needed outer = []
                   the type signature for:
                     foo :: forall (x :: a_a1Sj[sk:1]) a (f :: forall (x ::
 a).
                                                               Proxy x ->
 *).
                            S (f x) -> () }}
 ...
 Adding error:ghc-stage2: panic! (the 'impossible' happened)
   (GHC version 8.5.20180420 for x86_64-unknown-linux):
         No skolem info:
   [a1_a1Sj[sk:1]]
   Call stack:
       CallStack (from HasCallStack):
         callStackDoc, called at compiler/utils/Outputable.hs:1162:37 in
 ghc:Outputable
         pprPanic, called at compiler/typecheck/TcErrors.hs:3224:5 in
 ghc:TcErrors
 }}}

 Here, `a1_a1Sj` is not bound by any implication.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15076#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list