[GHC] #11396: deriving Ix with custom ifThenElse causes "Bad call to tagToEnum#"

GHC ghc-devs at haskell.org
Sun Jan 10 11:46:04 UTC 2016


#11396: deriving Ix with custom ifThenElse causes "Bad call to tagToEnum#"
-------------------------------------+-------------------------------------
           Reporter:  Lemming        |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.1-rc1
           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:
-------------------------------------+-------------------------------------
 {{{
 $ cat IfThenElseIx.hs
 {-# LANGUAGE RebindableSyntax #-}
 module IfThenElseIx where

 import Data.Ix (Ix, )

 import Prelude


 ifThenElse :: Bool -> a -> a -> a
 ifThenElse True x _ = x
 ifThenElse False _ x = x

 data T = A | B deriving (Eq, Ord, Ix)

 $ ghci-8.0.0.20160109 IfThenElseIx.hs
 GHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/  :? for help
 [1 of 1] Compiling IfThenElseIx     ( IfThenElseIx.hs, interpreted )

 IfThenElseIx.hs:13:35: error:
     • Bad call to tagToEnum# at type a_a2ky
         Specify the type by giving a type signature
         e.g. (tagToEnum# x) :: Bool
     • In the second argument of ‘ifThenElse’, namely
         ‘(GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))’
       In the expression:
         if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then
             (GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))
         else
             False
       In a case alternative:
           c#
             -> if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then
                    (GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))
                else
                    False
       When typechecking the code for ‘GHC.Arr.inRange’
         in a derived instance for ‘Ix T’:
         To see the code I am typechecking, use -ddump-deriv
 Failed, modules loaded: none.
 }}}

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


More information about the ghc-tickets mailing list