summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--testsuite/tests/ghc-regress/simplCore/should_compile/all.T1
-rw-r--r--testsuite/tests/ghc-regress/simplCore/should_compile/simpl012.hs23
2 files changed, 24 insertions, 0 deletions
diff --git a/testsuite/tests/ghc-regress/simplCore/should_compile/all.T b/testsuite/tests/ghc-regress/simplCore/should_compile/all.T
index 9ee8930fc0..eb857abe46 100644
--- a/testsuite/tests/ghc-regress/simplCore/should_compile/all.T
+++ b/testsuite/tests/ghc-regress/simplCore/should_compile/all.T
@@ -12,4 +12,5 @@ test('simpl008', only_compiler_types(['ghc']), compile_fail, [''])
test('simpl009', normal, compile, [''])
test('simpl010', normal, compile, [''])
test('simpl011', normal, compile, [''])
+test('simpl012', normal, compile, [''])
diff --git a/testsuite/tests/ghc-regress/simplCore/should_compile/simpl012.hs b/testsuite/tests/ghc-regress/simplCore/should_compile/simpl012.hs
new file mode 100644
index 0000000000..09af3e5618
--- /dev/null
+++ b/testsuite/tests/ghc-regress/simplCore/should_compile/simpl012.hs
@@ -0,0 +1,23 @@
+-- This is a version of tc095.hs, which makes the compiler
+-- loop (with -O) because of the recursive data-type bug,
+-- unless you have the NOINLINE (which Happy does,
+-- as it happens).
+
+-- Keywords: diverge, contravariant, fixpoint
+
+module ShouldSucceed where
+
+happyParse = happyFail 7 7 (error "reading EOF!") (HappyState happyFail) [] [] []
+
+data HappyState b c = HappyState
+ (Int -> -- token number
+ Int -> -- token number (yes, again)
+ b -> -- token semantic value
+ HappyState b c -> -- current state
+ [HappyState b c] -> -- state stack
+ c)
+
+{-# NOINLINE happyFail #-}
+happyFail _ i tk st@(HappyState action) sts stk = action (-1) (-1) tk st sts ( stk)
+
+