content: module Main where
  
  import Data.Int
  import Data.Word
  
  -- Test case for bug #5785. The cause of this was that the LLVM backend
  -- converted all Int constants using (fromInteger :: Int) and so on 32bit a
  -- Int64 or Word32 would be truncated to 32bit! value before printing out.
  main :: IO ()
  main = do
      -- first two should print as big numbers (as unsigned)
      print (-1 :: Word8)
      print (-1 :: Word16)
      print (-1 :: Word32)
      print (-1 :: Word64)
      print (-1 :: Int8)
      print (-1 :: Int16)
      print (-1 :: Int32)
      print (-1 :: Int64)
  
      -- only requires 32 bits (unsigned)
      print (2316287658 :: Word8)
      print (2316287658 :: Word16)
      print (2316287658 :: Word32)
      print (2316287658 :: Word64)
      print (2316287658 :: Int8)
      print (2316287658 :: Int16)
      print (2316287658 :: Int32)
      print (2316287658 :: Int64)
  
      -- this requires a 64 (unsigned) bit word to store correctly
      print (32342316287658 :: Word8)
      print (32342316287658 :: Word16)
      print (32342316287658 :: Word32)
      print (32342316287658 :: Word64)
      print (32342316287658 :: Int8)
      print (32342316287658 :: Int16)
      print (32342316287658 :: Int32)
      print (32342316287658 :: Int64)
  
  