[GHC] #15695: Core Lint error, from -fobject-code + defer type errors + pattern synonyms + other stuff

GHC ghc-devs at haskell.org
Sun Sep 30 19:11:58 UTC 2018


#15695: Core Lint error, from -fobject-code + defer type errors + pattern synonyms
+ other stuff
-------------------------------------+-------------------------------------
        Reporter:  Iceland_jack      |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Compiler          |              Version:  8.6.1
      Resolution:                    |             Keywords:
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:                    |
-------------------------------------+-------------------------------------
Description changed by Iceland_jack:

Old description:

> Try running this (`-fobject-code` is required) with '''and''' without
> `-dcore-lint`. I tried to minimize it but it is still hefty. This is
> showing it without `-dcore-lint`:
>
> {{{#!hs
> {-# Language RankNTypes, PatternSynonyms, DataKinds, PolyKinds, GADTs,
> TypeOperators, MultiParamTypeClasses, TypeFamilies, TypeSynonymInstances,
> FlexibleInstances, InstanceSigs, FlexibleContexts #-}
>
> {-# Options_GHC -fdefer-type-errors #-}
>
> import Data.Kind
> import Data.Type.Equality
>
> data TyVar :: Type -> Type -> Type where
>  VO :: TyVar (a -> as) a
>  VS :: TyVar as a -> TyVar (b -> as) a
>
> data NP :: (k -> Type) -> ([k] -> Type) where
>  Nil :: NP f '[]
>  (:*) :: f a -> NP f as -> NP f (a:as)
>
> data NS :: (k -> Type) -> ([k] -> Type) where
>  Here  :: f a     -> NS f (a:as)
>  There :: NS f as -> NS f (a:as)
>
> infixr 6 :&:
> data Ctx :: Type -> Type where
>  E     :: Ctx(Type)
>  (:&:) :: a -> Ctx(as) -> Ctx(a -> as)
>
> data NA a
>
> type SOP(kind::Type) code = NS (NP NA) code
>
> data ApplyT(kind::Type) :: kind ->  Ctx(kind) -> Type where
>  AO :: a -> ApplyT(Type) a E
>  AS :: ApplyT(ks)      (f a) ctx
>     -> ApplyT(k -> ks) f     (a:&:ctx)
>
> from' :: ApplyT(Type -> Type -> Type) Either ctx -> NS (NP NA) '[ '[VO] ]
> from' (ASSO (Left  a)) = Here  (a :* Nil)
> from' (ASSO (Right b)) = There (Here undefined)
>
> pattern ASSO
>   :: () =>
>      forall (ks :: Type) k (f :: k -> ks) (a1 :: k) (ks1 :: Type) k1 (f1
> :: k1 -> ks1) (a2 :: k1) a3.
>      (kind ~ (k -> k1 -> Type), a ~~ f, b ~~ (a1 :&: a2 :&: E),
>       f a1 ~~ f1, f1 a2 ~~ a3) =>
>      a3 -> ApplyT kind a b
> pattern ASSO a = AS (AS (AO a))
> }}}
>
> {{{
> $ latestbug -fobject-code 466.hs
> GHCi, version 8.7.20180828: http://www.haskell.org/ghc/  :? for help
> [1 of 1] Compiling Main             ( 466.hs, 466.o )
> 466.hs:35:14: warning: [-Wdeferred-type-errors]
>     • Could not deduce: a2 ~ NA 'VO
>       from the context: ((* -> * -> *) ~ (k1 -> k2 -> *), Either ~~ f,
>                          ctx ~~ (a2 ':&: (a3 ':&: 'E)), f a2 ~~ f1, f1 a3
> ~~ a4)
>         bound by a pattern with pattern synonym:
>                    ASSO :: forall kind (a :: kind) (b :: Ctx kind).
>                            () =>
>                            forall ks k (f :: k -> ks) (a1 :: k) ks1 k1
> (f1 :: k1
> -> ks1) (a2 :: k1) a3.
>                            (kind ~ (k -> k1 -> *), a ~~ f, b ~~ (a1 ':&:
> (a2 ':&: 'E)),
>                             f a1 ~~ f1, f1 a2 ~~ a3) =>
>                            a3 -> ApplyT kind a b,
>                  in an equation for ‘from'’
>         at 466.hs:35:8-21
>       ‘a2’ is a rigid type variable bound by
>         a pattern with pattern synonym:
>           ASSO :: forall kind (a :: kind) (b :: Ctx kind).
>                   () =>
>                   forall ks k (f :: k -> ks) (a1 :: k) ks1 k1 (f1 :: k1
>                                                                      ->
> ks1) (a2 :: k1) a3.
>                   (kind ~ (k -> k1 -> *), a ~~ f, b ~~ (a1 ':&: (a2 ':&:
> 'E)),
>                    f a1 ~~ f1, f1 a2 ~~ a3) =>
>                   a3 -> ApplyT kind a b,
>         in an equation for ‘from'’
>         at 466.hs:35:8-21
>       Expected type: a4
>         Actual type: Either (NA 'VO) a3
>     • In the pattern: Left a
>       In the pattern: ASSO (Left a)
>       In an equation for ‘from'’: from' (ASSO (Left a)) = Here (a :* Nil)
>     • Relevant bindings include
>         from' :: ApplyT (* -> * -> *) Either ctx -> NS (NP NA) '[ '[
> 'VO]]
>           (bound at 466.hs:35:1)
>    |
> 35 | from' (ASSO (Left  a)) = Here  (a :* Nil)
>    |              ^^^^^^^
>
> 466.hs:36:26: warning: [-Wdeferred-type-errors]
>     • Couldn't match type ‘a0 : as0’ with ‘'[]’
>       Expected type: NS (NP NA) '[ '[ 'VO]]
>         Actual type: NS (NP NA) ('[ 'VO] : a0 : as0)
>     • In the expression: There (Here undefined)
>       In an equation for ‘from'’:
>           from' (ASSO (Right b)) = There (Here undefined)
>     • Relevant bindings include
>         from' :: ApplyT (* -> * -> *) Either ctx -> NS (NP NA) '[ '[
> 'VO]]
>           (bound at 466.hs:35:1)
>    |
> 36 | from' (ASSO (Right b)) = There (Here undefined)
>    |                          ^^^^^^^^^^^^^^^^^^^^^^
> WARNING: file compiler/types/TyCoRep.hs, line 2378
>   in_scope InScope {wild_00 wild_Xl wild_Xv wild_X1m a_a1Gv ks_a1Ou
>                     k_a1Ov f_a1Ow a_a1Ox ctx_a1Oy co_a1Oz co_a1OA co_a1OB
> ks_a1OC
>                     k_a1OD f_a1OE a_a1OF ctx_a1OG co_a1OH co_a1OI co_a1OJ
> a_a1OK
>                     co_a1OL co_a1OM co_a1ON as_a1Q3 a_a1Q4 ctx_a1Q5
> $krep_a2XW
>                     $krep_a2XX $krep_a2XY $krep_a2XZ $krep_a2Y0
> $krep_a2Y1 $krep_a2Y2
>                     $krep_a2Y3 $krep_a2Y4 $krep_a2Y5 $krep_a2Y6
> $krep_a2Y7 $krep_a2Y8
>                     $krep_a2Y9 $krep_a2Ya $krep_a2Yb $krep_a2Yc
> $krep_a2Yd $krep_a2Ye
>                     $krep_a2Yf $krep_a2Yg $krep_a2Yh $krep_a2Yi
> $krep_a2Yj $krep_a2Yk
>                     $krep_a2Yl $krep_a2Ym $krep_a2Yn $krep_a2Yo
> $krep_a2Yp $krep_a2Yq
>                     $krep_a2Yr $krep_a2Ys $krep_a2Yt $krep_a2Yu
> $krep_a2Yv $krep_a2Yw
>                     $krep_a2Yx $krep_a2Yy $krep_a2Yz $krep_a2YA
> $krep_a2YB $krep_a2YC
>                     $krep_a2YD $krep_a2YE $krep_a2YF $krep_a2YG
> $krep_a2YH $krep_a2YI
>                     $krep_a2YJ $krep_a2YK $krep_a2YL ds_d2YO ds_d2YP
> ds_d2YV fail_d2Z2
>                     from' $bASSO $mASSO $tc':&: $tc':* $tc'AO $tc'AS
> $tc'E $tc'Here
>                     $tc'Nil $tc'There $tc'VO $tc'VS $tcApplyT $tcCtx
> $tcNA $tcNP $tcNS
>                     $tcTyVar $trModule $trModule_s2ZM $trModule_s2ZN
> $trModule_s2ZO
>                     $trModule_s2ZP $krep_s2ZQ $krep_s2ZR $krep_s2ZS
> $krep_s2ZT
>                     $krep_s2ZU $krep_s2ZV $krep_s2ZW $krep_s2ZX
> $tcTyVar_s2ZY
>                     $tcTyVar_s2ZZ $krep_s300 $krep_s301 $krep_s302
> $krep_s303
>                     $tc'VO_s304 $tc'VO_s305 $krep_s306 $krep_s307
> $tc'VS_s308
>                     $tc'VS_s309 $tcNP_s30a $tcNP_s30b $krep_s30c
> $krep_s30d $krep_s30e
>                     $krep_s30f $krep_s30g $krep_s30h $tc':*_s30i
> $tc':*_s30j $krep_s30k
>                     $krep_s30l $krep_s30m $tc'Nil_s30n $tc'Nil_s30o
> $tcNS_s30p
>                     $tcNS_s30q $krep_s30r $krep_s30s $krep_s30t
> $krep_s30u $krep_s30v
>                     $krep_s30w $tc'Here_s30x $tc'Here_s30y $krep_s30z
> $krep_s30A
>                     $krep_s30B $tc'There_s30C $tc'There_s30D $tcCtx_s30E
> $tcCtx_s30F
>                     $krep_s30G $krep_s30H $krep_s30I $tc':&:_s30J
> $tc':&:_s30K
>                     $krep_s30L $krep_s30M $krep_s30N $krep_s30O
> $krep_s30P $tc'E_s30Q
>                     $tc'E_s30R $tcNA_s30S $tcNA_s30T $tcApplyT_s30U
> $tcApplyT_s30V
>                     $krep_s30W $krep_s30X $krep_s30Y $krep_s30Z
> $krep_s310 $krep_s311
>                     $tc'AS_s312 $tc'AS_s313 $krep_s314 $krep_s315
> $krep_s316
>                     $tc'AO_s317 $tc'AO_s318}
>   tenv [a1Ow :-> f_a1Ow, a1Ox :-> a_a1Ox, a1Oy :-> ctx_a1Oy,
>         a1OE :-> f_a1OE, a1OF :-> a_a1OF, a1OG :-> ctx_a1OG]
>   cenv [a1Oz :-> co_a1Oz, a1OA :-> co_a1OA, a1OB :-> co_a1OB,
>         a1OH :-> co_a1OH, a1OI :-> co_a1OI, a1OJ :-> co_a1OJ,
>         a1OL :-> co_a1OL, a1OM :-> co_a1OM, a1ON :-> co_a1ON]
>   tys [a_a1Ox ~# (NA 'VO |> Sym (Nth:2 (Sym co_a2U0)))]
>   cos []
>   needInScope [a1Ov :-> k_a1Ov, a1OD :-> k_a1OD, a1Q3 :-> as_a1Q3,
>                a1Q4 :-> a_a1Q4, a2U0 :-> co_a2U0]
> WARNING: file compiler/types/TyCoRep.hs, line 2378
>   in_scope InScope {wild_00 wild_Xl wild_Xv wild_X1m a_a1Gv ks_a1Ou
>                     k_a1Ov f_a1Ow a_a1Ox ctx_a1Oy co_a1Oz co_a1OA co_a1OB
> ks_a1OC
>                     k_a1OD f_a1OE a_a1OF ctx_a1OG co_a1OH co_a1OI co_a1OJ
> a_a1OK
>                     co_a1OL co_a1OM co_a1ON as_a1Q3 a_a1Q4 ctx_a1Q5
> $krep_a2XW
>                     $krep_a2XX $krep_a2XY $krep_a2XZ $krep_a2Y0
> $krep_a2Y1 $krep_a2Y2
>                     $krep_a2Y3 $krep_a2Y4 $krep_a2Y5 $krep_a2Y6
> $krep_a2Y7 $krep_a2Y8
>                     $krep_a2Y9 $krep_a2Ya $krep_a2Yb $krep_a2Yc
> $krep_a2Yd $krep_a2Ye
>                     $krep_a2Yf $krep_a2Yg $krep_a2Yh $krep_a2Yi
> $krep_a2Yj $krep_a2Yk
>                     $krep_a2Yl $krep_a2Ym $krep_a2Yn $krep_a2Yo
> $krep_a2Yp $krep_a2Yq
>                     $krep_a2Yr $krep_a2Ys $krep_a2Yt $krep_a2Yu
> $krep_a2Yv $krep_a2Yw
>                     $krep_a2Yx $krep_a2Yy $krep_a2Yz $krep_a2YA
> $krep_a2YB $krep_a2YC
>                     $krep_a2YD $krep_a2YE $krep_a2YF $krep_a2YG
> $krep_a2YH $krep_a2YI
>                     $krep_a2YJ $krep_a2YK $krep_a2YL ds_d2YO ds_d2YP
> ds_d2YV fail_d2Z2
>                     from' $bASSO $mASSO $tc':&: $tc':* $tc'AO $tc'AS
> $tc'E $tc'Here
>                     $tc'Nil $tc'There $tc'VO $tc'VS $tcApplyT $tcCtx
> $tcNA $tcNP $tcNS
>                     $tcTyVar $trModule $trModule_s2ZM $trModule_s2ZN
> $trModule_s2ZO
>                     $trModule_s2ZP $krep_s2ZQ $krep_s2ZR $krep_s2ZS
> $krep_s2ZT
>                     $krep_s2ZU $krep_s2ZV $krep_s2ZW $krep_s2ZX
> $tcTyVar_s2ZY
>                     $tcTyVar_s2ZZ $krep_s300 $krep_s301 $krep_s302
> $krep_s303
>                     $tc'VO_s304 $tc'VO_s305 $krep_s306 $krep_s307
> $tc'VS_s308
>                     $tc'VS_s309 $tcNP_s30a $tcNP_s30b $krep_s30c
> $krep_s30d $krep_s30e
>                     $krep_s30f $krep_s30g $krep_s30h $tc':*_s30i
> $tc':*_s30j $krep_s30k
>                     $krep_s30l $krep_s30m $tc'Nil_s30n $tc'Nil_s30o
> $tcNS_s30p
>                     $tcNS_s30q $krep_s30r $krep_s30s $krep_s30t
> $krep_s30u $krep_s30v
>                     $krep_s30w $tc'Here_s30x $tc'Here_s30y $krep_s30z
> $krep_s30A
>                     $krep_s30B $tc'There_s30C $tc'There_s30D $tcCtx_s30E
> $tcCtx_s30F
>                     $krep_s30G $krep_s30H $krep_s30I $tc':&:_s30J
> $tc':&:_s30K
>                     $krep_s30L $krep_s30M $krep_s30N $krep_s30O
> $krep_s30P $tc'E_s30Q
>                     $tc'E_s30R $tcNA_s30S $tcNA_s30T $tcApplyT_s30U
> $tcApplyT_s30V
>                     $krep_s30W $krep_s30X $krep_s30Y $krep_s30Z
> $krep_s310 $krep_s311
>                     $tc'AS_s312 $tc'AS_s313 $krep_s314 $krep_s315
> $krep_s316
>                     $tc'AO_s317 $tc'AO_s318}
>   tenv [a1Ow :-> f_a1Ow, a1Ox :-> a_a1Ox, a1Oy :-> ctx_a1Oy,
>         a1OE :-> f_a1OE, a1OF :-> a_a1OF, a1OG :-> ctx_a1OG]
>   cenv [a1Oz :-> co_a1Oz, a1OA :-> co_a1OA, a1OB :-> co_a1OB,
>         a1OH :-> co_a1OH, a1OI :-> co_a1OI, a1OJ :-> co_a1OJ,
>         a1OL :-> co_a1OL, a1OM :-> co_a1OM, a1ON :-> co_a1ON]
>   tys [a_a1Ox ~# (NA 'VO |> Sym (Nth:2 (Sym co_a2U0)))]
>   cos []
>   needInScope [a1Ov :-> k_a1Ov, a1OD :-> k_a1OD, a1Q3 :-> as_a1Q3,
>                a1Q4 :-> a_a1Q4, a2U0 :-> co_a2U0]
> Ok, one module loaded.
> Prelude Main>
> }}}

New description:

 Try running this (`-fobject-code` is required) with '''and''' without
 `-dcore-lint`. I tried to minimize it but it is still hefty. This is
 showing it without `-dcore-lint`:

 {{{#!hs
 {-# Language RankNTypes, PatternSynonyms, DataKinds, PolyKinds, GADTs,
 TypeOperators, MultiParamTypeClasses, TypeFamilies, TypeSynonymInstances,
 FlexibleInstances, InstanceSigs, FlexibleContexts #-}

 {-# Options_GHC -fdefer-type-errors #-}

 import Data.Kind
 import Data.Type.Equality

 data TyVar :: Type -> Type -> Type where
  VO :: TyVar (a -> as) a
  VS :: TyVar as a -> TyVar (b -> as) a

 data NP :: (k -> Type) -> ([k] -> Type) where
  Nil :: NP f '[]
  (:*) :: f a -> NP f as -> NP f (a:as)

 data NS :: (k -> Type) -> ([k] -> Type) where
  Here  :: f a     -> NS f (a:as)
  There :: NS f as -> NS f (a:as)

 infixr 6 :&:
 data Ctx :: Type -> Type where
  E     :: Ctx(Type)
  (:&:) :: a -> Ctx(as) -> Ctx(a -> as)

 data NA a

 type SOP(kind::Type) code = NS (NP NA) code

 data ApplyT(kind::Type) :: kind ->  Ctx(kind) -> Type where
  AO :: a -> ApplyT(Type) a E
  AS :: ApplyT(ks)      (f a) ctx
     -> ApplyT(k -> ks) f     (a:&:ctx)

 from' :: ApplyT(Type -> Type -> Type) Either ctx -> NS (NP NA) '[ '[VO] ]
 from' (ASSO (Left  a)) = Here  (a :* Nil)
 from' (ASSO (Right b)) = There (Here undefined)

 pattern ASSO
   :: () =>
      forall (ks :: Type) k (f :: k -> ks) (a1 :: k) (ks1 :: Type) k1 (f1
 :: k1 -> ks1) (a2 :: k1) a3.
      (kind ~ (k -> k1 -> Type), a ~~ f, b ~~ (a1 :&: a2 :&: E),
       f a1 ~~ f1, f1 a2 ~~ a3) =>
      a3 -> ApplyT kind a b
 pattern ASSO a = AS (AS (AO a))
 }}}

 {{{
 $ ghci -ignore-dot-ghci -fobject-code 466.hs
 GHCi, version 8.7.20180828: http://www.haskell.org/ghc/  :? for help
 [1 of 1] Compiling Main             ( 466.hs, 466.o )
 466.hs:35:14: warning: [-Wdeferred-type-errors]
     • Could not deduce: a2 ~ NA 'VO
       from the context: ((* -> * -> *) ~ (k1 -> k2 -> *), Either ~~ f,
                          ctx ~~ (a2 ':&: (a3 ':&: 'E)), f a2 ~~ f1, f1 a3
 ~~ a4)
         bound by a pattern with pattern synonym:
                    ASSO :: forall kind (a :: kind) (b :: Ctx kind).
                            () =>
                            forall ks k (f :: k -> ks) (a1 :: k) ks1 k1 (f1
 :: k1
 -> ks1) (a2 :: k1) a3.
                            (kind ~ (k -> k1 -> *), a ~~ f, b ~~ (a1 ':&:
 (a2 ':&: 'E)),
                             f a1 ~~ f1, f1 a2 ~~ a3) =>
                            a3 -> ApplyT kind a b,
                  in an equation for ‘from'’
         at 466.hs:35:8-21
       ‘a2’ is a rigid type variable bound by
         a pattern with pattern synonym:
           ASSO :: forall kind (a :: kind) (b :: Ctx kind).
                   () =>
                   forall ks k (f :: k -> ks) (a1 :: k) ks1 k1 (f1 :: k1
                                                                      ->
 ks1) (a2 :: k1) a3.
                   (kind ~ (k -> k1 -> *), a ~~ f, b ~~ (a1 ':&: (a2 ':&:
 'E)),
                    f a1 ~~ f1, f1 a2 ~~ a3) =>
                   a3 -> ApplyT kind a b,
         in an equation for ‘from'’
         at 466.hs:35:8-21
       Expected type: a4
         Actual type: Either (NA 'VO) a3
     • In the pattern: Left a
       In the pattern: ASSO (Left a)
       In an equation for ‘from'’: from' (ASSO (Left a)) = Here (a :* Nil)
     • Relevant bindings include
         from' :: ApplyT (* -> * -> *) Either ctx -> NS (NP NA) '[ '[ 'VO]]
           (bound at 466.hs:35:1)
    |
 35 | from' (ASSO (Left  a)) = Here  (a :* Nil)
    |              ^^^^^^^

 466.hs:36:26: warning: [-Wdeferred-type-errors]
     • Couldn't match type ‘a0 : as0’ with ‘'[]’
       Expected type: NS (NP NA) '[ '[ 'VO]]
         Actual type: NS (NP NA) ('[ 'VO] : a0 : as0)
     • In the expression: There (Here undefined)
       In an equation for ‘from'’:
           from' (ASSO (Right b)) = There (Here undefined)
     • Relevant bindings include
         from' :: ApplyT (* -> * -> *) Either ctx -> NS (NP NA) '[ '[ 'VO]]
           (bound at 466.hs:35:1)
    |
 36 | from' (ASSO (Right b)) = There (Here undefined)
    |                          ^^^^^^^^^^^^^^^^^^^^^^
 WARNING: file compiler/types/TyCoRep.hs, line 2378
   in_scope InScope {wild_00 wild_Xl wild_Xv wild_X1m a_a1Gv ks_a1Ou
                     k_a1Ov f_a1Ow a_a1Ox ctx_a1Oy co_a1Oz co_a1OA co_a1OB
 ks_a1OC
                     k_a1OD f_a1OE a_a1OF ctx_a1OG co_a1OH co_a1OI co_a1OJ
 a_a1OK
                     co_a1OL co_a1OM co_a1ON as_a1Q3 a_a1Q4 ctx_a1Q5
 $krep_a2XW
                     $krep_a2XX $krep_a2XY $krep_a2XZ $krep_a2Y0 $krep_a2Y1
 $krep_a2Y2
                     $krep_a2Y3 $krep_a2Y4 $krep_a2Y5 $krep_a2Y6 $krep_a2Y7
 $krep_a2Y8
                     $krep_a2Y9 $krep_a2Ya $krep_a2Yb $krep_a2Yc $krep_a2Yd
 $krep_a2Ye
                     $krep_a2Yf $krep_a2Yg $krep_a2Yh $krep_a2Yi $krep_a2Yj
 $krep_a2Yk
                     $krep_a2Yl $krep_a2Ym $krep_a2Yn $krep_a2Yo $krep_a2Yp
 $krep_a2Yq
                     $krep_a2Yr $krep_a2Ys $krep_a2Yt $krep_a2Yu $krep_a2Yv
 $krep_a2Yw
                     $krep_a2Yx $krep_a2Yy $krep_a2Yz $krep_a2YA $krep_a2YB
 $krep_a2YC
                     $krep_a2YD $krep_a2YE $krep_a2YF $krep_a2YG $krep_a2YH
 $krep_a2YI
                     $krep_a2YJ $krep_a2YK $krep_a2YL ds_d2YO ds_d2YP
 ds_d2YV fail_d2Z2
                     from' $bASSO $mASSO $tc':&: $tc':* $tc'AO $tc'AS $tc'E
 $tc'Here
                     $tc'Nil $tc'There $tc'VO $tc'VS $tcApplyT $tcCtx $tcNA
 $tcNP $tcNS
                     $tcTyVar $trModule $trModule_s2ZM $trModule_s2ZN
 $trModule_s2ZO
                     $trModule_s2ZP $krep_s2ZQ $krep_s2ZR $krep_s2ZS
 $krep_s2ZT
                     $krep_s2ZU $krep_s2ZV $krep_s2ZW $krep_s2ZX
 $tcTyVar_s2ZY
                     $tcTyVar_s2ZZ $krep_s300 $krep_s301 $krep_s302
 $krep_s303
                     $tc'VO_s304 $tc'VO_s305 $krep_s306 $krep_s307
 $tc'VS_s308
                     $tc'VS_s309 $tcNP_s30a $tcNP_s30b $krep_s30c
 $krep_s30d $krep_s30e
                     $krep_s30f $krep_s30g $krep_s30h $tc':*_s30i
 $tc':*_s30j $krep_s30k
                     $krep_s30l $krep_s30m $tc'Nil_s30n $tc'Nil_s30o
 $tcNS_s30p
                     $tcNS_s30q $krep_s30r $krep_s30s $krep_s30t $krep_s30u
 $krep_s30v
                     $krep_s30w $tc'Here_s30x $tc'Here_s30y $krep_s30z
 $krep_s30A
                     $krep_s30B $tc'There_s30C $tc'There_s30D $tcCtx_s30E
 $tcCtx_s30F
                     $krep_s30G $krep_s30H $krep_s30I $tc':&:_s30J
 $tc':&:_s30K
                     $krep_s30L $krep_s30M $krep_s30N $krep_s30O $krep_s30P
 $tc'E_s30Q
                     $tc'E_s30R $tcNA_s30S $tcNA_s30T $tcApplyT_s30U
 $tcApplyT_s30V
                     $krep_s30W $krep_s30X $krep_s30Y $krep_s30Z $krep_s310
 $krep_s311
                     $tc'AS_s312 $tc'AS_s313 $krep_s314 $krep_s315
 $krep_s316
                     $tc'AO_s317 $tc'AO_s318}
   tenv [a1Ow :-> f_a1Ow, a1Ox :-> a_a1Ox, a1Oy :-> ctx_a1Oy,
         a1OE :-> f_a1OE, a1OF :-> a_a1OF, a1OG :-> ctx_a1OG]
   cenv [a1Oz :-> co_a1Oz, a1OA :-> co_a1OA, a1OB :-> co_a1OB,
         a1OH :-> co_a1OH, a1OI :-> co_a1OI, a1OJ :-> co_a1OJ,
         a1OL :-> co_a1OL, a1OM :-> co_a1OM, a1ON :-> co_a1ON]
   tys [a_a1Ox ~# (NA 'VO |> Sym (Nth:2 (Sym co_a2U0)))]
   cos []
   needInScope [a1Ov :-> k_a1Ov, a1OD :-> k_a1OD, a1Q3 :-> as_a1Q3,
                a1Q4 :-> a_a1Q4, a2U0 :-> co_a2U0]
 WARNING: file compiler/types/TyCoRep.hs, line 2378
   in_scope InScope {wild_00 wild_Xl wild_Xv wild_X1m a_a1Gv ks_a1Ou
                     k_a1Ov f_a1Ow a_a1Ox ctx_a1Oy co_a1Oz co_a1OA co_a1OB
 ks_a1OC
                     k_a1OD f_a1OE a_a1OF ctx_a1OG co_a1OH co_a1OI co_a1OJ
 a_a1OK
                     co_a1OL co_a1OM co_a1ON as_a1Q3 a_a1Q4 ctx_a1Q5
 $krep_a2XW
                     $krep_a2XX $krep_a2XY $krep_a2XZ $krep_a2Y0 $krep_a2Y1
 $krep_a2Y2
                     $krep_a2Y3 $krep_a2Y4 $krep_a2Y5 $krep_a2Y6 $krep_a2Y7
 $krep_a2Y8
                     $krep_a2Y9 $krep_a2Ya $krep_a2Yb $krep_a2Yc $krep_a2Yd
 $krep_a2Ye
                     $krep_a2Yf $krep_a2Yg $krep_a2Yh $krep_a2Yi $krep_a2Yj
 $krep_a2Yk
                     $krep_a2Yl $krep_a2Ym $krep_a2Yn $krep_a2Yo $krep_a2Yp
 $krep_a2Yq
                     $krep_a2Yr $krep_a2Ys $krep_a2Yt $krep_a2Yu $krep_a2Yv
 $krep_a2Yw
                     $krep_a2Yx $krep_a2Yy $krep_a2Yz $krep_a2YA $krep_a2YB
 $krep_a2YC
                     $krep_a2YD $krep_a2YE $krep_a2YF $krep_a2YG $krep_a2YH
 $krep_a2YI
                     $krep_a2YJ $krep_a2YK $krep_a2YL ds_d2YO ds_d2YP
 ds_d2YV fail_d2Z2
                     from' $bASSO $mASSO $tc':&: $tc':* $tc'AO $tc'AS $tc'E
 $tc'Here
                     $tc'Nil $tc'There $tc'VO $tc'VS $tcApplyT $tcCtx $tcNA
 $tcNP $tcNS
                     $tcTyVar $trModule $trModule_s2ZM $trModule_s2ZN
 $trModule_s2ZO
                     $trModule_s2ZP $krep_s2ZQ $krep_s2ZR $krep_s2ZS
 $krep_s2ZT
                     $krep_s2ZU $krep_s2ZV $krep_s2ZW $krep_s2ZX
 $tcTyVar_s2ZY
                     $tcTyVar_s2ZZ $krep_s300 $krep_s301 $krep_s302
 $krep_s303
                     $tc'VO_s304 $tc'VO_s305 $krep_s306 $krep_s307
 $tc'VS_s308
                     $tc'VS_s309 $tcNP_s30a $tcNP_s30b $krep_s30c
 $krep_s30d $krep_s30e
                     $krep_s30f $krep_s30g $krep_s30h $tc':*_s30i
 $tc':*_s30j $krep_s30k
                     $krep_s30l $krep_s30m $tc'Nil_s30n $tc'Nil_s30o
 $tcNS_s30p
                     $tcNS_s30q $krep_s30r $krep_s30s $krep_s30t $krep_s30u
 $krep_s30v
                     $krep_s30w $tc'Here_s30x $tc'Here_s30y $krep_s30z
 $krep_s30A
                     $krep_s30B $tc'There_s30C $tc'There_s30D $tcCtx_s30E
 $tcCtx_s30F
                     $krep_s30G $krep_s30H $krep_s30I $tc':&:_s30J
 $tc':&:_s30K
                     $krep_s30L $krep_s30M $krep_s30N $krep_s30O $krep_s30P
 $tc'E_s30Q
                     $tc'E_s30R $tcNA_s30S $tcNA_s30T $tcApplyT_s30U
 $tcApplyT_s30V
                     $krep_s30W $krep_s30X $krep_s30Y $krep_s30Z $krep_s310
 $krep_s311
                     $tc'AS_s312 $tc'AS_s313 $krep_s314 $krep_s315
 $krep_s316
                     $tc'AO_s317 $tc'AO_s318}
   tenv [a1Ow :-> f_a1Ow, a1Ox :-> a_a1Ox, a1Oy :-> ctx_a1Oy,
         a1OE :-> f_a1OE, a1OF :-> a_a1OF, a1OG :-> ctx_a1OG]
   cenv [a1Oz :-> co_a1Oz, a1OA :-> co_a1OA, a1OB :-> co_a1OB,
         a1OH :-> co_a1OH, a1OI :-> co_a1OI, a1OJ :-> co_a1OJ,
         a1OL :-> co_a1OL, a1OM :-> co_a1OM, a1ON :-> co_a1ON]
   tys [a_a1Ox ~# (NA 'VO |> Sym (Nth:2 (Sym co_a2U0)))]
   cos []
   needInScope [a1Ov :-> k_a1Ov, a1OD :-> k_a1OD, a1Q3 :-> as_a1Q3,
                a1Q4 :-> a_a1Q4, a2U0 :-> co_a2U0]
 Ok, one module loaded.
 Prelude Main>
 }}}

--

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


More information about the ghc-tickets mailing list