summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Driver')
-rw-r--r--compiler/GHC/Driver/Backpack.hs3
-rw-r--r--compiler/GHC/Driver/Config/Parser.hs2
-rw-r--r--compiler/GHC/Driver/Pipeline.hs8
3 files changed, 9 insertions, 4 deletions
diff --git a/compiler/GHC/Driver/Backpack.hs b/compiler/GHC/Driver/Backpack.hs
index d9723c0f1b..ca34af8d0f 100644
--- a/compiler/GHC/Driver/Backpack.hs
+++ b/compiler/GHC/Driver/Backpack.hs
@@ -95,7 +95,8 @@ doBackpack [src_filename] = do
-- Apply options from file to dflags
dflags0 <- getDynFlags
let dflags1 = dflags0
- src_opts <- liftIO $ getOptionsFromFile dflags1 src_filename
+ let parser_opts1 = initParserOpts dflags1
+ src_opts <- liftIO $ getOptionsFromFile parser_opts1 src_filename
(dflags, unhandled_flags, warns) <- liftIO $ parseDynamicFilePragma dflags1 src_opts
modifySession (hscSetFlags dflags)
-- Cribbed from: preprocessFile / GHC.Driver.Pipeline
diff --git a/compiler/GHC/Driver/Config/Parser.hs b/compiler/GHC/Driver/Config/Parser.hs
index bc4c589bf8..335e1d530e 100644
--- a/compiler/GHC/Driver/Config/Parser.hs
+++ b/compiler/GHC/Driver/Config/Parser.hs
@@ -4,6 +4,7 @@ module GHC.Driver.Config.Parser
where
import GHC.Prelude
+import GHC.Platform
import GHC.Driver.Session
import GHC.Utils.Error
@@ -17,6 +18,7 @@ initParserOpts =
<$> warningFlags
<*> extensionFlags
<*> mkPlainMsgEnvelope
+ <*> (supportedLanguagesAndExtensions . platformArchOS . targetPlatform)
<*> safeImportsOn
<*> gopt Opt_Haddock
<*> gopt Opt_KeepRawTokenStream
diff --git a/compiler/GHC/Driver/Pipeline.hs b/compiler/GHC/Driver/Pipeline.hs
index 7c2c986967..59b5b5ea56 100644
--- a/compiler/GHC/Driver/Pipeline.hs
+++ b/compiler/GHC/Driver/Pipeline.hs
@@ -1135,7 +1135,8 @@ runPhase (RealPhase (Unlit sf)) input_fn = do
runPhase (RealPhase (Cpp sf)) input_fn
= do
dflags0 <- getDynFlags
- src_opts <- liftIO $ getOptionsFromFile dflags0 input_fn
+ let parser_opts0 = initParserOpts dflags0
+ src_opts <- liftIO $ getOptionsFromFile parser_opts0 input_fn
(dflags1, unhandled_flags, warns)
<- liftIO $ parseDynamicFilePragma dflags0 src_opts
setDynFlags dflags1
@@ -1163,7 +1164,7 @@ runPhase (RealPhase (Cpp sf)) input_fn
input_fn output_fn
-- re-read the pragmas now that we've preprocessed the file
-- See #2464,#3457
- src_opts <- liftIO $ getOptionsFromFile dflags0 output_fn
+ src_opts <- liftIO $ getOptionsFromFile parser_opts0 output_fn
(dflags2, unhandled_flags, warns)
<- liftIO $ parseDynamicFilePragma dflags0 src_opts
setDynFlags dflags2
@@ -1197,7 +1198,8 @@ runPhase (RealPhase (HsPp sf)) input_fn = do
)
-- re-read pragmas now that we've parsed the file (see #3674)
- src_opts <- liftIO $ getOptionsFromFile dflags output_fn
+ let parser_opts = initParserOpts dflags
+ src_opts <- liftIO $ getOptionsFromFile parser_opts output_fn
(dflags1, unhandled_flags, warns)
<- liftIO $ parseDynamicFilePragma dflags src_opts
setDynFlags dflags1