Commit 59e7d08d authored by Ian Lynagh's avatar Ian Lynagh

Pass dynflags down through to pragState

so we no longer need to use defaultDynFlags there
parent 2ebfd255
......@@ -613,7 +613,7 @@ runPhase (Unlit sf) _stop hsc_env _basename _suff input_fn get_output_fn maybe_l
runPhase (Cpp sf) _stop hsc_env basename suff input_fn get_output_fn maybe_loc
= do let dflags0 = hsc_dflags hsc_env
src_opts <- getOptionsFromFile input_fn
src_opts <- getOptionsFromFile dflags0 input_fn
(dflags,unhandled_flags) <- parseDynamicFlags dflags0 (map unLoc src_opts)
checkProcessArgsResult unhandled_flags (basename <.> suff)
......
......@@ -1936,7 +1936,7 @@ preprocessFile hsc_env src_fn mb_phase (Just (buf, _time))
let dflags = hsc_dflags hsc_env
-- case we bypass the preprocessing stage?
let
local_opts = getOptions buf src_fn
local_opts = getOptions dflags buf src_fn
--
(dflags', _errs) <- parseDynamicFlags dflags (map unLoc local_opts)
-- XXX: shouldn't we be reporting the errors?
......
......@@ -93,9 +93,10 @@ getImpMod (ImportDecl located_mod _ _ _ _) = located_mod
--------------------------------------------------------------
getOptionsFromFile :: FilePath -- input file
getOptionsFromFile :: DynFlags
-> FilePath -- input file
-> IO [Located String] -- options, if any
getOptionsFromFile filename
getOptionsFromFile dflags filename
= Control.Exception.bracket
(openBinaryFile filename ReadMode)
(hClose)
......@@ -106,7 +107,7 @@ getOptionsFromFile filename
loop handle buf
| len buf == 0 = return []
| otherwise
= case getOptions' buf filename of
= case getOptions' dflags buf filename of
(Nothing, opts) -> return opts
(Just buf', opts) -> do nextBlock <- hGetStringBufferBlock handle blockSize
newBuf <- appendStringBuffers buf' nextBlock
......@@ -115,22 +116,23 @@ getOptionsFromFile filename
else do opts' <- loop handle newBuf
return (opts++opts')
getOptions :: StringBuffer -> FilePath -> [Located String]
getOptions buf filename
= case getOptions' buf filename of
getOptions :: DynFlags -> StringBuffer -> FilePath -> [Located String]
getOptions dflags buf filename
= case getOptions' dflags buf filename of
(_,opts) -> opts
-- The token parser is written manually because Happy can't
-- return a partial result when it encounters a lexer error.
-- We want to extract options before the buffer is passed through
-- CPP, so we can't use the same trick as 'getImports'.
getOptions' :: StringBuffer -- Input buffer
getOptions' :: DynFlags
-> StringBuffer -- Input buffer
-> FilePath -- Source file. Used for msgs only.
-> ( Maybe StringBuffer -- Just => we can use more input
, [Located String] -- Options.
)
getOptions' buf filename
= parseToks (lexAll (pragState buf loc))
getOptions' dflags buf filename
= parseToks (lexAll (pragState dflags buf loc))
where loc = mkSrcLoc (mkFastString filename) 1 0
getToken (_buf,L _loc tok) = tok
......
......@@ -1597,14 +1597,12 @@ qqEnabled flags = testBit flags qqBit
-- PState for parsing options pragmas
--
pragState :: StringBuffer -> SrcLoc -> PState
pragState buf loc =
pragState :: DynFlags -> StringBuffer -> SrcLoc -> PState
pragState dynflags buf loc =
PState {
buffer = buf,
buffer = buf,
messages = emptyMessages,
-- XXX defaultDynFlags is not right, but we don't have a real
-- dflags handy
dflags = defaultDynFlags,
dflags = dynflags,
last_loc = mkSrcSpan loc loc,
last_offs = 0,
last_len = 0,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment