Update log_on_line to take Location* instead of individual fields
This commit is contained in:
@@ -18,11 +18,11 @@ void log_error(const char* msg) {
|
||||
}
|
||||
}
|
||||
|
||||
void log_on_line(const char* filename, const char* line_text, int line, int from, int to, const char* msg, ...) {
|
||||
void log_on_line(Location* loc, int to_column, const char* msg, ...) {
|
||||
char line_prefix[32];
|
||||
int prefix_len = snprintf(line_prefix, sizeof(line_prefix), "%d| ", line);
|
||||
int prefix_len = snprintf(line_prefix, sizeof(line_prefix), "%d| ", loc->line);
|
||||
|
||||
int caret_len = to - from + 1;
|
||||
int caret_len = to_column - loc->column + 1;
|
||||
if (caret_len < 1) caret_len = 1;
|
||||
|
||||
// Format the message
|
||||
@@ -32,9 +32,9 @@ void log_on_line(const char* filename, const char* line_text, int line, int from
|
||||
vsnprintf(formatted_msg, sizeof(formatted_msg), msg, args);
|
||||
va_end(args);
|
||||
|
||||
size_t total_size = strlen(filename) + 16 + // --- filename ---
|
||||
prefix_len + strlen(line_text) + 2 + // line| text\n
|
||||
prefix_len + from - 1 + caret_len + 2 + // indent + ^^\n
|
||||
size_t total_size = strlen(loc->filename) + 16 + // --- filename ---
|
||||
prefix_len + strlen(loc->line_text) + 2 + // line| text\n
|
||||
prefix_len + loc->column - 1 + caret_len + 2 + // indent + ^^\n
|
||||
prefix_len + strlen(formatted_msg) + 2 + // indent + msg\n
|
||||
1;
|
||||
|
||||
@@ -42,11 +42,11 @@ void log_on_line(const char* filename, const char* line_text, int line, int from
|
||||
if (!buffer) return;
|
||||
|
||||
char* p = buffer;
|
||||
p += sprintf(p, "--- %s ---\n", filename);
|
||||
p += sprintf(p, "%s%s\n", line_prefix, line_text);
|
||||
p += sprintf(p, "--- %s ---\n", loc->filename);
|
||||
p += sprintf(p, "%s%s\n", line_prefix, loc->line_text);
|
||||
|
||||
// Caret line
|
||||
for (int i = 0; i < prefix_len + from - 1; i++) *p++ = ' ';
|
||||
for (int i = 0; i < prefix_len + loc->column - 1; i++) *p++ = ' ';
|
||||
for (int i = 0; i < caret_len; i++) *p++ = '^';
|
||||
*p++ = '\n';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user