Added note checking to jump parsing
parent
4db6beddd0
commit
76250c4fca
|
@ -42,6 +42,25 @@ try_skip_rust_arrow(String line){
|
||||||
return(pos);
|
return(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool32
|
||||||
|
check_is_note(String line, int32_t colon_pos){
|
||||||
|
bool32 is_note = false;
|
||||||
|
int32_t note_pos = find_substr(line, colon_pos, make_lit_string("note"));
|
||||||
|
if (note_pos < line.size){
|
||||||
|
bool32 is_all_whitespace = true;
|
||||||
|
for (int32_t i = colon_pos; i < note_pos; i += 1){
|
||||||
|
if (!char_is_whitespace(line.str[i])){
|
||||||
|
is_all_whitespace = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (is_all_whitespace){
|
||||||
|
is_note = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(is_note);
|
||||||
|
}
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
parse_jump_location(String line, Name_Line_Column_Location *location, int32_t *colon_char, bool32 *is_sub_error){
|
parse_jump_location(String line, Name_Line_Column_Location *location, int32_t *colon_char, bool32 *is_sub_error){
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
|
@ -60,6 +79,10 @@ parse_jump_location(String line, Name_Line_Column_Location *location, int32_t *c
|
||||||
is_ms_style = true;
|
is_ms_style = true;
|
||||||
colon_pos = find_s_char(line, right_paren_pos, ':');
|
colon_pos = find_s_char(line, right_paren_pos, ':');
|
||||||
if (colon_pos < line.size){
|
if (colon_pos < line.size){
|
||||||
|
if (check_is_note(line, colon_pos)){
|
||||||
|
*is_sub_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
String location_str = substr(line, 0, colon_pos);
|
String location_str = substr(line, 0, colon_pos);
|
||||||
|
|
||||||
location_str = skip_chop_whitespace(location_str);
|
location_str = skip_chop_whitespace(location_str);
|
||||||
|
@ -120,7 +143,11 @@ parse_jump_location(String line, Name_Line_Column_Location *location, int32_t *c
|
||||||
int32_t colon_pos2 = find_s_char(line, colon_pos1 + 1, ':');
|
int32_t colon_pos2 = find_s_char(line, colon_pos1 + 1, ':');
|
||||||
int32_t colon_pos3 = find_s_char(line, colon_pos2 + 1, ':');
|
int32_t colon_pos3 = find_s_char(line, colon_pos2 + 1, ':');
|
||||||
|
|
||||||
if (colon_pos3 + 1 <= line.size){
|
if (colon_pos3 < line.size){
|
||||||
|
if (check_is_note(line, colon_pos3)){
|
||||||
|
*is_sub_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
String filename = substr(line, start, colon_pos1 - start);
|
String filename = substr(line, start, colon_pos1 - start);
|
||||||
String line_number = substr(line, colon_pos1 + 1, colon_pos2 - colon_pos1 - 1);
|
String line_number = substr(line, colon_pos1 + 1, colon_pos2 - colon_pos1 - 1);
|
||||||
String column_number = substr(line, colon_pos2 + 1, colon_pos3 - colon_pos2 - 1);
|
String column_number = substr(line, colon_pos2 + 1, colon_pos3 - colon_pos2 - 1);
|
||||||
|
@ -136,7 +163,11 @@ parse_jump_location(String line, Name_Line_Column_Location *location, int32_t *c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if (colon_pos2 + 1 <= line.size){
|
if (colon_pos2 < line.size){
|
||||||
|
if (check_is_note(line, colon_pos2)){
|
||||||
|
*is_sub_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
String filename = substr(line, 0, colon_pos1);
|
String filename = substr(line, 0, colon_pos1);
|
||||||
String line_number = substr(line, colon_pos1 + 1, colon_pos2 - colon_pos1 - 1);
|
String line_number = substr(line, colon_pos1 + 1, colon_pos2 - colon_pos1 - 1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue