Skip to content

Commit ecbd768

Browse files
committed
Ruby: reduce number of diagnostic messages with the status_page flag
For now we only report real parse errors and character encoding errors. Warnings about unexpected or missing nodes in the AST are not reported. These are typically side effects of earlier parse errors.
1 parent d55e9d5 commit ecbd768

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

ruby/extractor/src/extractor.rs

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,12 @@ impl<'a> Visitor<'a> {
274274
);
275275
}
276276

277-
fn record_parse_error_for_node(&mut self, error_message: String, node: Node) {
277+
fn record_parse_error_for_node(
278+
&mut self,
279+
error_message: String,
280+
node: Node,
281+
status_page: bool,
282+
) {
278283
let (start_line, start_column, end_line, end_column) = location_for(self, node);
279284
let loc = location(
280285
self.trap_writer,
@@ -284,14 +289,16 @@ impl<'a> Visitor<'a> {
284289
end_line,
285290
end_column,
286291
);
287-
self.record_parse_error(
288-
loc,
289-
self.diagnostics_writer
290-
.message("parse-error", "Parse error")
291-
.severity(diagnostics::Severity::Error)
292-
.location(self.path, start_line, start_column, end_line, end_column)
293-
.text(&error_message),
294-
);
292+
let mut mesg = self
293+
.diagnostics_writer
294+
.message("parse-error", "Parse error");
295+
&mesg.severity(diagnostics::Severity::Error)
296+
.location(self.path, start_line, start_column, end_line, end_column)
297+
.text(&error_message);
298+
if status_page {
299+
&mesg.status_page();
300+
}
301+
self.record_parse_error(loc, &mesg);
295302
}
296303

297304
fn enter_node(&mut self, node: Node) -> bool {
@@ -301,7 +308,7 @@ impl<'a> Visitor<'a> {
301308
} else {
302309
"parse error".to_string()
303310
};
304-
self.record_parse_error_for_node(error_message, node);
311+
self.record_parse_error_for_node(error_message, node, true);
305312
return false;
306313
}
307314

@@ -390,8 +397,7 @@ impl<'a> Visitor<'a> {
390397
.message("parse-error", "Parse error")
391398
.severity(diagnostics::Severity::Error)
392399
.location(self.path, start_line, start_column, end_line, end_column)
393-
.text(&error_message)
394-
.status_page(),
400+
.text(&error_message),
395401
);
396402

397403
valid = false;
@@ -446,7 +452,7 @@ impl<'a> Visitor<'a> {
446452
child_node.type_name,
447453
field.type_info
448454
);
449-
self.record_parse_error_for_node(error_message, *node);
455+
self.record_parse_error_for_node(error_message, *node,false);
450456
}
451457
} else if child_node.field_name.is_some() || child_node.type_name.named {
452458
let error_message = format!(
@@ -455,7 +461,7 @@ impl<'a> Visitor<'a> {
455461
&child_node.field_name.unwrap_or("child"),
456462
&child_node.type_name
457463
);
458-
self.record_parse_error_for_node(error_message, *node);
464+
self.record_parse_error_for_node(error_message, *node, false);
459465
}
460466
}
461467
let mut args = Vec::new();
@@ -478,7 +484,7 @@ impl<'a> Visitor<'a> {
478484
node.kind(),
479485
column_name
480486
);
481-
self.record_parse_error_for_node(error_message, *node);
487+
self.record_parse_error_for_node(error_message, *node, false);
482488
}
483489
}
484490
Storage::Table {
@@ -494,7 +500,7 @@ impl<'a> Visitor<'a> {
494500
table_name,
495501
);
496502

497-
self.record_parse_error_for_node(error_message, *node);
503+
self.record_parse_error_for_node(error_message, *node, false);
498504
break;
499505
}
500506
let mut args = vec![trap::Arg::Label(parent_id)];
@@ -593,7 +599,6 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize)
593599
.diagnostics_writer
594600
.message("internal-error", "Internal error")
595601
.text("expecting a line break symbol, but none found while correcting end column value")
596-
.status_page()
597602
.severity(diagnostics::Severity::Error),
598603
);
599604
}
@@ -613,7 +618,6 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize)
613618
index,
614619
source.len()
615620
))
616-
.status_page()
617621
.severity(diagnostics::Severity::Error),
618622
);
619623
}

ruby/extractor/src/main.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ fn main() -> std::io::Result<()> {
7575
main_thread_logger
7676
.message("configuration-error", "Configuration error")
7777
.text(&format!("{}; defaulting to 1 thread.", e))
78-
.status_page()
7978
.severity(diagnostics::Severity::Warning),
8079
);
8180
1
@@ -97,7 +96,6 @@ fn main() -> std::io::Result<()> {
9796
main_thread_logger
9897
.message("configuration-error", "Configuration error")
9998
.text(&format!("{}; using gzip.", e))
100-
.status_page()
10199
.severity(diagnostics::Severity::Warning),
102100
);
103101
trap::Compression::Gzip

0 commit comments

Comments
 (0)