diff options
Diffstat (limited to 'testsuite/tests/arityanal')
-rw-r--r-- | testsuite/tests/arityanal/should_compile/T18870.hs | 12 | ||||
-rw-r--r-- | testsuite/tests/arityanal/should_compile/T18937.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/arityanal/should_compile/all.T | 2 |
3 files changed, 22 insertions, 0 deletions
diff --git a/testsuite/tests/arityanal/should_compile/T18870.hs b/testsuite/tests/arityanal/should_compile/T18870.hs new file mode 100644 index 0000000000..b94fd13ffb --- /dev/null +++ b/testsuite/tests/arityanal/should_compile/T18870.hs @@ -0,0 +1,12 @@ +{-# OPTIONS_GHC -O2 -fforce-recomp #-} + +module T18870 where + +import GHC.Exts + +-- This function should not lead to an "Exciting arity" DEBUG message. +-- It should only do one round of fixed-point iteration to conclude that it has +-- arity 2. +f :: [a] -> a -> a +f [] = id +f (x:xs) = oneShot (\_ -> f xs x) diff --git a/testsuite/tests/arityanal/should_compile/T18937.hs b/testsuite/tests/arityanal/should_compile/T18937.hs new file mode 100644 index 0000000000..c7db70af02 --- /dev/null +++ b/testsuite/tests/arityanal/should_compile/T18937.hs @@ -0,0 +1,8 @@ +{-# OPTIONS_GHC -O2 -fforce-recomp #-} + +module T18937 where + +f :: [Int] -> Int -> Int +f [] = id +f (x:xs) = let y = sum [0..x] + in \z -> f xs (y + z) diff --git a/testsuite/tests/arityanal/should_compile/all.T b/testsuite/tests/arityanal/should_compile/all.T index 3413a3270c..60059b8e9c 100644 --- a/testsuite/tests/arityanal/should_compile/all.T +++ b/testsuite/tests/arityanal/should_compile/all.T @@ -19,3 +19,5 @@ test('Arity16', [ only_ways(['optasm']), grep_errmsg('Arity=') ], compile, ['-dn # Regression tests test('T18793', [ only_ways(['optasm']), grep_errmsg('Arity=') ], compile, ['-dno-typeable-binds -ddump-simpl -dppr-cols=99999 -dsuppress-uniques']) +test('T18870', [ only_ways(['optasm']) ], compile, ['-ddebug-output']) +test('T18937', [ only_ways(['optasm']), when(compiler_debugged(), expect_broken(18937)) ], compile, ['-ddebug-output']) |