summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2017-01-24 10:16:38 -0500
committerRyan Scott <ryan.gl.scott@gmail.com>2017-01-24 10:16:38 -0500
commit9fd87ef8a16fbbce35205ae63d75d239bb575ccc (patch)
tree074b7cb46ef513d93d2a43175e25b517ef18cc92 /testsuite
parent90e83a7cbdccfeee86b02b7fe2f81b0485857f6e (diff)
downloadhaskell-9fd87ef8a16fbbce35205ae63d75d239bb575ccc.tar.gz
Don't put foralls in front of TH-spliced GADT constructors that don't need them
Summary: It turns out that D2974 broke this program (see https://phabricator.haskell.org/rGHC729a5e452db5#58801): ```lang=haskell {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -ddump-splices #-} module Bug where import GHC.Exts (Constraint) $([d| data Dec13 :: (* -> Constraint) -> * where MkDec13 :: c a => a -> Dec13 c |]) ``` This was actually due to a long-standing bug in `hsSyn/Convert` that put unnecessary `forall`s in front of GADT constructors that didn't have any explicitly quantified type variables. This cargo-cults the code in `Convert` that handles `ForallT` and adapts it to `ForallC`. Fixes #13123 (for real this time). Test Plan: make test TEST=T13123 Reviewers: goldfire, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D3002 GHC Trac Issues: #13123
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/tests/th/T13123.hs7
1 files changed, 7 insertions, 0 deletions
diff --git a/testsuite/tests/th/T13123.hs b/testsuite/tests/th/T13123.hs
index 987283be70..d7e1006b9e 100644
--- a/testsuite/tests/th/T13123.hs
+++ b/testsuite/tests/th/T13123.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
@@ -5,6 +6,8 @@
{-# LANGUAGE TemplateHaskell #-}
module T13123 where
+import GHC.Exts (Constraint)
+
$([d| idProxy :: forall proxy (a :: k). proxy a -> proxy a
idProxy x = x
|])
@@ -28,3 +31,7 @@ $([d| class Foo b where
$([d| data GADT where
MkGADT :: forall proxy (a :: k). proxy a -> GADT
|])
+
+$([d| data Dec13 :: (* -> Constraint) -> * where
+ MkDec13 :: c a => a -> Dec13 c
+ |])