From e31ead39331f1bb6d3976ae7573be8fe2b364172 Mon Sep 17 00:00:00 2001 From: Matthew Pickering Date: Mon, 18 Jul 2022 11:47:52 +0100 Subject: Add tests that -XHaskell98 and -XHaskell2010 enable DeepSubsumption --- compiler/GHC/Driver/Session.hs | 4 +++- .../tests/typecheck/should_compile/DeepSubsumption06.hs | 12 ++++++++++++ .../tests/typecheck/should_compile/DeepSubsumption07.hs | 12 ++++++++++++ testsuite/tests/typecheck/should_compile/all.T | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 testsuite/tests/typecheck/should_compile/DeepSubsumption06.hs create mode 100644 testsuite/tests/typecheck/should_compile/DeepSubsumption07.hs diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index ffcad74cae..061209d315 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -1339,12 +1339,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 3410ad68bb..3071562989 100644 --- a/testsuite/tests/typecheck/should_compile/all.T +++ b/testsuite/tests/typecheck/should_compile/all.T @@ -849,3 +849,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']) -- cgit v1.2.1