@@ -405,7 +405,18 @@ pub fn fix_maybe_exec_rustc(config: &Config) -> CargoResult<bool> {
405
405
paths:: write ( path, & file. original_code ) ?;
406
406
}
407
407
}
408
- log_failed_fix ( & output. stderr , output. status ) ?;
408
+
409
+ let krate = {
410
+ let mut iter = json_error_rustc. get_args ( ) ;
411
+ let mut krate = None ;
412
+ while let Some ( arg) = iter. next ( ) {
413
+ if arg == "--crate-name" {
414
+ krate = iter. next ( ) . and_then ( |s| s. to_owned ( ) . into_string ( ) . ok ( ) ) ;
415
+ }
416
+ }
417
+ krate
418
+ } ;
419
+ log_failed_fix ( krate, & output. stderr , output. status ) ?;
409
420
}
410
421
}
411
422
@@ -695,7 +706,7 @@ fn exit_with(status: ExitStatus) -> ! {
695
706
process:: exit ( status. code ( ) . unwrap_or ( 3 ) ) ;
696
707
}
697
708
698
- fn log_failed_fix ( stderr : & [ u8 ] , status : ExitStatus ) -> CargoResult < ( ) > {
709
+ fn log_failed_fix ( krate : Option < String > , stderr : & [ u8 ] , status : ExitStatus ) -> CargoResult < ( ) > {
699
710
let stderr = str:: from_utf8 ( stderr) . context ( "failed to parse rustc stderr as utf-8" ) ?;
700
711
701
712
let diagnostics = stderr
@@ -717,19 +728,6 @@ fn log_failed_fix(stderr: &[u8], status: ExitStatus) -> CargoResult<()> {
717
728
. filter ( |x| !x. starts_with ( '{' ) )
718
729
. map ( |x| x. to_string ( ) ) ,
719
730
) ;
720
- let mut krate = None ;
721
- let mut prev_dash_dash_krate_name = false ;
722
- for arg in env:: args ( ) {
723
- if prev_dash_dash_krate_name {
724
- krate = Some ( arg. clone ( ) ) ;
725
- }
726
-
727
- if arg == "--crate-name" {
728
- prev_dash_dash_krate_name = true ;
729
- } else {
730
- prev_dash_dash_krate_name = false ;
731
- }
732
- }
733
731
734
732
let files = files. into_iter ( ) . collect ( ) ;
735
733
let abnormal_exit = if status. code ( ) . map_or ( false , is_simple_exit_code) {
0 commit comments