[GHC] #14880: GHC panic: updateRole

GHC ghc-devs at haskell.org
Wed Aug 1 18:42:47 UTC 2018


#14880: GHC panic: updateRole
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  goldfire
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.8.1
       Component:  Compiler (Type    |              Version:  8.2.2
  checker)                           |
      Resolution:                    |             Keywords:  TypeInType
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #15076            |  Differential Rev(s):  Phab:D4769
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Richard Eisenberg <rae@…>):

 In [changeset:"f8618a9b15177ee8c84771b927cb3583c9cd8408/ghc"
 f8618a9b/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="f8618a9b15177ee8c84771b927cb3583c9cd8408"
 Remove the type-checking knot.

 Bug #15380 hangs because a knot-tied TyCon ended up in a kind.
 Looking at the code in tcInferApps, I'm amazed this hasn't happened
 before! I couldn't think of a good way to fix it (with dependent
 types, we can't really keep types out of kinds, after all), so
 I just went ahead and removed the knot.

 This was remarkably easy to do. In tcTyVar, when we find a TcTyCon,
 just use it. (Previously, we looked up the knot-tied TyCon and used
 that.) Then, during the final zonk, replace TcTyCons with the real,
 full-blooded TyCons in the global environment. It's all very easy.

 The new bit is explained in the existing
 Note [Type checking recursive type and class declarations]
 in TcTyClsDecls.

 Naturally, I removed various references to the knot and the
 zonkTcTypeInKnot (and related) functions. Now, we can print types
 during type checking with abandon!

 NB: There is a teensy error message regression with this patch,
 around the ordering of quantified type variables. This ordering
 problem is fixed (I believe) with the patch for #14880. The ordering
 affects only internal variables that cannot be instantiated with
 any kind of visible type application.

 There is also a teensy regression around the printing of types
 in TH splices. I think this is really a TH bug and will file
 separately.

 Test case: dependent/should_fail/T15380
 }}}

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


More information about the ghc-tickets mailing list