[GHC] #14873: GHC HEAD regression (piResultTy)
GHC
ghc-devs at haskell.org
Fri Apr 13 02:23:12 UTC 2018
#14873: GHC HEAD regression (piResultTy)
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: goldfire
Type: bug | Status: new
Priority: highest | Milestone:
Component: Compiler (Type | Version: 8.5
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: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by goldfire):
I think we need these invariants:
1. If `ty <- tc_hs_type ... exp_kind`, then `typeKind ty == exp_kind`.
2. If `(ty, ki) <- tc_infer_hs_type ...`, then `typeKind ty == ki`.
3. If `(ty, ki) <- tc_infer_hs_type ...`, then `zonk ki == ki`.
4. If `(ty, ki) <- tcTyVar ...`, then `typeKind ty == ki`.
5. If `(ty, ki) <- tcTyVar ...`, then `zonk ki == ki`.
All of these appear to be true now, except I'm worried about the `tcTyVar`
case for `TcTyCon`s -- I ''think'' `TcTyCon` kinds can have unzonked
metavariables, if the `TcTyCon` comes from the non-CUSK case in
`kcLHsQTyVars`. Do you also think this is possible? If so, we need to zonk
the kind and wrap the (knot-tied) type in a reflexive coercion (with
`mkNakedCastTy`) to fix its kind. Do you agree?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14873#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list