| TDefine ii::xs ->
let line = Ast_c.line_of_info ii in
let acc = (TDefine ii) :: acc in
- define_line_2 acc line ii xs
+ define_line_2 acc ((=|=) line) ii xs
| TUndef ii::xs ->
let line = Ast_c.line_of_info ii in
let acc = (TUndef ii) :: acc in
- define_line_2 acc line ii xs
+ define_line_2 acc ((=|=) line) ii xs
| TCppEscapedNewline ii::xs ->
pr2 ("SUSPICIOUS: a \\ character appears outside of a #define at");
pr2 (Ast_c.strloc_of_info ii);
define_line_1 acc xs
| x::xs -> define_line_1 (x::acc) xs
-and define_line_2 acc line lastinfo xs =
+and define_line_2 acc lineOk lastinfo xs =
match xs with
| [] ->
(* should not happened, should meet EOF before *)
pr2 "PB: WEIRD";
List.rev (mark_end_define lastinfo::acc)
| x::xs ->
- let line' = TH.line_of_tok x in
+ let line = TH.line_of_tok x in
let info = TH.info_of_tok x in
(match x with
let acc = (EOF ii) :: acc in
define_line_1 acc xs
| TCppEscapedNewline ii ->
- if (line' <> line) then pr2 "PB: WEIRD: not same line number";
+ if not (lineOk line) then pr2 "PB: WEIRD: not same line number";
let acc = (TCommentSpace ii) :: acc in
- define_line_2 acc (line+1) info xs
+ define_line_2 acc ((=|=) (line + 1)) info xs
+ | TComment _ when lineOk line ->
+ define_line_2 (x::acc) (function x -> true) info xs
+ | TString _ when lineOk line ->
+ define_line_2 (x::acc) (function x -> true) info xs
| x ->
- if line' =|= line
- then define_line_2 (x::acc) line info xs
+ if lineOk line
+ then define_line_2 (x::acc) ((=|=) line) info xs
else
(* Put end of line token before the newline. A newline at least
must be there because the line changed and because we saw a