@@ -774,7 +774,7 @@ fn report_latest(possibilities: &[IndexSummary], change: &PackageChange) -> Opti
774
774
let version_req = package_id. version ( ) . to_caret_req ( ) ;
775
775
let required_rust_version = change. required_rust_version . as_ref ( ) ;
776
776
777
- if let Some ( summary ) = possibilities
777
+ let compat_ver_compat_msrv_summary = possibilities
778
778
. iter ( )
779
779
. map ( |s| s. as_summary ( ) )
780
780
. filter ( |s| {
@@ -787,45 +787,43 @@ fn report_latest(possibilities: &[IndexSummary], change: &PackageChange) -> Opti
787
787
}
788
788
} )
789
789
. filter ( |s| package_id. version ( ) != s. version ( ) && version_req. matches ( s. version ( ) ) )
790
- . max_by_key ( |s| s. version ( ) )
791
- {
790
+ . max_by_key ( |s| s. version ( ) ) ;
791
+ if let Some ( summary ) = compat_ver_compat_msrv_summary {
792
792
let warn = style:: WARN ;
793
793
let version = summary. version ( ) ;
794
794
let report = format ! ( " {warn}(available: v{version}){warn:#}" ) ;
795
795
return Some ( report) ;
796
796
}
797
797
798
- if let Some ( summary) = possibilities
799
- . iter ( )
800
- . map ( |s| s. as_summary ( ) )
801
- . filter ( |s| {
802
- if let ( Some ( summary_rust_version) , Some ( required_rust_version) ) =
803
- ( s. rust_version ( ) , required_rust_version)
804
- {
805
- summary_rust_version. is_compatible_with ( required_rust_version)
806
- } else {
807
- true
808
- }
809
- } )
810
- . filter ( |s| is_latest ( s. version ( ) , package_id. version ( ) ) )
811
- . max_by_key ( |s| s. version ( ) )
812
- {
813
- let warn = if change. is_transitive . unwrap_or ( true ) {
814
- Default :: default ( )
815
- } else {
816
- style:: WARN
817
- } ;
818
- let version = summary. version ( ) ;
819
- let report = format ! ( " {warn}(available: v{version}){warn:#}" ) ;
820
- return Some ( report) ;
798
+ if !change. is_transitive . unwrap_or ( true ) {
799
+ let incompat_ver_compat_msrv_summary = possibilities
800
+ . iter ( )
801
+ . map ( |s| s. as_summary ( ) )
802
+ . filter ( |s| {
803
+ if let ( Some ( summary_rust_version) , Some ( required_rust_version) ) =
804
+ ( s. rust_version ( ) , required_rust_version)
805
+ {
806
+ summary_rust_version. is_compatible_with ( required_rust_version)
807
+ } else {
808
+ true
809
+ }
810
+ } )
811
+ . filter ( |s| is_latest ( s. version ( ) , package_id. version ( ) ) )
812
+ . max_by_key ( |s| s. version ( ) ) ;
813
+ if let Some ( summary) = incompat_ver_compat_msrv_summary {
814
+ let warn = style:: WARN ;
815
+ let version = summary. version ( ) ;
816
+ let report = format ! ( " {warn}(available: v{version}){warn:#}" ) ;
817
+ return Some ( report) ;
818
+ }
821
819
}
822
820
823
- if let Some ( summary ) = possibilities
821
+ let compat_ver_summary = possibilities
824
822
. iter ( )
825
823
. map ( |s| s. as_summary ( ) )
826
824
. filter ( |s| package_id. version ( ) != s. version ( ) && version_req. matches ( s. version ( ) ) )
827
- . max_by_key ( |s| s. version ( ) )
828
- {
825
+ . max_by_key ( |s| s. version ( ) ) ;
826
+ if let Some ( summary ) = compat_ver_summary {
829
827
let msrv_note = summary
830
828
. rust_version ( )
831
829
. map ( |rv| format ! ( ", requires Rust {rv}" ) )
@@ -836,20 +834,22 @@ fn report_latest(possibilities: &[IndexSummary], change: &PackageChange) -> Opti
836
834
return Some ( report) ;
837
835
}
838
836
839
- if let Some ( summary) = possibilities
840
- . iter ( )
841
- . map ( |s| s. as_summary ( ) )
842
- . filter ( |s| is_latest ( s. version ( ) , package_id. version ( ) ) )
843
- . max_by_key ( |s| s. version ( ) )
844
- {
845
- let msrv_note = summary
846
- . rust_version ( )
847
- . map ( |rv| format ! ( ", requires Rust {rv}" ) )
848
- . unwrap_or_default ( ) ;
849
- let warn = style:: NOP ;
850
- let version = summary. version ( ) ;
851
- let report = format ! ( " {warn}(available: v{version}{msrv_note}){warn:#}" ) ;
852
- return Some ( report) ;
837
+ if !change. is_transitive . unwrap_or ( true ) {
838
+ let incompat_ver_summary = possibilities
839
+ . iter ( )
840
+ . map ( |s| s. as_summary ( ) )
841
+ . filter ( |s| is_latest ( s. version ( ) , package_id. version ( ) ) )
842
+ . max_by_key ( |s| s. version ( ) ) ;
843
+ if let Some ( summary) = incompat_ver_summary {
844
+ let msrv_note = summary
845
+ . rust_version ( )
846
+ . map ( |rv| format ! ( ", requires Rust {rv}" ) )
847
+ . unwrap_or_default ( ) ;
848
+ let warn = style:: NOP ;
849
+ let version = summary. version ( ) ;
850
+ let report = format ! ( " {warn}(available: v{version}{msrv_note}){warn:#}" ) ;
851
+ return Some ( report) ;
852
+ }
853
853
}
854
854
855
855
None
0 commit comments