@@ -274,7 +274,12 @@ impl<'a> Visitor<'a> {
274
274
) ;
275
275
}
276
276
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
+ ) {
278
283
let ( start_line, start_column, end_line, end_column) = location_for ( self , node) ;
279
284
let loc = location (
280
285
self . trap_writer ,
@@ -284,14 +289,16 @@ impl<'a> Visitor<'a> {
284
289
end_line,
285
290
end_column,
286
291
) ;
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) ;
295
302
}
296
303
297
304
fn enter_node ( & mut self , node : Node ) -> bool {
@@ -301,7 +308,7 @@ impl<'a> Visitor<'a> {
301
308
} else {
302
309
"parse error" . to_string ( )
303
310
} ;
304
- self . record_parse_error_for_node ( error_message, node) ;
311
+ self . record_parse_error_for_node ( error_message, node, true ) ;
305
312
return false ;
306
313
}
307
314
@@ -390,8 +397,7 @@ impl<'a> Visitor<'a> {
390
397
. message ( "parse-error" , "Parse error" )
391
398
. severity ( diagnostics:: Severity :: Error )
392
399
. location ( self . path , start_line, start_column, end_line, end_column)
393
- . text ( & error_message)
394
- . status_page ( ) ,
400
+ . text ( & error_message) ,
395
401
) ;
396
402
397
403
valid = false ;
@@ -446,7 +452,7 @@ impl<'a> Visitor<'a> {
446
452
child_node. type_name,
447
453
field. type_info
448
454
) ;
449
- self . record_parse_error_for_node ( error_message, * node) ;
455
+ self . record_parse_error_for_node ( error_message, * node, false ) ;
450
456
}
451
457
} else if child_node. field_name . is_some ( ) || child_node. type_name . named {
452
458
let error_message = format ! (
@@ -455,7 +461,7 @@ impl<'a> Visitor<'a> {
455
461
& child_node. field_name. unwrap_or( "child" ) ,
456
462
& child_node. type_name
457
463
) ;
458
- self . record_parse_error_for_node ( error_message, * node) ;
464
+ self . record_parse_error_for_node ( error_message, * node, false ) ;
459
465
}
460
466
}
461
467
let mut args = Vec :: new ( ) ;
@@ -478,7 +484,7 @@ impl<'a> Visitor<'a> {
478
484
node. kind( ) ,
479
485
column_name
480
486
) ;
481
- self . record_parse_error_for_node ( error_message, * node) ;
487
+ self . record_parse_error_for_node ( error_message, * node, false ) ;
482
488
}
483
489
}
484
490
Storage :: Table {
@@ -494,7 +500,7 @@ impl<'a> Visitor<'a> {
494
500
table_name,
495
501
) ;
496
502
497
- self . record_parse_error_for_node ( error_message, * node) ;
503
+ self . record_parse_error_for_node ( error_message, * node, false ) ;
498
504
break ;
499
505
}
500
506
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)
593
599
. diagnostics_writer
594
600
. message ( "internal-error" , "Internal error" )
595
601
. text ( "expecting a line break symbol, but none found while correcting end column value" )
596
- . status_page ( )
597
602
. severity ( diagnostics:: Severity :: Error ) ,
598
603
) ;
599
604
}
@@ -613,7 +618,6 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize)
613
618
index,
614
619
source. len( )
615
620
) )
616
- . status_page ( )
617
621
. severity ( diagnostics:: Severity :: Error ) ,
618
622
) ;
619
623
}
0 commit comments