summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorBen Orchard <thefirstmuffinman@gmail.com>2022-05-24 14:18:45 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-03 20:16:18 -0400
commit931c8d82f28fb98a7e0ad0a837eff05c08021cbe (patch)
tree2c23bfc55f915762e43d4cf87aff21991b8a73d0 /testsuite
parent00a8a5ff9abf5bb1a0c2a9225c7bca5ec3bdf306 (diff)
downloadhaskell-931c8d82f28fb98a7e0ad0a837eff05c08021cbe.tar.gz
Add sized primitive literal syntax
Adds a new LANGUAGE pragma ExtendedLiterals, which enables defining unboxed numeric literals such as `0xFF#Word8 :: Word8#`. Implements GHC proposal 0451: https://github.com/ghc-proposals/ghc-proposals/blob/b384a538b34f79d18a0201455b7b3c473bc8c936/proposals/0451-sized-literals.rst Fixes #21422. Bumps haddock submodule. Co-authored-by: Krzysztof Gogolewski <krzysztof.gogolewski@tweag.io>
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/tests/driver/T4437.hs3
-rw-r--r--testsuite/tests/extendedliterals/all.T3
-rw-r--r--testsuite/tests/extendedliterals/extendedliterals01.hs41
-rw-r--r--testsuite/tests/extendedliterals/extendedliterals02.hs15
-rw-r--r--testsuite/tests/extendedliterals/extendedliterals03.hs260
-rw-r--r--testsuite/tests/extendedliterals/extendedliterals03.stdout16
-rw-r--r--testsuite/tests/ghci/should_run/SizedLiterals.hs117
-rw-r--r--testsuite/tests/ghci/should_run/SizedLiteralsA.hs139
-rw-r--r--testsuite/tests/ghci/should_run/all.T1
-rw-r--r--testsuite/tests/printer/Ppr038.hs12
10 files changed, 347 insertions, 260 deletions
diff --git a/testsuite/tests/driver/T4437.hs b/testsuite/tests/driver/T4437.hs
index 3c07aa5679..142c348fca 100644
--- a/testsuite/tests/driver/T4437.hs
+++ b/testsuite/tests/driver/T4437.hs
@@ -37,7 +37,8 @@ check title expected got
-- See Note [Adding a language extension] in compiler/GHC/Driver/Session.hs.
expectedGhcOnlyExtensions :: [String]
expectedGhcOnlyExtensions =
- [ "TypeAbstractions"
+ [ "TypeAbstractions",
+ "ExtendedLiterals"
]
expectedCabalOnlyExtensions :: [String]
diff --git a/testsuite/tests/extendedliterals/all.T b/testsuite/tests/extendedliterals/all.T
new file mode 100644
index 0000000000..a1a922adc5
--- /dev/null
+++ b/testsuite/tests/extendedliterals/all.T
@@ -0,0 +1,3 @@
+test('extendedliterals01', normal, compile, [''])
+test('extendedliterals02', normal, compile, [''])
+test('extendedliterals03', [extra_ways(['ghci']), js_skip], compile_and_run, [''])
diff --git a/testsuite/tests/extendedliterals/extendedliterals01.hs b/testsuite/tests/extendedliterals/extendedliterals01.hs
new file mode 100644
index 0000000000..d464f9822b
--- /dev/null
+++ b/testsuite/tests/extendedliterals/extendedliterals01.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE MagicHash, ExtendedLiterals #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE UnboxedSums, UnboxedTuples #-}
+
+-- needed on 32bit
+{-# OPTIONS_GHC -fno-warn-overflowed-literals #-}
+
+module Ex where
+
+import GHC.Exts
+import GHC.Word
+import GHC.Int
+
+-- Precise 'Int8#'/'Int8' range tests
+exI8g1, exI8g2, exI8g3 :: Int8
+exI8g1 = I8# 0x00#Int8
+exI8g2 = I8# 0x7F#Int8
+exI8g3 = I8# -0x80#Int8
+
+-- Showcase various syntax for equivalent 'Int' terms
+exIg1, exIg2, exIg3 :: Int
+exIg1 = 0x7FFFFFFFFFFFFFFF
+exIg2 = I# 0x7FFFFFFFFFFFFFFF#
+exIg3 = I# 0x7FFFFFFFFFFFFFFF#Int
+
+-- Motivating example: unboxed 'Word8#' parsing
+data CEnum = Cons00 | Cons01 | ConsFF deriving Show
+parseCEnum :: Word8# -> (# (##) | CEnum #)
+parseCEnum = \case 0x00#Word8 -> (# | Cons00 #)
+ 0x01#Word8 -> (# | Cons01 #)
+ 0xFF#Word8 -> (# | ConsFF #)
+ _ -> (# (##) | #)
+
+w8ToBool# :: Word8# -> Int#
+w8ToBool# = \case 0#Word8 -> 0#
+ _ -> 1#
+
+i8IsPole# :: Int8# -> Int#
+i8IsPole# = \case 0x7F#Int8 -> 1#
+ -0x80#Int8 -> 1#
+ _ -> 0#
diff --git a/testsuite/tests/extendedliterals/extendedliterals02.hs b/testsuite/tests/extendedliterals/extendedliterals02.hs
new file mode 100644
index 0000000000..0b5a9391af
--- /dev/null
+++ b/testsuite/tests/extendedliterals/extendedliterals02.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE MagicHash, ExtendedLiterals #-}
+{-# OPTIONS_GHC -fno-warn-overflowed-literals #-}
+
+module Ex where
+
+--import GHC.Exts
+import GHC.Int
+
+-- Overflowed 'Int8#' literals
+exI8b1, exI8b2, exI8b3, exI8b4, exI8b5 :: Int8
+exI8b1 = I8# 0x80#Int8
+exI8b2 = I8# -0x81#Int8
+exI8b3 = I8# 0xFF#Int8
+exI8b4 = I8# -0xFF#Int8
+exI8b5 = I8# 0xFFFFFFFFFFFFFFFF#Int8
diff --git a/testsuite/tests/extendedliterals/extendedliterals03.hs b/testsuite/tests/extendedliterals/extendedliterals03.hs
new file mode 100644
index 0000000000..a3a4b0b8f5
--- /dev/null
+++ b/testsuite/tests/extendedliterals/extendedliterals03.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE MagicHash, ExtendedLiterals #-}
+import GHC.Word
+import GHC.Int
+import GHC.Exts
+
+main = do
+ print (W8# (fibw8 6#Word8),
+ W16# (fibw16 6#Word16),
+ W32# (fibw32 6#Word32),
+ W64# (fibw64 6#Word64))
+ print (I8# (fibi8 6#Int8),
+ I16# (fibi16 6#Int16),
+ I32# (fibi32 6#Int32),
+ I64# (fibi64 6#Int64))
+
+ print (W64# 0xFFFFFFFFFFFFFFFF#Word64)
+ print (I64# 0x7FFFFFFFFFFFFFFF#Int64)
+ print (I64# -0x8000000000000000#Int64)
+ print (W64# (x () `timesWord64#` y ()))
+ print (case x () `timesWord64#` y () of
+ 276447232#Word64 -> False
+ 276447233#Word64 -> False
+ 276447234#Word64 -> False
+ 276047234#Word64 -> False
+ 5000000004#Word64 -> False
+ 100000000000000#Word64 -> True
+ _ -> False)
+ print (case x () `timesWord64#` y () of
+ 276447232#Word64 -> True
+ _ -> False)
+
+ print [ W8# (branchi8 0#Int8)
+ , W8# (branchi8 1#Int8)
+ , W8# (branchi8 -1#Int8)
+ , W8# (branchi8 126#Int8)
+ , W8# (branchi8 127#Int8)
+ , W8# (branchi8 -127#Int8)
+ , W8# (branchi8 -128#Int8)
+ , W8# (branchi8 2#Int8)
+ ]
+
+ print [ W16# (branchi16 0#Int16)
+ , W16# (branchi16 1#Int16)
+ , W16# (branchi16 (-1#Int16))
+ , W16# (branchi16 32767#Int16)
+ , W16# (branchi16 32766#Int16)
+ , W16# (branchi16 (-32768#Int16))
+ , W16# (branchi16 (-32767#Int16))
+ , W16# (branchi16 2#Int16)
+ ]
+
+ print [ W32# (branchi32 0#Int32)
+ , W32# (branchi32 1#Int32)
+ , W32# (branchi32 (-1#Int32))
+ , W32# (branchi32 2147483646#Int32)
+ , W32# (branchi32 2147483647#Int32)
+ , W32# (branchi32 (-2147483648#Int32))
+ , W32# (branchi32 (-2147483647#Int32))
+ , W32# (branchi32 2#Int32)
+ ]
+
+ print [ W64# (branchi64 0#Int64)
+ , W64# (branchi64 1#Int64)
+ , W64# (branchi64 (-1#Int64))
+ , W64# (branchi64 2147483647#Int64)
+ , W64# (branchi64 2147483648#Int64)
+ , W64# (branchi64 4294967297#Int64)
+ , W64# (branchi64 (-2147483648#Int64))
+ , W64# (branchi64 (-2147483649#Int64))
+ , W64# (branchi64 (-4294967295#Int64))
+ , W64# (branchi64 9223372036854775807#Int64)
+ , W64# (branchi64 9223372036854775806#Int64)
+ , W64# (branchi64 (-9223372036854775808#Int64))
+ , W64# (branchi64 (-9223372036854775807#Int64))
+ , W64# (branchi64 2#Int64)
+ ]
+
+ print [ I8# (branchw8 0#Word8)
+ , I8# (branchw8 1#Word8)
+ , I8# (branchw8 254#Word8)
+ , I8# (branchw8 255#Word8)
+ , I8# (branchw8 2#Word8)
+ ]
+
+ print [ I16# (branchw16 0#Word16)
+ , I16# (branchw16 1#Word16)
+ , I16# (branchw16 255#Word16)
+ , I16# (branchw16 256#Word16)
+ , I16# (branchw16 65534#Word16)
+ , I16# (branchw16 65535#Word16)
+ , I16# (branchw16 2#Word16)
+ ]
+
+ print [ I32# (branchw32 0#Word32)
+ , I32# (branchw32 1#Word32)
+ , I32# (branchw32 65534#Word32)
+ , I32# (branchw32 65535#Word32)
+ , I32# (branchw32 65536#Word32)
+ , I32# (branchw32 4294967295#Word32)
+ , I32# (branchw32 4294967294#Word32)
+ , I32# (branchw32 4294967293#Word32)
+ , I32# (branchw32 2#Word32)
+ ]
+
+ print [ I64# (branchw64 0#Word64)
+ , I64# (branchw64 1#Word64)
+ , I64# (branchw64 65536#Word64)
+ , I64# (branchw64 4294967295#Word64)
+ , I64# (branchw64 4294967296#Word64)
+ , I64# (branchw64 4294967297#Word64)
+ , I64# (branchw64 18446744073709551615#Word64)
+ , I64# (branchw64 18446744073709551614#Word64)
+ , I64# (branchw64 18446744073709551613#Word64)
+ , I64# (branchw64 2#Word64)
+ ]
+
+fibw8 :: Word8# -> Word8#
+fibw8 0#Word8 = 0#Word8
+fibw8 1#Word8 = 1#Word8
+fibw8 n = fibw8 (n `subWord8#` 1#Word8) `plusWord8#` fibw8 (n `subWord8#` 2#Word8)
+
+fibw16 :: Word16# -> Word16#
+fibw16 0#Word16 = 0#Word16
+fibw16 1#Word16 = 1#Word16
+fibw16 n = fibw16 (n `subWord16#` 1#Word16) `plusWord16#` fibw16 (n `subWord16#` 2#Word16)
+
+fibw32 :: Word32# -> Word32#
+fibw32 0#Word32 = 0#Word32
+fibw32 1#Word32 = 1#Word32
+fibw32 n = fibw32 (n `subWord32#` 1#Word32) `plusWord32#` fibw32 (n `subWord32#` 2#Word32)
+
+fibw64 :: Word64# -> Word64#
+fibw64 0#Word64 = 0#Word64
+fibw64 1#Word64 = 1#Word64
+fibw64 n = fibw64 (n `subWord64#` 1#Word64) `plusWord64#` fibw64 (n `subWord64#` 2#Word64)
+
+--
+
+fibi8 :: Int8# -> Int8#
+fibi8 0#Int8 = 0#Int8
+fibi8 1#Int8 = 1#Int8
+fibi8 n = fibi8 (n `subInt8#` 1#Int8) `plusInt8#` fibi8 (n `subInt8#` 2#Int8)
+
+fibi16 :: Int16# -> Int16#
+fibi16 0#Int16 = 0#Int16
+fibi16 1#Int16 = 1#Int16
+fibi16 n = fibi16 (n `subInt16#` 1#Int16) `plusInt16#` fibi16 (n `subInt16#` 2#Int16)
+
+fibi32 :: Int32# -> Int32#
+fibi32 0#Int32 = 0#Int32
+fibi32 1#Int32 = 1#Int32
+fibi32 n = fibi32 (n `subInt32#` 1#Int32) `plusInt32#` fibi32 (n `subInt32#` 2#Int32)
+
+fibi64 :: Int64# -> Int64#
+fibi64 0#Int64 = 0#Int64
+fibi64 1#Int64 = 1#Int64
+fibi64 n = fibi64 (n `subInt64#` 1#Int64) `plusInt64#` fibi64 (n `subInt64#` 2#Int64)
+
+--
+
+branchi8 :: Int8# -> Word8#
+branchi8 0#Int8 = 1#Word8
+branchi8 1#Int8 = 2#Word8
+branchi8 (-1#Int8) = 3#Word8
+branchi8 126#Int8 = 4#Word8
+branchi8 127#Int8 = 5#Word8
+branchi8 (-127#Int8) = 6#Word8
+branchi8 (-128#Int8) = 7#Word8
+branchi8 _ = 0#Word8
+{-# NOINLINE branchi8 #-}
+
+branchi16 :: Int16# -> Word16#
+branchi16 0#Int16 = 1#Word16
+branchi16 1#Int16 = 2#Word16
+branchi16 (-1#Int16) = 3#Word16
+branchi16 32767#Int16 = 255#Word16
+branchi16 32766#Int16 = 256#Word16
+branchi16 (-32768#Int16) = 65534#Word16
+branchi16 (-32767#Int16) = 65535#Word16
+branchi16 _ = 0#Word16
+{-# NOINLINE branchi16 #-}
+
+branchi32 :: Int32# -> Word32#
+branchi32 0#Int32 = 1#Word32
+branchi32 1#Int32 = 2#Word32
+branchi32 (-1#Int32) = 3#Word32
+branchi32 2147483646#Int32 = 65535#Word32
+branchi32 2147483647#Int32 = 65536#Word32
+branchi32 (-2147483648#Int32) = 4294967294#Word32
+branchi32 (-2147483647#Int32) = 4294967295#Word32
+branchi32 _ = 0#Word32
+{-# NOINLINE branchi32 #-}
+
+branchi64 :: Int64# -> Word64#
+branchi64 0#Int64 = 18446744073709551615#Word64
+branchi64 1#Int64 = 2147483648#Word64
+branchi64 (-1#Int64) = 4294967296#Word64
+branchi64 2147483647#Int64 = 4294967297#Word64
+branchi64 2147483648#Int64 = 9#Word64
+branchi64 4294967297#Int64 = 1#Word64
+branchi64 (-2147483648#Int64) = 18446744073709551614#Word64
+branchi64 (-2147483649#Int64) = 3#Word64
+branchi64 (-4294967295#Int64) = 4#Word64
+branchi64 9223372036854775807#Int64 = 5#Word64
+branchi64 9223372036854775806#Int64 = 6#Word64
+branchi64 (-9223372036854775808#Int64) = 7#Word64
+branchi64 (-9223372036854775807#Int64) = 8#Word64
+branchi64 _ = 0#Word64
+{-# NOINLINE branchi64 #-}
+
+branchw8 :: Word8# -> Int8#
+branchw8 0#Word8 = 1#Int8
+branchw8 1#Word8 = (-1#Int8)
+branchw8 254#Word8 = 2#Int8
+branchw8 255#Word8 = (-2#Int8)
+branchw8 _ = 0#Int8
+{-# NOINLINE branchw8 #-}
+
+branchw16 :: Word16# -> Int16#
+branchw16 0#Word16 = 256#Int16
+branchw16 1#Word16 = (-256#Int16)
+branchw16 255#Word16 = 32767#Int16
+branchw16 256#Word16 = (-32768#Int16)
+branchw16 65534#Word16 = (-1#Int16)
+branchw16 65535#Word16 = 1#Int16
+branchw16 _ = 0#Int16
+{-# NOINLINE branchw16 #-}
+
+branchw32 :: Word32# -> Int32#
+branchw32 0#Word32 = 2147483647#Int32
+branchw32 1#Word32 = (-2147483648#Int32)
+branchw32 65534#Word32 = 65535#Int32
+branchw32 65535#Word32 = 65536#Int32
+branchw32 65536#Word32 = (-1#Int32)
+branchw32 4294967295#Word32 = (-65536#Int32)
+branchw32 4294967294#Word32 = (-65537#Int32)
+branchw32 4294967293#Word32 = 1#Int32
+branchw32 _ = 0#Int32
+{-# NOINLINE branchw32 #-}
+
+branchw64 :: Word64# -> Int64#
+branchw64 0#Word64 = 9223372036854775807#Int64
+branchw64 1#Word64 = 2147483648#Int64
+branchw64 65536#Word64 = 4294967296#Int64
+branchw64 4294967295#Word64 = 4294967297#Int64
+branchw64 4294967296#Word64 = (-1#Int64)
+branchw64 4294967297#Word64 = 9223372036854775806#Int64
+branchw64 18446744073709551615#Word64 = (-9223372036854775808#Int64)
+branchw64 18446744073709551614#Word64 = (-9223372036854775807#Int64)
+branchw64 18446744073709551613#Word64 = 1#Int64
+branchw64 _ = 0#Int64
+{-# NOINLINE branchw64 #-}
+
+x :: () -> Word64#
+x () = 2000000000#Word64
+{-# NOINLINE x #-}
+
+y :: () -> Word64#
+y () = 50000#Word64
+{-# NOINLINE y #-}
diff --git a/testsuite/tests/extendedliterals/extendedliterals03.stdout b/testsuite/tests/extendedliterals/extendedliterals03.stdout
new file mode 100644
index 0000000000..eba8001d49
--- /dev/null
+++ b/testsuite/tests/extendedliterals/extendedliterals03.stdout
@@ -0,0 +1,16 @@
+(8,8,8,8)
+(8,8,8,8)
+18446744073709551615
+9223372036854775807
+-9223372036854775808
+100000000000000
+True
+False
+[1,2,3,4,5,6,7,0]
+[1,2,3,255,256,65534,65535,0]
+[1,2,3,65535,65536,4294967294,4294967295,0]
+[18446744073709551615,2147483648,4294967296,4294967297,9,1,18446744073709551614,3,4,5,6,7,8,0]
+[1,-1,2,-2,0]
+[256,-256,32767,-32768,-1,1,0]
+[2147483647,-2147483648,65535,65536,-1,-65536,-65537,1,0]
+[9223372036854775807,2147483648,4294967296,4294967297,-1,9223372036854775806,-9223372036854775808,-9223372036854775807,1,0]
diff --git a/testsuite/tests/ghci/should_run/SizedLiterals.hs b/testsuite/tests/ghci/should_run/SizedLiterals.hs
deleted file mode 100644
index e02683d27c..0000000000
--- a/testsuite/tests/ghci/should_run/SizedLiterals.hs
+++ /dev/null
@@ -1,117 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-
-import SizedLiteralsA
-import Language.Haskell.TH
-
-{-
-
- This file is compiled with the GHC flags:
-
- -O -fbyte-code-and-object-code -fprefer-byte-code
-
- This makes sure that the Template Haskell runs in the bytecode
- interpreter with optimized bytecode, allowing us to test the
- sized unboxed literals.
-
- Running the test in GHCi directly would disable optimization.
-
- -}
-
-main :: IO ()
-main = do
- print $(pure $ ListE [ ie (fibw8 5)
- , ie (fibw16 5)
- , ie (fibw32 5)
- , ie (fibw64 5)
- ])
-
- print $(pure $ ListE [ ie (fibi8 5)
- , ie (fibi16 5)
- , ie (fibi32 5)
- , ie (fibi64 5)
- ])
-
- print $(pure $ ListE [ ie (branchi8 0)
- , ie (branchi8 1)
- , ie (branchi8 (-1))
- , ie (branchi8 126)
- , ie (branchi8 127)
- , ie (branchi8 (-127))
- , ie (branchi8 (-128))
- , ie (branchi8 2)
- ])
-
- print $(pure $ ListE [ ie (branchi16 0)
- , ie (branchi16 1)
- , ie (branchi16 (-1))
- , ie (branchi16 32767)
- , ie (branchi16 32766)
- , ie (branchi16 (-32768))
- , ie (branchi16 (-32767))
- , ie (branchi16 2)
- ])
-
- print $(pure $ ListE [ ie (branchi32 0)
- , ie (branchi32 1)
- , ie (branchi32 (-1))
- , ie (branchi32 2147483646)
- , ie (branchi32 2147483647)
- , ie (branchi32 (-2147483648))
- , ie (branchi32 (-2147483647))
- , ie (branchi32 2)
- ])
-
- print $(pure $ ListE [ ie (branchi64 0)
- , ie (branchi64 1)
- , ie (branchi64 (-1))
- , ie (branchi64 2147483647)
- , ie (branchi64 2147483648)
- , ie (branchi64 4294967297)
- , ie (branchi64 (-2147483648))
- , ie (branchi64 (-2147483649))
- , ie (branchi64 (-4294967295))
- , ie (branchi64 9223372036854775807)
- , ie (branchi64 9223372036854775806)
- , ie (branchi64 (-9223372036854775808))
- , ie (branchi64 (-9223372036854775807))
- , ie (branchi64 2)
- ])
-
- print $(pure $ ListE [ ie (branchw8 0)
- , ie (branchw8 1)
- , ie (branchw8 254)
- , ie (branchw8 255)
- , ie (branchw8 2)
- ])
-
- print $(pure $ ListE [ ie (branchw16 0)
- , ie (branchw16 1)
- , ie (branchw16 255)
- , ie (branchw16 256)
- , ie (branchw16 65534)
- , ie (branchw16 65535)
- , ie (branchw16 2)
- ])
-
- print $(pure $ ListE [ ie (branchw32 0)
- , ie (branchw32 1)
- , ie (branchw32 65534)
- , ie (branchw32 65535)
- , ie (branchw32 65536)
- , ie (branchw32 4294967295)
- , ie (branchw32 4294967294)
- , ie (branchw32 4294967293)
- , ie (branchw32 2)
- ])
-
- print $(pure $ ListE [ ie (branchw64 0)
- , ie (branchw64 1)
- , ie (branchw64 65536)
- , ie (branchw64 4294967295)
- , ie (branchw64 4294967296)
- , ie (branchw64 4294967297)
- , ie (branchw64 18446744073709551615)
- , ie (branchw64 18446744073709551614)
- , ie (branchw64 18446744073709551613)
- , ie (branchw64 2)
- ]) \ No newline at end of file
diff --git a/testsuite/tests/ghci/should_run/SizedLiteralsA.hs b/testsuite/tests/ghci/should_run/SizedLiteralsA.hs
deleted file mode 100644
index 3cfec65071..0000000000
--- a/testsuite/tests/ghci/should_run/SizedLiteralsA.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-module SizedLiteralsA where
-
-import GHC.Word
-import GHC.Int
-import Language.Haskell.TH.Syntax
-
-fibw8 :: Word8 -> Word8
-fibw8 0 = 0
-fibw8 1 = 1
-fibw8 n = fibw8 (n-1) + fibw8 (n-2)
-
-fibw16 :: Word16 -> Word16
-fibw16 0 = 0
-fibw16 1 = 1
-fibw16 n = fibw16 (n-1) + fibw16 (n-2)
-
-fibw32 :: Word32 -> Word32
-fibw32 0 = 0
-fibw32 1 = 1
-fibw32 n = fibw32 (n-1) + fibw32 (n-2)
-
-fibw64 :: Word64 -> Word64
-fibw64 0 = 0
-fibw64 1 = 1
-fibw64 n = fibw64 (n-1) + fibw64 (n-2)
-
---
-
-fibi8 :: Int8 -> Int8
-fibi8 0 = 0
-fibi8 1 = 1
-fibi8 n = fibi8 (n-1) + fibi8 (n-2)
-
-fibi16 :: Int16 -> Int16
-fibi16 0 = 0
-fibi16 1 = 1
-fibi16 n = fibi16 (n-1) + fibi16 (n-2)
-
-fibi32 :: Int32 -> Int32
-fibi32 0 = 0
-fibi32 1 = 1
-fibi32 n = fibi32 (n-1) + fibi32 (n-2)
-
-fibi64 :: Int64 -> Int64
-fibi64 0 = 0
-fibi64 1 = 1
-fibi64 n = fibi64 (n-1) + fibi64 (n-2)
-
---
-
-branchi8 :: Int8 -> Word8
-branchi8 0 = 1
-branchi8 1 = 2
-branchi8 (-1) = 3
-branchi8 126 = 4
-branchi8 127 = 5
-branchi8 (-127) = 6
-branchi8 (-128) = 7
-branchi8 _ = 0
-
-branchi16 :: Int16 -> Word16
-branchi16 0 = 1
-branchi16 1 = 2
-branchi16 (-1) = 3
-branchi16 32767 = 255
-branchi16 32766 = 256
-branchi16 (-32768) = 65534
-branchi16 (-32767) = 65535
-branchi16 _ = 0
-
-branchi32 :: Int32 -> Word32
-branchi32 0 = 1
-branchi32 1 = 2
-branchi32 (-1) = 3
-branchi32 2147483646 = 65535
-branchi32 2147483647 = 65536
-branchi32 (-2147483648) = 4294967294
-branchi32 (-2147483647) = 4294967295
-branchi32 _ = 0
-
-branchi64 :: Int64 -> Word64
-branchi64 0 = 18446744073709551615
-branchi64 1 = 2147483648
-branchi64 (-1) = 4294967296
-branchi64 2147483647 = 4294967297
-branchi64 2147483648 = 9
-branchi64 4294967297 = 1
-branchi64 (-2147483648) = 18446744073709551614
-branchi64 (-2147483649) = 3
-branchi64 (-4294967295) = 4
-branchi64 9223372036854775807 = 5
-branchi64 9223372036854775806 = 6
-branchi64 (-9223372036854775808) = 7
-branchi64 (-9223372036854775807) = 8
-branchi64 _ = 0
-
-branchw8 :: Word8 -> Int8
-branchw8 0 = 1
-branchw8 1 = (-1)
-branchw8 254 = 2
-branchw8 255 = (-2)
-branchw8 _ = 0
-
-branchw16 :: Word16 -> Int16
-branchw16 0 = 256
-branchw16 1 = (-256)
-branchw16 255 = 32767
-branchw16 256 = (-32768)
-branchw16 65534 = (-1)
-branchw16 65535 = 1
-branchw16 _ = 0
-
-branchw32 :: Word32 -> Int32
-branchw32 0 = 2147483647
-branchw32 1 = (-2147483648)
-branchw32 65534 = 65535
-branchw32 65535 = 65536
-branchw32 65536 = (-1)
-branchw32 4294967295 = (-65536)
-branchw32 4294967294 = (-65537)
-branchw32 4294967293 = 1
-branchw32 _ = 0
-
-branchw64 :: Word64 -> Int64
-branchw64 0 = 9223372036854775807
-branchw64 1 = 2147483648
-branchw64 65536 = 4294967296
-branchw64 4294967295 = 4294967297
-branchw64 4294967296 = (-1)
-branchw64 4294967297 = 9223372036854775806
-branchw64 18446744073709551615 = (-9223372036854775808)
-branchw64 18446744073709551614 = (-9223372036854775807)
-branchw64 18446744073709551613 = 1
-branchw64 _ = 0
-
---
-
-ie :: Integral a => a -> Exp
-ie x = LitE (IntegerL (toInteger x))
diff --git a/testsuite/tests/ghci/should_run/all.T b/testsuite/tests/ghci/should_run/all.T
index 15df5e417c..aaa8dfe856 100644
--- a/testsuite/tests/ghci/should_run/all.T
+++ b/testsuite/tests/ghci/should_run/all.T
@@ -85,7 +85,6 @@ test('T19628', [extra_files(['T19628a.hs']), only_ways(['ghci']) ], compile_and_
test('T21052', just_ghci, ghci_script, ['T21052.script'])
test('T21300', just_ghci, ghci_script, ['T21300.script'])
test('UnliftedDataType2', just_ghci, compile_and_run, [''])
-test('SizedLiterals', [req_interp, extra_files(["SizedLiteralsA.hs"]),extra_hc_opts("-O -fbyte-code-and-object-code -fprefer-byte-code")], compile_and_run, [''])
test('T22829', just_ghci + [extra_hc_opts("-Wmissing-import-lists -Werror")], compile_and_run, [''])
test('T23229', just_ghci + [extra_hc_opts("-this-unit-id my-package -Wno-missing-methods T23229")], ghci_script, ['T23229.script'])
diff --git a/testsuite/tests/printer/Ppr038.hs b/testsuite/tests/printer/Ppr038.hs
index 43fafaf01c..17b42802fb 100644
--- a/testsuite/tests/printer/Ppr038.hs
+++ b/testsuite/tests/printer/Ppr038.hs
@@ -21,6 +21,14 @@ blah = x
wordH = 005##
floatH = 3.20#
doubleH = 04.16##
- -- int64H = 00456L#
- -- word64H = 00456L##
+ intNH = 1000#Int
+ int8H = 1008#Int8
+ int16H = 1016#Int8
+ int32H = 1032#Int32
+ int64H = 1064#Int64
+ wordNH = 2000#Word
+ word8H = 2008#Word8
+ word16H = 2016#Word16
+ word32H = 2032#Word32
+ word64H = 2064#Word64
x = 1