@@ -509,11 +509,11 @@ pub enum StashKey {
509509 Cycle ,
510510}
511511
512- fn default_track_diagnostic ( d : & mut Diagnostic , f : & mut dyn FnMut ( & mut Diagnostic ) ) {
513- ( * f) ( d )
512+ fn default_track_diagnostic ( diag : Diagnostic , f : & mut dyn FnMut ( Diagnostic ) ) {
513+ ( * f) ( diag )
514514}
515515
516- pub static TRACK_DIAGNOSTICS : AtomicRef < fn ( & mut Diagnostic , & mut dyn FnMut ( & mut Diagnostic ) ) > =
516+ pub static TRACK_DIAGNOSTICS : AtomicRef < fn ( Diagnostic , & mut dyn FnMut ( Diagnostic ) ) > =
517517 AtomicRef :: new ( & ( default_track_diagnostic as _ ) ) ;
518518
519519#[ derive( Copy , Clone , Default ) ]
@@ -1074,17 +1074,8 @@ impl DiagCtxt {
10741074 self . inner . borrow_mut ( ) . emitter . emit_diagnostic ( & db) ;
10751075 }
10761076
1077- pub fn emit_diagnostic ( & self , mut diagnostic : Diagnostic ) -> Option < ErrorGuaranteed > {
1078- self . emit_diagnostic_without_consuming ( & mut diagnostic)
1079- }
1080-
1081- // It's unfortunate this exists. `emit_diagnostic` is preferred, because it
1082- // consumes the diagnostic, thus ensuring it is emitted just once.
1083- pub ( crate ) fn emit_diagnostic_without_consuming (
1084- & self ,
1085- diagnostic : & mut Diagnostic ,
1086- ) -> Option < ErrorGuaranteed > {
1087- self . inner . borrow_mut ( ) . emit_diagnostic_without_consuming ( diagnostic)
1077+ pub fn emit_diagnostic ( & self , diagnostic : Diagnostic ) -> Option < ErrorGuaranteed > {
1078+ self . inner . borrow_mut ( ) . emit_diagnostic ( diagnostic)
10881079 }
10891080
10901081 #[ track_caller]
@@ -1273,13 +1264,6 @@ impl DiagCtxtInner {
12731264 }
12741265
12751266 fn emit_diagnostic ( & mut self , mut diagnostic : Diagnostic ) -> Option < ErrorGuaranteed > {
1276- self . emit_diagnostic_without_consuming ( & mut diagnostic)
1277- }
1278-
1279- fn emit_diagnostic_without_consuming (
1280- & mut self ,
1281- diagnostic : & mut Diagnostic ,
1282- ) -> Option < ErrorGuaranteed > {
12831267 if matches ! ( diagnostic. level, Error | Fatal ) && self . treat_err_as_bug ( ) {
12841268 diagnostic. level = Bug ;
12851269 }
@@ -1335,7 +1319,7 @@ impl DiagCtxtInner {
13351319 }
13361320
13371321 let mut guaranteed = None ;
1338- ( * TRACK_DIAGNOSTICS ) ( diagnostic, & mut |diagnostic| {
1322+ ( * TRACK_DIAGNOSTICS ) ( diagnostic, & mut |mut diagnostic| {
13391323 if let Some ( ref code) = diagnostic. code {
13401324 self . emitted_diagnostic_codes . insert ( code. clone ( ) ) ;
13411325 }
@@ -1371,7 +1355,7 @@ impl DiagCtxtInner {
13711355 ) ;
13721356 }
13731357
1374- self . emitter . emit_diagnostic ( diagnostic) ;
1358+ self . emitter . emit_diagnostic ( & diagnostic) ;
13751359 if diagnostic. is_error ( ) {
13761360 self . deduplicated_err_count += 1 ;
13771361 } else if let Warning ( _) = diagnostic. level {
0 commit comments