diff --git a/src/config/options.rs b/src/config/options.rs index c0f4bdc135c..3cb836dbf20 100644 --- a/src/config/options.rs +++ b/src/config/options.rs @@ -536,7 +536,14 @@ impl From for rustc_span::edition::Edition { impl PartialOrd for StyleEdition { fn partial_cmp(&self, other: &StyleEdition) -> Option { - rustc_span::edition::Edition::partial_cmp(&(*self).into(), &(*other).into()) + // FIXME(ytmimi): Update the `StyleEdition::Edition2027` logic when the + // `Edition::Edition2027` becomes available in the compiler + match (self, other) { + (Self::Edition2027, Self::Edition2027) => Some(std::cmp::Ordering::Equal), + (_, Self::Edition2027) => Some(std::cmp::Ordering::Less), + (Self::Edition2027, _) => Some(std::cmp::Ordering::Greater), + _ => rustc_span::edition::Edition::partial_cmp(&(*self).into(), &(*other).into()), + } } } @@ -684,3 +691,41 @@ config_option_with_style_edition_default!( MakeBackup, bool, _ => false; PrintMisformattedFileNames, bool, _ => false; ); + +#[test] +fn style_edition_comparisons() { + // Style Edition 2015 + assert!(StyleEdition::Edition2015 == StyleEdition::Edition2015); + assert!(StyleEdition::Edition2015 < StyleEdition::Edition2018); + assert!(StyleEdition::Edition2015 < StyleEdition::Edition2021); + assert!(StyleEdition::Edition2015 < StyleEdition::Edition2024); + assert!(StyleEdition::Edition2015 < StyleEdition::Edition2027); + + // Style Edition 2018 + assert!(StyleEdition::Edition2018 > StyleEdition::Edition2015); + assert!(StyleEdition::Edition2018 == StyleEdition::Edition2018); + assert!(StyleEdition::Edition2018 < StyleEdition::Edition2021); + assert!(StyleEdition::Edition2018 < StyleEdition::Edition2024); + assert!(StyleEdition::Edition2018 < StyleEdition::Edition2027); + + // Style Edition 2021 + assert!(StyleEdition::Edition2021 > StyleEdition::Edition2015); + assert!(StyleEdition::Edition2021 > StyleEdition::Edition2018); + assert!(StyleEdition::Edition2021 == StyleEdition::Edition2021); + assert!(StyleEdition::Edition2021 < StyleEdition::Edition2024); + assert!(StyleEdition::Edition2021 < StyleEdition::Edition2027); + + // Style Edition 2024 + assert!(StyleEdition::Edition2024 > StyleEdition::Edition2015); + assert!(StyleEdition::Edition2024 > StyleEdition::Edition2018); + assert!(StyleEdition::Edition2024 > StyleEdition::Edition2021); + assert!(StyleEdition::Edition2024 == StyleEdition::Edition2024); + assert!(StyleEdition::Edition2024 < StyleEdition::Edition2027); + + // Style Edition 2024 + assert!(StyleEdition::Edition2027 > StyleEdition::Edition2015); + assert!(StyleEdition::Edition2027 > StyleEdition::Edition2018); + assert!(StyleEdition::Edition2027 > StyleEdition::Edition2021); + assert!(StyleEdition::Edition2027 > StyleEdition::Edition2024); + assert!(StyleEdition::Edition2027 == StyleEdition::Edition2027); +}