diff options
-rw-r--r-- | compiler/GHC/Driver/Session.hs | 7 | ||||
-rw-r--r-- | testsuite/tests/safeHaskell/ghci/T19243.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/safeHaskell/ghci/T19243.script | 5 | ||||
-rw-r--r-- | testsuite/tests/safeHaskell/ghci/T19243.stdout | 4 | ||||
-rw-r--r-- | testsuite/tests/safeHaskell/ghci/all.T | 1 |
5 files changed, 17 insertions, 4 deletions
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 8e92fc974f..0c09ce7ec2 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -2003,10 +2003,9 @@ safeFlagCheck _ dflags | safeLanguageOn dflags = (dflagsUnset, warns) ++ str] safeFlagCheck cmdl dflags = - case (safeInferOn dflags) of - True | safeFlags -> (dflags', warn) - True -> (dflags' { safeInferred = False }, warn) - False -> (dflags', warn) + case safeInferOn dflags of + True -> (dflags' { safeInferred = safeFlags }, warn) + False -> (dflags', warn) where -- dynflags and warn for when -fpackage-trust by itself with no safe diff --git a/testsuite/tests/safeHaskell/ghci/T19243.hs b/testsuite/tests/safeHaskell/ghci/T19243.hs new file mode 100644 index 0000000000..b32102030e --- /dev/null +++ b/testsuite/tests/safeHaskell/ghci/T19243.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE Haskell2010 #-} +module T19234 where +class A a +instance A Int diff --git a/testsuite/tests/safeHaskell/ghci/T19243.script b/testsuite/tests/safeHaskell/ghci/T19243.script new file mode 100644 index 0000000000..ad2fc64777 --- /dev/null +++ b/testsuite/tests/safeHaskell/ghci/T19243.script @@ -0,0 +1,5 @@ +:set -XGeneralizedNewtypeDeriving +:set -XNoGeneralizedNewtypeDeriving +:load T19243 +-- The following should report safe +:info A diff --git a/testsuite/tests/safeHaskell/ghci/T19243.stdout b/testsuite/tests/safeHaskell/ghci/T19243.stdout new file mode 100644 index 0000000000..93828deb9b --- /dev/null +++ b/testsuite/tests/safeHaskell/ghci/T19243.stdout @@ -0,0 +1,4 @@ +type A :: * -> Constraint +class A a + -- Defined at T19243.hs:3:1 +instance [safe] A Int -- Defined at T19243.hs:4:10 diff --git a/testsuite/tests/safeHaskell/ghci/all.T b/testsuite/tests/safeHaskell/ghci/all.T index 040cc288f9..26f72d20b8 100644 --- a/testsuite/tests/safeHaskell/ghci/all.T +++ b/testsuite/tests/safeHaskell/ghci/all.T @@ -19,4 +19,5 @@ test('p17', normalise_version("bytestring"), ghci_script, ['p17.script']) # 7172 test('p18', normalise_version("bytestring"), ghci_script, ['p18.script']) test('T12509', [extra_hc_opts('-XSafe')], ghci_script, ['T12509.script']) +test('T19243', normal, ghci_script, ['T19243.script']) |