@@ -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 }
0 commit comments