summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsheaf <sam.derbyshire@gmail.com>2021-10-13 12:13:41 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-10-13 18:44:49 -0400
commite46edfcf47d674731935b2ea1443cc7927e071fb (patch)
tree81e584d1f3cf1ed6bfac4d741568faabbfd1db23
parent64460b20bce7d0979215bdde33f2f7d1248b5003 (diff)
downloadhaskell-e46edfcf47d674731935b2ea1443cc7927e071fb.tar.gz
Set logger flags in --backpack mode
Backpack used to initialise the logger before obtaining the DynFlags. This meant that logging options (such as dump flags) were not set. Initialising the logger after the session flags have been set fixes the issue. fixes #20396
-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, [''])