@@ -3,6 +3,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
3
3
4
4
use rustc_data_structures:: sync:: { IntoDynSyncSend , Lrc } ;
5
5
use rustc_errors:: emitter:: { DynEmitter , Emitter , HumanEmitter , SilentEmitter , stderr_destination} ;
6
+ use rustc_errors:: registry:: Registry ;
6
7
use rustc_errors:: translation:: Translate ;
7
8
use rustc_errors:: { ColorConfig , Diag , DiagCtxt , DiagInner , Level as DiagnosticLevel } ;
8
9
use rustc_session:: parse:: ParseSess as RawParseSess ;
@@ -38,10 +39,10 @@ struct SilentOnIgnoredFilesEmitter {
38
39
}
39
40
40
41
impl SilentOnIgnoredFilesEmitter {
41
- fn handle_non_ignoreable_error ( & mut self , diag : DiagInner ) {
42
+ fn handle_non_ignoreable_error ( & mut self , diag : DiagInner , registry : & Registry ) {
42
43
self . has_non_ignorable_parser_errors = true ;
43
44
self . can_reset . store ( false , Ordering :: Release ) ;
44
- self . emitter . emit_diagnostic ( diag) ;
45
+ self . emitter . emit_diagnostic ( diag, registry ) ;
45
46
}
46
47
}
47
48
@@ -60,9 +61,9 @@ impl Emitter for SilentOnIgnoredFilesEmitter {
60
61
None
61
62
}
62
63
63
- fn emit_diagnostic ( & mut self , diag : DiagInner ) {
64
+ fn emit_diagnostic ( & mut self , diag : DiagInner , registry : & Registry ) {
64
65
if diag. level ( ) == DiagnosticLevel :: Fatal {
65
- return self . handle_non_ignoreable_error ( diag) ;
66
+ return self . handle_non_ignoreable_error ( diag, registry ) ;
66
67
}
67
68
if let Some ( primary_span) = & diag. span . primary_span ( ) {
68
69
let file_name = self . source_map . span_to_filename ( * primary_span) ;
@@ -80,7 +81,7 @@ impl Emitter for SilentOnIgnoredFilesEmitter {
80
81
}
81
82
} ;
82
83
}
83
- self . handle_non_ignoreable_error ( diag) ;
84
+ self . handle_non_ignoreable_error ( diag, registry ) ;
84
85
}
85
86
}
86
87
@@ -358,7 +359,7 @@ mod tests {
358
359
None
359
360
}
360
361
361
- fn emit_diagnostic ( & mut self , _diag : DiagInner ) {
362
+ fn emit_diagnostic ( & mut self , _diag : DiagInner , _registry : & Registry ) {
362
363
self . num_emitted_errors . fetch_add ( 1 , Ordering :: Release ) ;
363
364
}
364
365
}
@@ -412,6 +413,7 @@ mod tests {
412
413
SourceMapFileName :: Real ( RealFileName :: LocalPath ( PathBuf :: from ( "foo.rs" ) ) ) ,
413
414
source,
414
415
) ;
416
+ let registry = Registry :: new ( & [ ] ) ;
415
417
let mut emitter = build_emitter (
416
418
Lrc :: clone ( & num_emitted_errors) ,
417
419
Lrc :: clone ( & can_reset_errors) ,
@@ -420,7 +422,7 @@ mod tests {
420
422
) ;
421
423
let span = MultiSpan :: from_span ( mk_sp ( BytePos ( 0 ) , BytePos ( 1 ) ) ) ;
422
424
let fatal_diagnostic = build_diagnostic ( DiagnosticLevel :: Fatal , Some ( span) ) ;
423
- emitter. emit_diagnostic ( fatal_diagnostic) ;
425
+ emitter. emit_diagnostic ( fatal_diagnostic, & registry ) ;
424
426
assert_eq ! ( num_emitted_errors. load( Ordering :: Acquire ) , 1 ) ;
425
427
assert_eq ! ( can_reset_errors. load( Ordering :: Acquire ) , false ) ;
426
428
}
@@ -437,6 +439,7 @@ mod tests {
437
439
SourceMapFileName :: Real ( RealFileName :: LocalPath ( PathBuf :: from ( "foo.rs" ) ) ) ,
438
440
source,
439
441
) ;
442
+ let registry = Registry :: new ( & [ ] ) ;
440
443
let mut emitter = build_emitter (
441
444
Lrc :: clone ( & num_emitted_errors) ,
442
445
Lrc :: clone ( & can_reset_errors) ,
@@ -445,7 +448,7 @@ mod tests {
445
448
) ;
446
449
let span = MultiSpan :: from_span ( mk_sp ( BytePos ( 0 ) , BytePos ( 1 ) ) ) ;
447
450
let non_fatal_diagnostic = build_diagnostic ( DiagnosticLevel :: Warning , Some ( span) ) ;
448
- emitter. emit_diagnostic ( non_fatal_diagnostic) ;
451
+ emitter. emit_diagnostic ( non_fatal_diagnostic, & registry ) ;
449
452
assert_eq ! ( num_emitted_errors. load( Ordering :: Acquire ) , 0 ) ;
450
453
assert_eq ! ( can_reset_errors. load( Ordering :: Acquire ) , true ) ;
451
454
}
@@ -461,6 +464,7 @@ mod tests {
461
464
SourceMapFileName :: Real ( RealFileName :: LocalPath ( PathBuf :: from ( "foo.rs" ) ) ) ,
462
465
source,
463
466
) ;
467
+ let registry = Registry :: new ( & [ ] ) ;
464
468
let mut emitter = build_emitter (
465
469
Lrc :: clone ( & num_emitted_errors) ,
466
470
Lrc :: clone ( & can_reset_errors) ,
@@ -469,7 +473,7 @@ mod tests {
469
473
) ;
470
474
let span = MultiSpan :: from_span ( mk_sp ( BytePos ( 0 ) , BytePos ( 1 ) ) ) ;
471
475
let non_fatal_diagnostic = build_diagnostic ( DiagnosticLevel :: Warning , Some ( span) ) ;
472
- emitter. emit_diagnostic ( non_fatal_diagnostic) ;
476
+ emitter. emit_diagnostic ( non_fatal_diagnostic, & registry ) ;
473
477
assert_eq ! ( num_emitted_errors. load( Ordering :: Acquire ) , 1 ) ;
474
478
assert_eq ! ( can_reset_errors. load( Ordering :: Acquire ) , false ) ;
475
479
}
@@ -497,6 +501,7 @@ mod tests {
497
501
SourceMapFileName :: Real ( RealFileName :: LocalPath ( PathBuf :: from ( "fatal.rs" ) ) ) ,
498
502
fatal_source,
499
503
) ;
504
+ let registry = Registry :: new ( & [ ] ) ;
500
505
let mut emitter = build_emitter (
501
506
Lrc :: clone ( & num_emitted_errors) ,
502
507
Lrc :: clone ( & can_reset_errors) ,
@@ -508,9 +513,9 @@ mod tests {
508
513
let bar_diagnostic = build_diagnostic ( DiagnosticLevel :: Warning , Some ( bar_span) ) ;
509
514
let foo_diagnostic = build_diagnostic ( DiagnosticLevel :: Warning , Some ( foo_span) ) ;
510
515
let fatal_diagnostic = build_diagnostic ( DiagnosticLevel :: Fatal , None ) ;
511
- emitter. emit_diagnostic ( bar_diagnostic) ;
512
- emitter. emit_diagnostic ( foo_diagnostic) ;
513
- emitter. emit_diagnostic ( fatal_diagnostic) ;
516
+ emitter. emit_diagnostic ( bar_diagnostic, & registry ) ;
517
+ emitter. emit_diagnostic ( foo_diagnostic, & registry ) ;
518
+ emitter. emit_diagnostic ( fatal_diagnostic, & registry ) ;
514
519
assert_eq ! ( num_emitted_errors. load( Ordering :: Acquire ) , 2 ) ;
515
520
assert_eq ! ( can_reset_errors. load( Ordering :: Acquire ) , false ) ;
516
521
}
0 commit comments