summaryrefslogtreecommitdiff
path: root/testsuite/tests/th/T10796a.hs
diff options
context:
space:
mode:
authorRyanGlScott <ryan.gl.scott@gmail.com>2015-10-13 00:43:32 -0500
committerAustin Seipp <austin@well-typed.com>2015-10-13 00:43:42 -0500
commitd2f9972a35ce05ceb8a78893e433ef1df06f73ef (patch)
treebc3cee0ec99aacd64298993fde590c017734c6e6 /testsuite/tests/th/T10796a.hs
parent94ef79a766a1f58a5daadcf7dbb342812cd1a9bd (diff)
downloadhaskell-d2f9972a35ce05ceb8a78893e433ef1df06f73ef.tar.gz
Make dataToQa aware of Data instances which use functions to implement toConstr
Trac #10796 exposes a way to make `template-haskell`'s `dataToQa` function freak out if using a `Data` instance that produces a `Constr` (by means of `toConstr`) using a function name instead of a data constructor name. While such `Data` instances are somewhat questionable, they are nevertheless present in popular libraries (e.g., `containers`), so we can at least make `dataToQa` aware of their existence. In order to properly distinguish strings which represent variables (as opposed to data constructors), it was necessary to move functionality from `Lexeme` (in `ghc`) to `GHC.Lexeme` in a new `ghc-boot` library (which was previously named `bin-package-db`). Reviewed By: goldfire, thomie Differential Revision: https://phabricator.haskell.org/D1313 GHC Trac Issues: #10796
Diffstat (limited to 'testsuite/tests/th/T10796a.hs')
-rw-r--r--testsuite/tests/th/T10796a.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/testsuite/tests/th/T10796a.hs b/testsuite/tests/th/T10796a.hs
new file mode 100644
index 0000000000..6c1ac8c78c
--- /dev/null
+++ b/testsuite/tests/th/T10796a.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T10796a where
+
+import Data.Ratio
+import Data.Set (Set, fromList)
+import Language.Haskell.TH.Syntax (liftData)
+
+-- Data instance with toConstr implemented using a variable,
+-- not a data constructor
+splicedSet :: Set Char
+splicedSet = $(liftData (fromList "test"))
+
+-- Infix data constructor
+splicedRatio :: Ratio Int
+splicedRatio = $(liftData (1 % 2 :: Ratio Int))