summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2019-05-16 17:50:33 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-05-21 17:19:22 -0400
commit4a6c8436f974cafc36a6e0462878614bdc0899c0 (patch)
treebc9843fd192150bfd32609f636f8484e998e33e3 /testsuite
parente32c30caf48517df8ddca6a79a39becfe5622c39 (diff)
downloadhaskell-4a6c8436f974cafc36a6e0462878614bdc0899c0.tar.gz
Fix #16666 by parenthesizing contexts in Convert
Most places where we convert contexts in `Convert` are actually in positions that are to the left of some `=>`, such as in superclasses and instance contexts. Accordingly, these contexts need to be parenthesized at `funPrec`. To accomplish this, this patch changes `cvtContext` to require a precedence argument for the purposes of calling `parenthesizeHsContext` and adjusts all `cvtContext` call sites accordingly.
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/tests/th/T16666.hs11
-rw-r--r--testsuite/tests/th/T16666.stderr7
-rw-r--r--testsuite/tests/th/all.T1
3 files changed, 19 insertions, 0 deletions
diff --git a/testsuite/tests/th/T16666.hs b/testsuite/tests/th/T16666.hs
new file mode 100644
index 0000000000..88351fd5a7
--- /dev/null
+++ b/testsuite/tests/th/T16666.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE UndecidableInstances #-}
+module T16666 where
+
+$([d| class (c => d) => Implies c d
+ instance (c => d) => Implies c d
+ |])
diff --git a/testsuite/tests/th/T16666.stderr b/testsuite/tests/th/T16666.stderr
new file mode 100644
index 0000000000..8264967396
--- /dev/null
+++ b/testsuite/tests/th/T16666.stderr
@@ -0,0 +1,7 @@
+T16666.hs:(9,3)-(11,6): Splicing declarations
+ [d| class (c => d) => Implies c d
+
+ instance (c => d) => Implies c d |]
+ ======>
+ class (c => d) => Implies c d
+ instance (c => d) => Implies c d
diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T
index f9738615c7..37d21c3707 100644
--- a/testsuite/tests/th/all.T
+++ b/testsuite/tests/th/all.T
@@ -473,3 +473,4 @@ test('T16195', normal, multimod_compile, ['T16195.hs', '-v0'])
test('T16293b', normal, compile, [''])
test('T16326_TH', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
test('T14741', normal, compile_and_run, [''])
+test('T16666', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])