Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
59e7d08d
Commit
59e7d08d
authored
Jun 14, 2008
by
Ian Lynagh
Browse files
Pass dynflags down through to pragState
so we no longer need to use defaultDynFlags there
parent
2ebfd255
Changes
4
Hide whitespace changes
Inline
Side-by-side
compiler/main/DriverPipeline.hs
View file @
59e7d08d
...
...
@@ -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
)
...
...
compiler/main/GHC.hs
View file @
59e7d08d
...
...
@@ -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?
...
...
compiler/main/HeaderInfo.hs
View file @
59e7d08d
...
...
@@ -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
...
...
compiler/parser/Lexer.x
View file @
59e7d08d
...
...
@@ -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,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment