on master help sign in
Fix make_mask

x `fastShiftL` n isn't defined if n == 64 and x :: Word64

commit3e7a8f9f5a15aa1555a22c595d2b1ba767b780f9 authorSylvain HENRY <hsyl20@gmail.com> dateFri 6 Mar 2015, 10:20 (12 years ago) parent8d44be0
1 file changed+3−3
Data/Binary/Bits/Internal.hs+3−3
Data/Binary/Bits/Internal.hs+3−3
@@ -29,8 +29,8 @@ import GHC.Word
2929#endif
3030
3131-- | make_mask 3 = 00000111
32−make_mask :: (FastBits a, Num a) => Int -> a
33−make_mask n = (1 `fastShiftL` fromIntegral n) - 1
32+make_mask :: (Bits a, Num a) => Int -> a
33+make_mask n = (1 `shiftL` fromIntegral n) - 1
3434{-# SPECIALIZE make_mask :: Int -> Int #-}
3535{-# SPECIALIZE make_mask :: Int -> Word #-}
3636{-# SPECIALIZE make_mask :: Int -> Word8 #-}
@@ -39,7 +39,7 @@ make_mask n = (1 `fastShiftL` fromIntegral n) - 1
3939{-# SPECIALIZE make_mask :: Int -> Word64 #-}
4040
4141-- | Keep only the n least-significant bits of the given value
42−mask :: (FastBits a, Num a) => Int -> a -> a
42+mask :: (Bits a, Num a) => Int -> a -> a
4343mask n v = v .&. make_mask n
4444{-# INLINE mask #-}
4545