summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2022-07-18 11:47:52 +0100
committerZubin Duggal <zubin.duggal@gmail.com>2022-07-26 16:28:48 +0530
commitf1b85d40a34c2bd87237f82eeba9e0125c80a3c9 (patch)
tree71746e3b18512a9a403ff454810a2e1ce7c76c5d
parentaf84a211f5f7e46d5c4651adcdc59c2dc7b9d716 (diff)
downloadhaskell-f1b85d40a34c2bd87237f82eeba9e0125c80a3c9.tar.gz
Add tests that -XHaskell98 and -XHaskell2010 enable DeepSubsumption
(cherry picked from commit 5c4fbaf53f258d64aeb66a8172e13dc559eb8d8b)
-rw-r--r--compiler/GHC/Driver/Session.hs4
-rw-r--r--testsuite/tests/typecheck/should_compile/DeepSubsumption06.hs12
-rw-r--r--testsuite/tests/typecheck/should_compile/DeepSubsumption07.hs12
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T2
4 files changed, 29 insertions, 1 deletions
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs
index b3d53c4953..91f0ed92c0 100644
--- a/compiler/GHC/Driver/Session.hs
+++ b/compiler/GHC/Driver/Session.hs
@@ -1372,12 +1372,14 @@ languageExtensions (Just Haskell98)
LangExt.DatatypeContexts,
LangExt.TraditionalRecordSyntax,
LangExt.FieldSelectors,
- LangExt.NondecreasingIndentation
+ LangExt.NondecreasingIndentation,
-- strictly speaking non-standard, but we always had this
-- on implicitly before the option was added in 7.1, and
-- turning it off breaks code, so we're keeping it on for
-- backwards compatibility. Cabal uses -XHaskell98 by
-- default unless you specify another language.
+ LangExt.DeepSubsumption
+ -- Non-standard but enabled for backwards compatability (see GHC proposal #511)
]
languageExtensions (Just Haskell2010)
diff --git a/testsuite/tests/typecheck/should_compile/DeepSubsumption06.hs b/testsuite/tests/typecheck/should_compile/DeepSubsumption06.hs
new file mode 100644
index 0000000000..6e8b64c2c2
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/DeepSubsumption06.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE NoPolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+module DeepSubsumption06 where
+
+class Profunctor p where
+ dimap :: (s -> a) -> (b -> t) -> p i a b -> p i s t
+
+type Iso s t a b = forall p i . Profunctor p => p i a b -> p i s t
+
+iso :: (s -> a) -> (b -> t) -> Iso s t a b
+-- iso f g = dimap f g
+iso = dimap
diff --git a/testsuite/tests/typecheck/should_compile/DeepSubsumption07.hs b/testsuite/tests/typecheck/should_compile/DeepSubsumption07.hs
new file mode 100644
index 0000000000..1c70025051
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/DeepSubsumption07.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE NoPolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+module DeepSubsumption07 where
+
+class Profunctor p where
+ dimap :: (s -> a) -> (b -> t) -> p i a b -> p i s t
+
+type Iso s t a b = forall p i . Profunctor p => p i a b -> p i s t
+
+iso :: (s -> a) -> (b -> t) -> Iso s t a b
+-- iso f g = dimap f g
+iso = dimap
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index 47ad8285c8..da674e0a2c 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -800,3 +800,5 @@ test('DeepSubsumption02', normal, compile, [''])
test('DeepSubsumption03', normal, compile, [''])
test('DeepSubsumption04', normal, compile, [''])
test('DeepSubsumption05', normal, compile, [''])
+test('DeepSubsumption06', normal, compile, ['-XHaskell98'])
+test('DeepSubsumption07', normal, compile, ['-XHaskell2010'])