summaryrefslogtreecommitdiff
path: root/testsuite/tests/th
diff options
context:
space:
mode:
authorMichael Sloan <mgsloan@gmail.com>2018-07-26 17:18:22 -0400
committerBen Gamari <ben@smart-cactus.org>2018-07-27 11:40:43 -0400
commit774f366ebe58023fc50ba346894227b14816fe67 (patch)
treea2d37336c1d5c609d4e1d4f083d489aa85d18e28 /testsuite/tests/th
parent13d40ff65b4171c4f0adac10577667d05074441a (diff)
downloadhaskell-774f366ebe58023fc50ba346894227b14816fe67.tar.gz
Fail instead of panic-ing when qAddTopDecls has conversion error
See https://ghc.haskell.org/trac/ghc/ticket/14627 for an example where GHC panics when using qAddTopDecls on [d| f = Bool |]. Instead, it should be a normal error message, and that's what this change is for. It does not entirely resolve Trac#14627, since "Illegal variable name: 'bool'" isn't a very good error for this cirumstance. Test Plan: Manually tested. Reviewers: goldfire, bgamari Reviewed By: goldfire Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4914
Diffstat (limited to 'testsuite/tests/th')
-rw-r--r--testsuite/tests/th/TH_invalid_add_top_decl.hs8
-rw-r--r--testsuite/tests/th/TH_invalid_add_top_decl.stderr5
-rw-r--r--testsuite/tests/th/all.T1
3 files changed, 14 insertions, 0 deletions
diff --git a/testsuite/tests/th/TH_invalid_add_top_decl.hs b/testsuite/tests/th/TH_invalid_add_top_decl.hs
new file mode 100644
index 0000000000..b13d873d96
--- /dev/null
+++ b/testsuite/tests/th/TH_invalid_add_top_decl.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+import Language.Haskell.TH.Syntax
+
+$(do
+ invalidDecl <- valD (varP (mkName "emptyDo")) (normalB (doE [])) []
+ addTopDecls [invalidDecl]
+ return [])
diff --git a/testsuite/tests/th/TH_invalid_add_top_decl.stderr b/testsuite/tests/th/TH_invalid_add_top_decl.stderr
new file mode 100644
index 0000000000..9124c2d669
--- /dev/null
+++ b/testsuite/tests/th/TH_invalid_add_top_decl.stderr
@@ -0,0 +1,5 @@
+
+TH_invalid_add_top_decl.hs:5:3:
+ Error in a declaration passed to addTopDecls:
+ Empty stmt list in do-block
+ When splicing a TH declaration: emptyDo = do
diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T
index cd80a6c4fb..0fddd448ea 100644
--- a/testsuite/tests/th/all.T
+++ b/testsuite/tests/th/all.T
@@ -424,3 +424,4 @@ test('T9693', expect_broken(9693), ghci_script, ['T9693.script'])
test('T14471', normal, compile, [''])
test('TH_rebindableAdo', normal, compile, [''])
test('T14627', normal, compile_fail, [''])
+test('TH_invalid_add_top_decl', normal, compile_fail, [''])