summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/GHC/Driver/Session.hs7
-rw-r--r--testsuite/tests/safeHaskell/ghci/T19243.hs4
-rw-r--r--testsuite/tests/safeHaskell/ghci/T19243.script5
-rw-r--r--testsuite/tests/safeHaskell/ghci/T19243.stdout4
-rw-r--r--testsuite/tests/safeHaskell/ghci/all.T1
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'])