diff options
Diffstat (limited to 'testsuite/tests/parser/should_compile/NegativeLiterals.hs')
-rw-r--r-- | testsuite/tests/parser/should_compile/NegativeLiterals.hs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/testsuite/tests/parser/should_compile/NegativeLiterals.hs b/testsuite/tests/parser/should_compile/NegativeLiterals.hs new file mode 100644 index 0000000000..62d14ab678 --- /dev/null +++ b/testsuite/tests/parser/should_compile/NegativeLiterals.hs @@ -0,0 +1,57 @@ +{-# LANGUAGE NegativeLiterals, MagicHash, BinaryLiterals #-} + +module NegativeLiterals where + +import GHC.Exts + +------------------------------------ +-- Prefix occurrence of the minus -- +------------------------------------ + +p1 :: Bool +p1 = even -2 -- parsed as: even (-2) + +p2 :: Int +p2 = I# -1# -- parsed as: I# (-1#) + +p3 :: Int +p3 = floor -2.4 -- parsed as: floor (-2.4) + +p4 :: Float +p4 = F# -0.01# -- parsed as: F# (-0.01#) + +p5 :: Double +p5 = D# -0.01## -- parsed as: D# (-0.01##) + +p6 :: Bool +p6 = even -0b10 -- parsed as: even (-2) + || even -0o10 -- parsed as: even (-8) + || even -0x10 -- parsed as: even (-16) + +----------------------------------------- +-- Tight infix occurrence of the minus -- +----------------------------------------- + +ti1 :: Integer -> Integer +ti1 x = x-2 -- parsed as: (-) x 1 + +ti2 :: Int# -> Int# +ti2 x = x-1# -- parsed as: (-) x 1# + where (-) = (-#) + +ti3 :: Double -> Double +ti3 x = x-2.4 -- parsed as: (-) x 2.4 + +ti4 :: Float# -> Float# +ti4 x = x-0.1# -- parsed as: (-) x 0.1# + where (-) = minusFloat# + +ti5 :: Double# -> Double# +ti5 x = x-0.1## -- parsed as: (-) x 0.1## + where (-) = (-##) + +ti6 :: Integer -> [Integer] +ti6 x = + [ x-0b10, -- parsed as: (-) x 2 + x-0o10, -- parsed as: (-) x 8 + x-0x10 ] -- parsed as: (-) x 16 |