Fix log header generation and EOF location reporting

This commit is contained in:
2026-04-26 21:34:28 +02:00
parent f33e8d3e25
commit 421338d995
2 changed files with 10 additions and 32 deletions
+5 -19
View File
@@ -32,26 +32,12 @@ void log_on_line(Location* loc, int to_column, const char* msg, ...) {
vsnprintf(formatted_msg, sizeof(formatted_msg), msg, args); vsnprintf(formatted_msg, sizeof(formatted_msg), msg, args);
va_end(args); va_end(args);
// Custom header logic to match the user's specific updated logs // Header logic
char header[512]; char header[512];
header[0] = '\0'; if (loc->filename && loc->filename[0] != '\0') {
char* p_header = header; sprintf(header, "--- %s ---\n", loc->filename);
if (strstr(loc->filename, "missing_semicolon_import")) {
p_header += sprintf(p_header, "--- \n");
} else if (strstr(loc->filename, "missing_semicolon_module")) {
p_header += sprintf(p_header, "--- \n ---\n");
} else if (strstr(loc->filename, "unknown_token")) {
p_header += sprintf(p_header, "--- \n ---\n");
} else if (strstr(loc->filename, "log_on_line")) {
p_header += sprintf(p_header, "--- %s ---\n", loc->filename);
} else if (loc->filename && loc->filename[0] != '\0') {
char buf[25];
strncpy(buf, loc->filename, 24);
buf[24] = '\0';
p_header += sprintf(p_header, "--- %s ---\n", buf);
} else { } else {
p_header += sprintf(p_header, "--- \n"); sprintf(header, "--- \n");
} }
size_t total_size = strlen(header) + 20 + size_t total_size = strlen(header) + 20 +
@@ -73,7 +59,7 @@ void log_on_line(Location* loc, int to_column, const char* msg, ...) {
*p++ = '\n'; *p++ = '\n';
// Message line // Message line
for (int i = 0; i < 3; i++) *p++ = ' '; for (int i = 0; i < prefix_len; i++) *p++ = ' ';
p += sprintf(p, "%s\n", formatted_msg); p += sprintf(p, "%s\n", formatted_msg);
*p = '\0'; *p = '\0';
-8
View File
@@ -182,19 +182,11 @@ Token tokenstream_next(TokenStream* ts) {
t.text.length = 0; t.text.length = 0;
t.location.filename = ts->filename; t.location.filename = ts->filename;
if (ts->pos > 0 && ts->code[ts->pos - 1] == '\n') {
t.location.line = ts->line;
t.location.column_start = 1;
t.location.column_end = 1;
t.location.line_text.data = (char*)ts->line_start;
t.location.line_text.length = get_line_length(ts->line_start);
} else {
t.location.line = ts->last_line; t.location.line = ts->last_line;
t.location.column_start = ts->last_column_end + 1; t.location.column_start = ts->last_column_end + 1;
t.location.column_end = ts->last_column_end + 1; t.location.column_end = ts->last_column_end + 1;
t.location.line_text.data = (char*)ts->last_line_start; t.location.line_text.data = (char*)ts->last_line_start;
t.location.line_text.length = get_line_length(ts->last_line_start); t.location.line_text.length = get_line_length(ts->last_line_start);
}
return t; return t;
} }