diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-07-11 18:41:40 +0100 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2025-07-11 18:41:40 +0100 |
| commit | 38faec757d4e4648a86fb17a1fda0e2399a3ea19 (patch) | |
| tree | 542316439682ad4a50faeacc3dd1d883fbd74009 /src | |
| parent | e647f560db721e733a4f331e63d23de46193aef6 (diff) | |
Correct consume comment groups in both parsers
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser.cpp | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 942e83f29..f6871c978 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1436,27 +1436,30 @@ gb_internal CommentGroup *consume_comment_group(AstFile *f, isize n, isize *end_ } gb_internal void consume_comment_groups(AstFile *f, Token prev) { - if (f->curr_token.kind == Token_Comment) { - CommentGroup *comment = nullptr; - isize end_line = 0; - - if (f->curr_token.pos.line == prev.pos.line) { - comment = consume_comment_group(f, 0, &end_line); - if (f->curr_token.pos.line != end_line || f->curr_token.kind == Token_EOF) { - f->line_comment = comment; - } - } + if (f->curr_token.kind != Token_Comment) { + return; + } + CommentGroup *comment = nullptr; + isize end_line = 0; - end_line = -1; - while (f->curr_token.kind == Token_Comment) { - comment = consume_comment_group(f, 1, &end_line); - } - if (end_line+1 == f->curr_token.pos.line || end_line < 0) { - f->lead_comment = comment; + if (f->curr_token.pos.line == prev.pos.line) { + comment = consume_comment_group(f, 0, &end_line); + if (f->curr_token.pos.line != end_line || + f->curr_token.pos.line == prev.pos.line+1 || + f->curr_token.kind == Token_EOF) { + f->line_comment = comment; } + } - GB_ASSERT(f->curr_token.kind != Token_Comment); + end_line = -1; + while (f->curr_token.kind == Token_Comment) { + comment = consume_comment_group(f, 1, &end_line); + } + if (end_line+1 == f->curr_token.pos.line || end_line < 0) { + f->lead_comment = comment; } + + GB_ASSERT(f->curr_token.kind != Token_Comment); } gb_internal gb_inline bool ignore_newlines(AstFile *f) { |