summaryrefslogtreecommitdiff
path: root/testsuite/tests/th
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/th')
-rw-r--r--testsuite/tests/th/T8577.hs10
-rw-r--r--testsuite/tests/th/T8577.stderr7
-rw-r--r--testsuite/tests/th/T8577a.hs11
-rw-r--r--testsuite/tests/th/all.T4
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])