fix(query_error): multiline bug

This commit is contained in:
Lewis Russell 2023-08-31 14:11:15 +01:00 committed by Lewis Russell
parent 845d5b8b64
commit dd0e77d48a
2 changed files with 10 additions and 16 deletions

View File

@ -1582,25 +1582,19 @@ static void query_err_string(const char *src, int error_offset, TSQueryError err
int error_line_len = 0;
const char *end_str;
const char *src_tmp = src;
while ((end_str = strchr(src_tmp, '\n')) != NULL) {
int line_length = (int)(end_str - src_tmp) + 1;
do {
const char *src_tmp = src + line_start;
end_str = strchr(src_tmp, '\n');
int line_length = end_str != NULL ? (int)(end_str - src_tmp) : (int)strlen(src_tmp);
int line_end = line_start + line_length;
if (line_end > error_offset) {
error_line = src_tmp;
error_line_len = line_length;
break;
}
line_start = line_end;
line_start = line_end + 1;
row++;
src_tmp += line_length;
}
// Additional check for the last line
if (line_start <= error_offset) {
error_line = src_tmp;
error_line_len = (int)strlen(src_tmp);
}
} while (end_str != NULL);
int column = error_offset - line_start;

View File

@ -1090,9 +1090,9 @@ int x = INT_MAX;
-- Invalid capture name
test(
'.../query.lua:0: Query error at 1:30. Invalid capture name "ok.capture":\n'..
'((identifier) @id (#eq? @id @ok.capture))\n'..
' ^',
'((identifier) @id (#eq? @id @ok.capture))')
'.../query.lua:0: Query error at 3:2. Invalid capture name "ok.capture":\n'..
'@ok.capture\n'..
' ^',
'((identifier) @id \n(#eq? @id\n@ok.capture\n))')
end)
end)