summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/GHC/Driver/Backpack.hs5
-rw-r--r--testsuite/tests/backpack/should_compile/T20396.bkp7
-rw-r--r--testsuite/tests/backpack/should_compile/T20396.stderr22
-rw-r--r--testsuite/tests/backpack/should_compile/all.T1
4 files changed, 33 insertions, 2 deletions
diff --git a/compiler/GHC/Driver/Backpack.hs b/compiler/GHC/Driver/Backpack.hs
index a4dbe7052b..5d0a6a828c 100644
--- a/compiler/GHC/Driver/Backpack.hs
+++ b/compiler/GHC/Driver/Backpack.hs
@@ -91,8 +91,6 @@ import qualified Data.Set as Set
-- | Entry point to compile a Backpack file.
doBackpack :: [FilePath] -> Ghc ()
doBackpack [src_filename] = do
- logger <- getLogger
-
-- Apply options from file to dflags
dflags0 <- getDynFlags
let dflags1 = dflags0
@@ -100,6 +98,9 @@ doBackpack [src_filename] = do
src_opts <- liftIO $ getOptionsFromFile parser_opts1 src_filename
(dflags, unhandled_flags, warns) <- liftIO $ parseDynamicFilePragma dflags1 src_opts
modifySession (hscSetFlags dflags)
+ logger <- getLogger -- Get the logger after having set the session flags,
+ -- so that logger options are correctly set.
+ -- Not doing so caused #20396.
-- Cribbed from: preprocessFile / GHC.Driver.Pipeline
liftIO $ checkProcessArgsResult unhandled_flags
liftIO $ handleFlagWarnings logger (initDiagOpts dflags) warns
diff --git a/testsuite/tests/backpack/should_compile/T20396.bkp b/testsuite/tests/backpack/should_compile/T20396.bkp
new file mode 100644
index 0000000000..eff8b66316
--- /dev/null
+++ b/testsuite/tests/backpack/should_compile/T20396.bkp
@@ -0,0 +1,7 @@
+
+{-# OPTIONS_GHC -ddump-simpl -dsuppress-all -dsuppress-uniques #-}
+
+unit unit where
+ module A where
+ f :: Int -> Int
+ f x = x
diff --git a/testsuite/tests/backpack/should_compile/T20396.stderr b/testsuite/tests/backpack/should_compile/T20396.stderr
new file mode 100644
index 0000000000..702ab87ffe
--- /dev/null
+++ b/testsuite/tests/backpack/should_compile/T20396.stderr
@@ -0,0 +1,22 @@
+[1 of 1] Processing unit
+ Instantiating unit
+ [1 of 1] Compiling A ( unit\A.hs, T20396.out\unit\A.o )
+
+==================== Tidy Core ====================
+Result size of Tidy Core
+ = {terms: 17, types: 8, coercions: 0, joins: 0/0}
+
+f = \ x -> x
+
+$trModule1 = "unit"#
+
+$trModule2 = TrNameS $trModule1
+
+$trModule3 = "A"#
+
+$trModule4 = TrNameS $trModule3
+
+$trModule = Module $trModule2 $trModule4
+
+
+
diff --git a/testsuite/tests/backpack/should_compile/all.T b/testsuite/tests/backpack/should_compile/all.T
index ac8c2a7ed8..07c1ed27ec 100644
--- a/testsuite/tests/backpack/should_compile/all.T
+++ b/testsuite/tests/backpack/should_compile/all.T
@@ -58,3 +58,4 @@ test('T13149', expect_broken(13149), backpack_compile, [''])
test('T13214', normal, backpack_compile, [''])
test('T13250', normal, backpack_compile, [''])
test('T13323', normal, backpack_compile, [''])
+test('T20396', normal, backpack_compile, [''])