[Bug] I forgot the check whether to perform #include or not.

This commit is contained in:
Christian Rinderknecht 2020-05-15 18:31:01 +02:00
parent 7bcf46d3bc
commit b44da17ee0

View File

@ -492,26 +492,28 @@ rule scan state = parse
and file = Lexing.(lexbuf.lex_curr_p.pos_fname) in and file = Lexing.(lexbuf.lex_curr_p.pos_fname) in
let base = Filename.basename file let base = Filename.basename file
and reg, incl_file = scan_inclusion state lexbuf in and reg, incl_file = scan_inclusion state lexbuf in
let incl_dir = Filename.dirname incl_file in if state.mode = Copy then
let path = mk_path state in let incl_dir = Filename.dirname incl_file in
let incl_path, incl_chan = let path = mk_path state in
match find path incl_file state.opt#libs with let incl_path, incl_chan =
Some p -> p match find path incl_file state.opt#libs with
| None -> stop (File_not_found incl_file) state reg in Some p -> p
let () = print state (sprintf "\n# 1 \"%s\" 1\n" incl_path) in | None -> stop (File_not_found incl_file) state reg in
let incl_buf = Lexing.from_channel incl_chan in let () = print state (sprintf "\n# 1 \"%s\" 1\n" incl_path) in
let () = let incl_buf = Lexing.from_channel incl_chan in
let open Lexing in let () =
incl_buf.lex_curr_p <- let open Lexing in
{incl_buf.lex_curr_p with pos_fname = incl_file} in incl_buf.lex_curr_p <-
let state = {state with incl = incl_chan::state.incl} in {incl_buf.lex_curr_p with pos_fname = incl_file} in
let state' = {state with mode=Copy; trace=[]} in let state = {state with incl = incl_chan::state.incl} in
let state' = scan (push_dir incl_dir state') incl_buf in let state' = {state with mode=Copy; trace=[]} in
let state = {state with env=state'.env; incl=state'.incl} in let state' = scan (push_dir incl_dir state') incl_buf in
let path = if path = "" then base let state = {state with env=state'.env; incl=state'.incl} in
else path ^ Filename.dir_sep ^ base in let path = if path = "" then base
print state (sprintf "\n# %i \"%s\" 2" (line+1) path); else path ^ Filename.dir_sep ^ base in
scan state lexbuf let () = print state (sprintf "\n# %i \"%s\" 2" (line+1) path)
in scan state lexbuf
else scan state lexbuf
| "if" -> | "if" ->
let mode = expr state lexbuf in let mode = expr state lexbuf in
let mode = if state.mode = Copy then mode else Skip in let mode = if state.mode = Copy then mode else Skip in