diff options
Diffstat (limited to 'testsuite/tests/th')
-rw-r--r-- | testsuite/tests/th/T8577.hs | 10 | ||||
-rw-r--r-- | testsuite/tests/th/T8577.stderr | 7 | ||||
-rw-r--r-- | testsuite/tests/th/T8577a.hs | 11 | ||||
-rw-r--r-- | testsuite/tests/th/all.T | 4 |
4 files changed, 32 insertions, 0 deletions
diff --git a/testsuite/tests/th/T8577.hs b/testsuite/tests/th/T8577.hs new file mode 100644 index 0000000000..8a467e448a --- /dev/null +++ b/testsuite/tests/th/T8577.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE TemplateHaskell #-} +module T8577 where + +import Language.Haskell.TH + +import T8577a + +foo2 :: A Bool +foo2 = $$(y) + diff --git a/testsuite/tests/th/T8577.stderr b/testsuite/tests/th/T8577.stderr new file mode 100644 index 0000000000..6e35e4a6b5 --- /dev/null +++ b/testsuite/tests/th/T8577.stderr @@ -0,0 +1,7 @@ + +T8577.hs:9:11: + Couldn't match type ‛Int’ with ‛Bool’ + Expected type: Q (TExp (A Bool)) + Actual type: Q (TExp (A Int)) + In the expression: y + In the Template Haskell splice $$y diff --git a/testsuite/tests/th/T8577a.hs b/testsuite/tests/th/T8577a.hs new file mode 100644 index 0000000000..807350c3a2 --- /dev/null +++ b/testsuite/tests/th/T8577a.hs @@ -0,0 +1,11 @@ +{-# LANGUAGE TemplateHaskell #-} +module T8577a where +import Language.Haskell.TH + +data A a = A + +x :: Q (TExp (A a)) +x = [|| A ||] + +y :: Q (TExp (A Int)) +y = x diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T index a1fd6bfa18..05d5d902f8 100644 --- a/testsuite/tests/th/all.T +++ b/testsuite/tests/th/all.T @@ -311,3 +311,7 @@ test('T8540', extra_clean(['T8540a.hi', 'T8540a.o']), multimod_compile, ['T8540', '-v0 ' + config.ghc_th_way_flags]) +test('T8577', + extra_clean(['T8577a.hi', 'T8577a.o']), + multimod_compile_fail, + ['T8577', '-v0 ' + config.ghc_th_way_flags]) |