#2647: Serious typo in IntMap.hs
----------------------------------+-----------------------------------------
    Reporter:  sedillard          |       Owner:                   
        Type:  bug                |      Status:  new              
    Priority:  normal             |   Component:  libraries (other)
     Version:  6.8.3              |    Severity:  critical         
    Keywords:  containers IntMap  |    Testcase:                   
Architecture:  Unknown/Multiple   |          Os:  Unknown/Multiple 
----------------------------------+-----------------------------------------
 Someone has recently (since 6.8.3) taken a "style" pass over `IntMap.hs`.
 Apparently they didn't like reusing identifiers in different scopes, so
 they changed this function (at the very core of `IntMap`) from this

 {{{
 highestBitMask :: Nat -> Nat
 highestBitMask x
   = case (x .|. shiftRL x 1) of
      x -> case (x .|. shiftRL x 2) of
       x -> case (x .|. shiftRL x 4) of
        x -> case (x .|. shiftRL x 8) of
         x -> case (x .|. shiftRL x 16) of
          x -> case (x .|. shiftRL x 32) of   -- for 64 bit platforms
           x -> (x `xor` (shiftRL x 1))
 }}}

 to this

 {{{
 highestBitMask :: Nat -> Nat
 highestBitMask x0
   = case (x0 .|. shiftRL x0 1) of
      x1 -> case (x1 .|. shiftRL x1 2) of
       x2 -> case (x2 .|. shiftRL x2 4) of
        x3 -> case (x3 .|. shiftRL x3 8) of
         x4 -> case (x3 .|. shiftRL x4 16) of
          x5 -> case (x4 .|. shiftRL x5 32) of   -- for 64 bit platforms
           x6 -> (x6 `xor` (shiftRL x6 1))
 }}}

 If you stare at it long enough, you might find the typo. Don't cheat and
 look at the patch. I'll give you a hint: quickcheck won't find it because
 the tests don't use big enough integers.

 Needless to say this completely breaks the library, and if it ain't
 broke... :)

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2647>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to