[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