aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorFeoramund <161657516+Feoramund@users.noreply.github.com>2024-06-14 11:51:03 -0400
committerFeoramund <161657516+Feoramund@users.noreply.github.com>2024-06-14 11:51:03 -0400
commitca481dc52d86a6856abba7481bc849a864f0183d (patch)
tree16505bd16cbd3b1af9c66fe7a332de7e9f29684b /src/parser.cpp
parentff4787070d9673a417f549f1b9452e675c96f992 (diff)
Fix displaying error on wrong line with token at EOL
Previously, this would get a token on text like "\n*\n" where `*` is the token's position, and it would advance off that line.
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 0cd96f5b5..468f4749f 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -51,6 +51,12 @@ gb_internal gbString get_file_line_as_string(TokenPos const &pos, i32 *offset_)
u8 *line_start = pos_offset;
u8 *line_end = pos_offset;
+
+ if (offset > 0 && *line_start == '\n') {
+ // Prevent an error token that starts at the boundary of a line that
+ // leads to an empty line from advancing off its line.
+ line_start -= 1;
+ }
while (line_start >= start) {
if (*line_start == '\n') {
line_start += 1;