[GHC] #16221: Core Lint error with a data type

GHC ghc-devs at haskell.org
Tue Mar 5 21:43:18 UTC 2019


#16221: Core Lint error with a data type
-------------------------------------+-------------------------------------
        Reporter:  monoidal          |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler (Type    |              Version:  8.7
  checker)                           |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #16342            |  Differential Rev(s):
       Wiki Page:                    |  https://gitlab.haskell.org/ghc/ghc/merge_requests/444
-------------------------------------+-------------------------------------

Comment (by Marge Bot <ben+marge-bot@…>):

 In [changeset:"80dfcee61e3bfb67f131cd674f96467e16c0f9d8/ghc"
 80dfcee6/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="80dfcee61e3bfb67f131cd674f96467e16c0f9d8"
 Be more careful when naming TyCon binders

 This patch fixes two rather gnarly test cases:
   * Trac #16342 (mutual recursion)
     See Note [Tricky scoping in generaliseTcTyCon]

   * Trac #16221 (shadowing)
     See Note [Unification variables need fresh Names]

 The main changes are:

 * Substantial reworking of TcTyClsDecls.generaliseTcTyCon
   This is the big change, and involves the rather tricky
   function TcHsSyn.zonkRecTyVarBndrs.

   See Note [Inferring kinds for type declarations] and
   Note [Tricky scoping in generaliseTcTyCon] for the details.

 * bindExplicitTKBndrs_Tv and bindImplicitTKBndrs_Tv both now
   allocate /freshly-named/ unification variables. Indeed, more
   generally, unification variables are always fresh; see
   Note [Unification variables need fresh Names] in TcMType

 * Clarify the role of tcTyConScopedTyVars.
   See Note [Scoped tyvars in a TcTyCon] in TyCon

 As usual, this dragged in some more refactoring:

 * Renamed TcMType.zonkTyCoVarBndr to zonkAndSkolemise

 * I renamed checkValidTelescope to checkTyConTelescope;
   it's only used on TyCons, and indeed takes a TyCon as argument.

 * I folded the slightly-mysterious reportFloatingKvs into
   checkTyConTelescope. (Previously all its calls immediately
   followed a call to checkTyConTelescope.)  It makes much more
   sense there.

 * I inlined some called-once functions to simplify
   checkValidTyFamEqn. It's less spaghetti-like now.

 * This patch also fixes Trac #16251.  I'm not quite sure why #16251
   went wrong in the first place, nor how this patch fixes it, but
   hey, it's good, and life is short.
 }}}

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


More information about the ghc-tickets mailing list