summaryrefslogtreecommitdiff
path: root/testsuite/tests/perf/should_run/T15185.hs
blob: e6a01252f4734f8bbbefb4bcf77c50db01c35f0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{-# LANGUAGE TypeApplications #-}

-- Ensure that we do list fusion on `foldr f z [from..to]` for sized `Int` and
-- `Word` types. Related tickets: #15185, #8763.

import Control.Exception (evaluate)
import Data.Int
import Data.Word

fact :: Integral t => t -> t
fact n = product [1..n]

main :: IO ()
main = do
  _ <- evaluate (fact @Int 50)
  _ <- evaluate (fact @Int64 50)
  _ <- evaluate (fact @Int32 50)
  _ <- evaluate (fact @Int16 50)
  _ <- evaluate (fact @Int8 50)
  _ <- evaluate (fact @Word 50)
  _ <- evaluate (fact @Word64 50)
  _ <- evaluate (fact @Word32 50)
  _ <- evaluate (fact @Word16 50)
  _ <- evaluate (fact @Word8 50)
  pure ()