Opened 2 years ago

Closed 2 years ago

#5605 closed bug (invalid)

T5267 (uses Arrows) core lint failure

Reported by: igloo Owned by: ross
Priority: high Milestone: 7.4.1
Component: Compiler Version: 7.3
Keywords: Cc: dwincort@…
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description

=====> T5267(normal) 16 of 16 [0, 0, 0]
cd . && '/home/ian/ghc/git/ghc/inplace/bin/ghc-stage2' -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts -fno-ghci-history  -c T5267.hs    >T5267.comp.stderr 2>&1
Compile failed (status 256) errors were:
*** Core Lint errors : in result of Desugar ***
<no location info>:
    In the expression: T5267.ite_perm
                         @ t_aj2
                         @ GHC.Types.Bool
                         @ t_aj0
                         $dArrowChoice_aj3
                         tA_acz
                         eA_acA
                         (GHC.Desugar.>>>
                            @ t_aj2
                            $dArrow_aiS
                            @ GHC.Types.Bool
                            @ GHC.Types.Bool
                            @ GHC.Types.Bool
                            (Control.Arrow.arr
                               @ t_aj2
                               $dArrow_aiS
                               @ GHC.Types.Bool
                               @ GHC.Types.Bool
                               (\ (ds_dkZ :: GHC.Types.Bool) -> ds_dkZ))
                            (Control.Arrow.returnA @ t_aj2 @ GHC.Types.Bool $dArrow_aiS))
    Argument value doesn't match argument type:
    Fun type:
        T5267.A t_aj2 GHC.Types.Bool t_aj0
        -> T5267.A t_aj2 GHC.Types.Bool t_aj0
        -> t_aj2 GHC.Types.Bool GHC.Types.Bool
        -> T5267.A t_aj2 GHC.Types.Bool t_aj0
    Arg type: T5267.A t_aj2 a_aiZ t_aj0
    Arg: tA_acz
*** Offending Program ***
T5267.unA
  :: forall ((~>_ack) :: * -> * -> *) b_acl c_acm.
     T5267.A (~>_ack) b_acl c_acm -> (~>_ack) b_acl c_acm
[LclIdX[[RecSel]]]
T5267.unA =
  \ (@ ~>_adV::* -> * -> *)
    (@ b_adW)
    (@ c_adX)
    (ds_dlq :: T5267.A (~>_adV) b_adW c_adX) ->
    ds_dlq
    `cast` (T5267.NTCo:A <(~>_adV)> <b_adW> <c_adX>
            :: T5267.A (~>_adV) b_adW c_adX ~ (~>_adV) b_adW c_adX)

T5267.ite
  :: forall ((~>_acn) :: * -> * -> *) env_aco d_acp.
     Control.Arrow.ArrowChoice (~>_acn) =>
     (~>_acn) env_aco GHC.Types.Bool
     -> T5267.A (~>_acn) env_aco d_acp
     -> T5267.A (~>_acn) env_aco d_acp
     -> T5267.A (~>_acn) env_aco d_acp
[LclIdX]
T5267.ite =
  \ (@ ~>_ae4::* -> * -> *)
    (@ env_ae5)
    (@ d_ae6)
    ($dArrowChoice_ae7 :: Control.Arrow.ArrowChoice (~>_ae4)) ->
    let {
      $dArrow_ak6 :: Control.Arrow.Arrow (~>_ae4)
      [LclId]
      $dArrow_ak6 =
        Control.Arrow.$p1ArrowChoice @ (~>_ae4) $dArrowChoice_ae7 } in
    \ (iA_acq :: (~>_ae4) env_ae5 GHC.Types.Bool)
      (tA_acr :: T5267.A (~>_ae4) env_ae5 d_ae6)
      (eA_acs :: T5267.A (~>_ae4) env_ae5 d_ae6) ->
      GHC.Base.$
        @ ((~>_ae4) env_ae5 d_ae6)
        @ (T5267.A (~>_ae4) env_ae5 d_ae6)
        (T5267.A @ (~>_ae4) @ env_ae5 @ d_ae6)
        (let {
           ds_dkB
             :: forall b_ae9 c_aea. (b_ae9 -> c_aea) -> (~>_ae4) b_ae9 c_aea
           [LclId]
           ds_dkB = Control.Arrow.arr @ (~>_ae4) $dArrow_ak6 } in
         let {
           ds_dkC
             :: forall a_aeh b_aei c_aej.
                (~>_ae4) a_aeh b_aei
                -> (~>_ae4) b_aei c_aej -> (~>_ae4) a_aeh c_aej
           [LclId]
           ds_dkC = GHC.Desugar.>>> @ (~>_ae4) $dArrow_ak6 } in
         ds_dkC
           @ env_ae5
           @ env_ae5
           @ d_ae6
           (ds_dkB @ env_ae5 @ env_ae5 (\ (env_act :: env_ae5) -> env_act))
           (ds_dkC
              @ env_ae5
              @ (env_ae5, GHC.Types.Bool)
              @ d_ae6
              (ds_dkC
                 @ env_ae5
                 @ (env_ae5, env_ae5)
                 @ (env_ae5, GHC.Types.Bool)
                 (ds_dkB
                    @ env_ae5
                    @ (env_ae5, env_ae5)
                    (\ (ds_dkO :: env_ae5) -> (ds_dkO, ds_dkO)))
                 (ds_dkC
                    @ (env_ae5, env_ae5)
                    @ (GHC.Types.Bool, env_ae5)
                    @ (env_ae5, GHC.Types.Bool)
                    (Control.Arrow.first
                       @ (~>_ae4)
                       $dArrow_ak6
                       @ env_ae5
                       @ GHC.Types.Bool
                       @ env_ae5
                       (ds_dkC
                          @ env_ae5
                          @ env_ae5
                          @ GHC.Types.Bool
                          (ds_dkB @ env_ae5 @ env_ae5 (\ (ds_dkM :: env_ae5) -> ds_dkM))
                          iA_acq))
                    (ds_dkB
                       @ (GHC.Types.Bool, env_ae5)
                       @ (env_ae5, GHC.Types.Bool)
                       (\ (ds_dkR :: (GHC.Types.Bool, env_ae5)) ->
                          case ds_dkR of _ { (i_acu, ds_dkP) -> (ds_dkP, i_acu) }))))
              (ds_dkC
                 @ (env_ae5, GHC.Types.Bool)
                 @ (Data.Either.Either env_ae5 env_ae5)
                 @ d_ae6
                 (ds_dkB
                    @ (env_ae5, GHC.Types.Bool)
                    @ (Data.Either.Either env_ae5 env_ae5)
                    (\ (ds_dkK :: (env_ae5, GHC.Types.Bool)) ->
                       case ds_dkK of _ { (env_act, i_acu) ->
                       case i_acu of _ {
                         GHC.Types.False -> Data.Either.Right @ env_ae5 @ env_ae5 env_act;
                         GHC.Types.True -> Data.Either.Left @ env_ae5 @ env_ae5 env_act
                       }
                       }))
                 (Control.Arrow.|||
                    @ (~>_ae4)
                    $dArrowChoice_ae7
                    @ env_ae5
                    @ d_ae6
                    @ env_ae5
                    (ds_dkC
                       @ env_ae5
                       @ env_ae5
                       @ d_ae6
                       (ds_dkB @ env_ae5 @ env_ae5 (\ (ds_dkG :: env_ae5) -> ds_dkG))
                       (T5267.unA @ (~>_ae4) @ env_ae5 @ d_ae6 tA_acr))
                    (ds_dkC
                       @ env_ae5
                       @ env_ae5
                       @ d_ae6
                       (ds_dkB @ env_ae5 @ env_ae5 (\ (ds_dkI :: env_ae5) -> ds_dkI))
                       (T5267.unA @ (~>_ae4) @ env_ae5 @ d_ae6 eA_acs))))))

T5267.ite_perm
  :: forall ((~>_aip) :: * -> * -> *) env_aiq d_air.
     Control.Arrow.ArrowChoice (~>_aip) =>
     T5267.A (~>_aip) env_aiq d_air
     -> T5267.A (~>_aip) env_aiq d_air
     -> (~>_aip) env_aiq GHC.Types.Bool
     -> T5267.A (~>_aip) env_aiq d_air
[LclIdX]
T5267.ite_perm =
  \ (@ ~>_aiv::* -> * -> *)
    (@ env_aiw)
    (@ d_aix)
    ($dArrowChoice_aiy :: Control.Arrow.ArrowChoice (~>_aiv))
    (tA_acv :: T5267.A (~>_aiv) env_aiw d_aix)
    (eA_acw :: T5267.A (~>_aiv) env_aiw d_aix)
    (i_acx :: (~>_aiv) env_aiw GHC.Types.Bool) ->
    T5267.ite
      @ (~>_aiv) @ env_aiw @ d_aix $dArrowChoice_aiy i_acx tA_acv eA_acw

$c._ak2
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Category.Category (~>_ack) =>
     forall b_aky c_akz a_akA.
     T5267.A (~>_ack) b_aky c_akz
     -> T5267.A (~>_ack) a_akA b_aky -> T5267.A (~>_ack) a_akA c_akz
[LclId]
$c._ak2 =
  \ (@ ~>_ack::* -> * -> *)
    ($dCategory_ajX :: Control.Category.Category (~>_ack)) ->
    (Control.Category.. @ (~>_ack) $dCategory_ajX)
    `cast` (forall b_aky c_akz a_akA.
            Sym (T5267.NTCo:A <(~>_ack)>) <b_aky> <c_akz>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <a_akA> <b_aky>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <a_akA> <c_akz>
            :: (forall b_aky c_akz a_akA.
                (~>_ack) b_aky c_akz
                -> (~>_ack) a_akA b_aky -> (~>_ack) a_akA c_akz)
                 ~
               (forall b_aky c_akz a_akA.
                T5267.A (~>_ack) b_aky c_akz
                -> T5267.A (~>_ack) a_akA b_aky -> T5267.A (~>_ack) a_akA c_akz))

$cid_ak0
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Category.Category (~>_ack) =>
     forall a_akx. T5267.A (~>_ack) a_akx a_akx
[LclId]
$cid_ak0 =
  \ (@ ~>_ack::* -> * -> *)
    ($dCategory_ajX :: Control.Category.Category (~>_ack)) ->
    (Control.Category.id @ (~>_ack) $dCategory_ajX)
    `cast` (forall a_akx. Sym (T5267.NTCo:A <(~>_ack)>) <a_akx> <a_akx>
            :: (forall a_akx. (~>_ack) a_akx a_akx)
                 ~
               (forall a_akx. T5267.A (~>_ack) a_akx a_akx))

T5267.$fCategoryA [InlPrag=[ALWAYS] CONLIKE]
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Category.Category (~>_ack) =>
     Control.Category.Category (T5267.A (~>_ack))
[LclIdX[DFunId],
 Unf=DFun(arity=2) Control.Category.D:Category [$cid_ak0, $c._ak2]]
T5267.$fCategoryA =
  \ (@ ~>_ack::* -> * -> *)
    ($dCategory_ajX :: Control.Category.Category (~>_ack)) ->
    Control.Category.D:Category
      @ (T5267.A (~>_ack))
      ($cid_ak0 @ (~>_ack) $dCategory_ajX)
      ($c._ak2 @ (~>_ack) $dCategory_ajX)

$c&&&_ajU
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     forall b_aku c_akv c'_akw.
     T5267.A (~>_ack) b_aku c_akv
     -> T5267.A (~>_ack) b_aku c'_akw
     -> T5267.A (~>_ack) b_aku (c_akv, c'_akw)
[LclId]
$c&&&_ajU =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    (Control.Arrow.&&& @ (~>_ack) $dArrow_ajG)
    `cast` (forall b_aku c_akv c'_akw.
            Sym (T5267.NTCo:A <(~>_ack)>) <b_aku> <c_akv>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <b_aku> <c'_akw>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <b_aku> <(c_akv, c'_akw)>
            :: (forall b_aku c_akv c'_akw.
                (~>_ack) b_aku c_akv
                -> (~>_ack) b_aku c'_akw -> (~>_ack) b_aku (c_akv, c'_akw))
                 ~
               (forall b_aku c_akv c'_akw.
                T5267.A (~>_ack) b_aku c_akv
                -> T5267.A (~>_ack) b_aku c'_akw
                -> T5267.A (~>_ack) b_aku (c_akv, c'_akw)))

$c***_ajS
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     forall b_akq c_akr b'_aks c'_akt.
     T5267.A (~>_ack) b_akq c_akr
     -> T5267.A (~>_ack) b'_aks c'_akt
     -> T5267.A (~>_ack) (b_akq, b'_aks) (c_akr, c'_akt)
[LclId]
$c***_ajS =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    (Control.Arrow.*** @ (~>_ack) $dArrow_ajG)
    `cast` (forall b_akq c_akr b'_aks c'_akt.
            Sym (T5267.NTCo:A <(~>_ack)>) <b_akq> <c_akr>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <b'_aks> <c'_akt>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <(b_akq, b'_aks)> <(c_akr,
                                                                 c'_akt)>
            :: (forall b_akq c_akr b'_aks c'_akt.
                (~>_ack) b_akq c_akr
                -> (~>_ack) b'_aks c'_akt
                -> (~>_ack) (b_akq, b'_aks) (c_akr, c'_akt))
                 ~
               (forall b_akq c_akr b'_aks c'_akt.
                T5267.A (~>_ack) b_akq c_akr
                -> T5267.A (~>_ack) b'_aks c'_akt
                -> T5267.A (~>_ack) (b_akq, b'_aks) (c_akr, c'_akt)))

$csecond_ajQ
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     forall b_akn c_ako d_akp.
     T5267.A (~>_ack) b_akn c_ako
     -> T5267.A (~>_ack) (d_akp, b_akn) (d_akp, c_ako)
[LclId]
$csecond_ajQ =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    (Control.Arrow.second @ (~>_ack) $dArrow_ajG)
    `cast` (forall b_akn c_ako d_akp.
            Sym (T5267.NTCo:A <(~>_ack)>) <b_akn> <c_ako>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <(d_akp, b_akn)> <(d_akp, c_ako)>
            :: (forall b_akn c_ako d_akp.
                (~>_ack) b_akn c_ako -> (~>_ack) (d_akp, b_akn) (d_akp, c_ako))
                 ~
               (forall b_akn c_ako d_akp.
                T5267.A (~>_ack) b_akn c_ako
                -> T5267.A (~>_ack) (d_akp, b_akn) (d_akp, c_ako)))

$cfirst_ajO
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     forall b_ael c_aem d_aen.
     T5267.A (~>_ack) b_ael c_aem
     -> T5267.A (~>_ack) (b_ael, d_aen) (c_aem, d_aen)
[LclId]
$cfirst_ajO =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    (Control.Arrow.first @ (~>_ack) $dArrow_ajG)
    `cast` (forall b_ael c_aem d_aen.
            Sym (T5267.NTCo:A <(~>_ack)>) <b_ael> <c_aem>
            -> Sym (T5267.NTCo:A <(~>_ack)>) <(b_ael, d_aen)> <(c_aem, d_aen)>
            :: (forall b_ael c_aem d_aen.
                (~>_ack) b_ael c_aem -> (~>_ack) (b_ael, d_aen) (c_aem, d_aen))
                 ~
               (forall b_ael c_aem d_aen.
                T5267.A (~>_ack) b_ael c_aem
                -> T5267.A (~>_ack) (b_ael, d_aen) (c_aem, d_aen)))

$carr_ajM
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     forall b_ae9 c_aea.
     (b_ae9 -> c_aea) -> T5267.A (~>_ack) b_ae9 c_aea
[LclId]
$carr_ajM =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    (Control.Arrow.arr @ (~>_ack) $dArrow_ajG)
    `cast` (forall b_ae9 c_aea.
            <b_ae9 -> c_aea> -> Sym (T5267.NTCo:A <(~>_ack)>) <b_ae9> <c_aea>
            :: (forall b_ae9 c_aea. (b_ae9 -> c_aea) -> (~>_ack) b_ae9 c_aea)
                 ~
               (forall b_ae9 c_aea.
                (b_ae9 -> c_aea) -> T5267.A (~>_ack) b_ae9 c_aea))

$c$p1Arrow_ajJ
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     Control.Category.Category (T5267.A (~>_ack))
[LclId]
$c$p1Arrow_ajJ =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    T5267.$fCategoryA
      @ (~>_ack) (Control.Arrow.$p1Arrow @ (~>_ack) $dArrow_ajG)

T5267.$fArrowA [InlPrag=[ALWAYS] CONLIKE]
  :: forall ((~>_ack) :: * -> * -> *).
     Control.Arrow.Arrow (~>_ack) =>
     Control.Arrow.Arrow (T5267.A (~>_ack))
[LclIdX[DFunId],
 Unf=DFun(arity=2) Control.Arrow.D:Arrow [$c$p1Arrow_ajJ, $carr_ajM,
                                          $cfirst_ajO, $csecond_ajQ, $c***_ajS, $c&&&_ajU]]
T5267.$fArrowA =
  \ (@ ~>_ack::* -> * -> *)
    ($dArrow_ajG :: Control.Arrow.Arrow (~>_ack)) ->
    Control.Arrow.D:Arrow
      @ (T5267.A (~>_ack))
      ($c$p1Arrow_ajJ @ (~>_ack) $dArrow_ajG)
      ($carr_ajM @ (~>_ack) $dArrow_ajG)
      ($cfirst_ajO @ (~>_ack) $dArrow_ajG)
      ($csecond_ajQ @ (~>_ack) $dArrow_ajG)
      ($c***_ajS @ (~>_ack) $dArrow_ajG)
      ($c&&&_ajU @ (~>_ack) $dArrow_ajG)

T5267.ite'
  :: forall a_aiF t_aiT t_aiU (t_aiV :: * -> * -> *).
     Control.Arrow.ArrowChoice t_aiV =>
     T5267.A t_aiV t_aiU GHC.Types.Bool
     -> T5267.A t_aiV a_aiF t_aiT
     -> T5267.A t_aiV a_aiF t_aiT
     -> T5267.A t_aiV t_aiU t_aiT
[LclIdX]
T5267.ite' =
  \ (@ a_aiZ)
    (@ t_aj0)
    (@ t_aj1)
    (@ t_aj2::* -> * -> *)
    ($dArrowChoice_aj3 :: Control.Arrow.ArrowChoice t_aj2) ->
    let {
      $dArrow_aiS :: Control.Arrow.Arrow t_aj2
      [LclId]
      $dArrow_aiS =
        Control.Arrow.$p1ArrowChoice @ t_aj2 $dArrowChoice_aj3 } in
    let {
      $dArrow_aiP :: Control.Arrow.Arrow (T5267.A t_aj2)
      [LclId]
      $dArrow_aiP = T5267.$fArrowA @ t_aj2 $dArrow_aiS } in
    \ (cA_acy :: T5267.A t_aj2 t_aj1 GHC.Types.Bool)
      (tA_acz :: T5267.A t_aj2 a_aiZ t_aj0)
      (eA_acA :: T5267.A t_aj2 a_aiZ t_aj0) ->
      let {
        ds_dkS
          :: forall b_ae9 c_aea.
             (b_ae9 -> c_aea) -> T5267.A t_aj2 b_ae9 c_aea
        [LclId]
        ds_dkS = Control.Arrow.arr @ (T5267.A t_aj2) $dArrow_aiP } in
      let {
        ds_dkT
          :: forall a_aeh b_aei c_aej.
             T5267.A t_aj2 a_aeh b_aei
             -> T5267.A t_aj2 b_aei c_aej -> T5267.A t_aj2 a_aeh c_aej
        [LclId]
        ds_dkT = GHC.Desugar.>>> @ (T5267.A t_aj2) $dArrow_aiP } in
      ds_dkT
        @ t_aj1
        @ t_aj1
        @ t_aj0
        (ds_dkS @ t_aj1 @ t_aj1 (\ (x_acB :: t_aj1) -> x_acB))
        (ds_dkT
           @ t_aj1
           @ GHC.Types.Bool
           @ t_aj0
           (ds_dkT
              @ t_aj1
              @ (t_aj1, ())
              @ GHC.Types.Bool
              (ds_dkS
                 @ t_aj1
                 @ (t_aj1, ())
                 (\ (ds_dl5 :: t_aj1) -> (ds_dl5, GHC.Tuple.())))
              (ds_dkT
                 @ (t_aj1, ())
                 @ (GHC.Types.Bool, ())
                 @ GHC.Types.Bool
                 (Control.Arrow.first
                    @ (T5267.A t_aj2)
                    $dArrow_aiP
                    @ t_aj1
                    @ GHC.Types.Bool
                    @ ()
                    (ds_dkT
                       @ t_aj1
                       @ t_aj1
                       @ GHC.Types.Bool
                       (ds_dkS @ t_aj1 @ t_aj1 (\ (ds_dl3 :: t_aj1) -> ds_dl3))
                       cA_acy))
                 (ds_dkS
                    @ (GHC.Types.Bool, ())
                    @ GHC.Types.Bool
                    (\ (ds_dl8 :: (GHC.Types.Bool, ())) ->
                       case ds_dl8 of _ { (c_acC, ds_dl6) ->
                       case ds_dl6 of _ { () -> c_acC }
                       }))))
           (T5267.ite_perm
              @ t_aj2
              @ GHC.Types.Bool
              @ t_aj0
              $dArrowChoice_aj3
              tA_acz
              eA_acA
              (GHC.Desugar.>>>
                 @ t_aj2
                 $dArrow_aiS
                 @ GHC.Types.Bool
                 @ GHC.Types.Bool
                 @ GHC.Types.Bool
                 (Control.Arrow.arr
                    @ t_aj2
                    $dArrow_aiS
                    @ GHC.Types.Bool
                    @ GHC.Types.Bool
                    (\ (ds_dkZ :: GHC.Types.Bool) -> ds_dkZ))
                 (Control.Arrow.returnA @ t_aj2 @ GHC.Types.Bool $dArrow_aiS))))

T5267.ite''
  :: forall a_aje t_ajp t_ajq (t_ajr :: * -> * -> *).
     Control.Arrow.ArrowChoice t_ajr =>
     T5267.A t_ajr t_ajq GHC.Types.Bool
     -> T5267.A t_ajr a_aje t_ajp
     -> T5267.A t_ajr a_aje t_ajp
     -> T5267.A t_ajr t_ajq t_ajp
[LclIdX]
T5267.ite'' =
  \ (@ a_ajv)
    (@ t_ajw)
    (@ t_ajx)
    (@ t_ajy::* -> * -> *)
    ($dArrowChoice_ajz :: Control.Arrow.ArrowChoice t_ajy) ->
    let {
      $dArrow_ajo :: Control.Arrow.Arrow t_ajy
      [LclId]
      $dArrow_ajo =
        Control.Arrow.$p1ArrowChoice @ t_ajy $dArrowChoice_ajz } in
    let {
      $dArrow_ajl :: Control.Arrow.Arrow (T5267.A t_ajy)
      [LclId]
      $dArrow_ajl = T5267.$fArrowA @ t_ajy $dArrow_ajo } in
    \ (cA_acD :: T5267.A t_ajy t_ajx GHC.Types.Bool)
      (tA_acE :: T5267.A t_ajy a_ajv t_ajw)
      (eA_acF :: T5267.A t_ajy a_ajv t_ajw) ->
      let {
        ds_dl9
          :: forall b_ae9 c_aea.
             (b_ae9 -> c_aea) -> T5267.A t_ajy b_ae9 c_aea
        [LclId]
        ds_dl9 = Control.Arrow.arr @ (T5267.A t_ajy) $dArrow_ajl } in
      let {
        ds_dla
          :: forall a_aeh b_aei c_aej.
             T5267.A t_ajy a_aeh b_aei
             -> T5267.A t_ajy b_aei c_aej -> T5267.A t_ajy a_aeh c_aej
        [LclId]
        ds_dla = GHC.Desugar.>>> @ (T5267.A t_ajy) $dArrow_ajl } in
      ds_dla
        @ t_ajx
        @ t_ajx
        @ t_ajw
        (ds_dl9 @ t_ajx @ t_ajx (\ (x_acI :: t_ajx) -> x_acI))
        (ds_dla
           @ t_ajx
           @ GHC.Types.Bool
           @ t_ajw
           (ds_dla
              @ t_ajx
              @ (t_ajx, ())
              @ GHC.Types.Bool
              (ds_dl9
                 @ t_ajx
                 @ (t_ajx, ())
                 (\ (ds_dlm :: t_ajx) -> (ds_dlm, GHC.Tuple.())))
              (ds_dla
                 @ (t_ajx, ())
                 @ (GHC.Types.Bool, ())
                 @ GHC.Types.Bool
                 (Control.Arrow.first
                    @ (T5267.A t_ajy)
                    $dArrow_ajl
                    @ t_ajx
                    @ GHC.Types.Bool
                    @ ()
                    (ds_dla
                       @ t_ajx
                       @ t_ajx
                       @ GHC.Types.Bool
                       (ds_dl9 @ t_ajx @ t_ajx (\ (ds_dlk :: t_ajx) -> ds_dlk))
                       cA_acD))
                 (ds_dl9
                    @ (GHC.Types.Bool, ())
                    @ GHC.Types.Bool
                    (\ (ds_dlp :: (GHC.Types.Bool, ())) ->
                       case ds_dlp of _ { (c_acJ, ds_dln) ->
                       case ds_dln of _ { () -> c_acJ }
                       }))))
           ((\ (i_acH :: t_ajy a_ajv GHC.Types.Bool) ->
               T5267.ite
                 @ t_ajy @ a_ajv @ t_ajw $dArrowChoice_ajz i_acH tA_acE eA_acF)
              (GHC.Desugar.>>>
                 @ t_ajy
                 $dArrow_ajo
                 @ GHC.Types.Bool
                 @ GHC.Types.Bool
                 @ GHC.Types.Bool
                 (Control.Arrow.arr
                    @ t_ajy
                    $dArrow_ajo
                    @ GHC.Types.Bool
                    @ GHC.Types.Bool
                    (\ (ds_dlg :: GHC.Types.Bool) -> ds_dlg))
                 (Control.Arrow.returnA @ t_ajy @ GHC.Types.Bool $dArrow_ajo))))

*** End of Offense ***

Change History (4)

comment:1 Changed 2 years ago by simonpj

  • Cc dwincort@… added
  • Owner set to ross

Ross, might you investigate?

Arises from #5267

comment:2 Changed 2 years ago by ross

As described at #5267, GHC 6.12 correctly rejected this; it seems the check was removed in 7.0.

comment:3 Changed 2 years ago by ross

Just to be clear: the real bug here is #5267. This example should be rejected by the type checker (as it was in 6.12) and never reach the desugarer.

comment:4 Changed 2 years ago by simonmar

  • Difficulty set to Unknown
  • Resolution set to invalid
  • Status changed from new to closed

So, if I'm understanding correctly:

  • T5267 should fail with a type error
  • that it currently doesn't is a bug (#5267)
  • this core lint error arises because the type checker erroneously allows the program through

so, we can close this ticket, since #5267 is already open to track the bug.

Note: See TracTickets for help on using tickets.