diff options
-rw-r--r-- | testsuite/tests/ghc-regress/simplCore/should_compile/all.T | 1 | ||||
-rw-r--r-- | testsuite/tests/ghc-regress/simplCore/should_compile/simpl012.hs | 23 |
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) + + |