[GHC] #14749: T13822 fails

GHC ghc-devs at haskell.org
Thu Feb 1 09:08:16 UTC 2018


#14749: T13822 fails
-------------------------------------+-------------------------------------
           Reporter:  simonpj        |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.2.2
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Consider this cut-down T13822
 {{{
 {-# LANGUAGE GADTs, TypeOperators, DataKinds, TypeFamilies, TypeInType #-}

 module T13822 where

 import Data.Kind

 data KIND = STAR | KIND :> KIND

 data Ty :: KIND -> Type where
   TMaybe :: Ty (STAR :> STAR)
   TApp   :: Ty (a :> b) -> (Ty a -> Ty b)

 type family IK (k :: KIND) = (res :: Type) where
   IK STAR   = Type
   IK (a:>b) = IK a -> IK b

 type family I (t :: Ty k) = (res :: IK k)  where
   I TMaybe     = Maybe
   I (TApp f a) = (I f) (I a)

 data TyRep (k :: KIND) (t :: Ty k) where
   TyMaybe :: TyRep (STAR:>STAR) TMaybe
   TyApp   :: TyRep (a:>b) f -> TyRep a x -> TyRep b (TApp f x)

 zero :: TyRep STAR a -> I a
 zero x = case x of
             TyApp TyMaybe _ -> Nothing
 }}}
 With a stage-1 compiler with DEBUG enabled, this program yields a Lint
 error in all recent versions of GHC. (NB: Lint, not an assertion failure.)

 With stage-2 it succeeds, and passes Lint.  But an apparently unrelated
 patch makes it fail Lint even in stage 2.  I conclude that the bug is not
 in the unrelated patch; it is somehow there all along.

 I'll mark T13822 as expect-broken; you can re-enable it when this ticket
 is fixed.

 The Lint error is pretty obscure
 {{{
 *** Core Lint errors : in result of Desugar (before optimization) ***
 <no location info>: warning:
     [in body of letrec with binders co_a10u :: (f_a10g :: Ty
                                                             (a_a10f ':>
 'STAR))
                                                ~# (('TMaybe |> (Ty
                                                                   (Sym
 co_a10r
                                                                    ':>
 <'STAR>_N)_N)_N) :: Ty
 (a_a10f
 ':> 'STAR))]
     Kind application error in
       coercion ā€˜(Maybe
                    (Sym (Coh <I (x_a10h |> Sym (Ty (Sym co_a10r))_N)>_N
                              (D:R:IK[0]) ; Coh <(I (x_a10h |> Sym (Ty
                                                                      (Sym
 co_a10r))_N) |> D:R:IK[0])>_N
                                                (Sym (D:R:IK[0]))) ; Coh <I
 (x_a10h |> Sym (Ty
 (Sym co_a10r))_N)>_N
 (D:R:IK[0])))_Nā€™
       Function kind = * -> *
       Arg kinds = [(I (x_a10h |> Sym (Ty (Sym co_a10r))_N), IK 'STAR)]
     Fun: *
          (I (x_a10h |> Sym (Ty (Sym co_a10r))_N), IK 'STAR)
 }}}

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


More information about the ghc-tickets mailing list