Skip to content

Commit 456026d

Browse files
ytmimicalebcartwright
authored andcommitted
use version-sort when reordering imports using style_edition=2024
1 parent 2b0ce7f commit 456026d

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

Diff for: src/imports.rs

+23-17
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use crate::lists::{
2121
};
2222
use crate::rewrite::{Rewrite, RewriteContext, RewriteErrorExt, RewriteResult};
2323
use crate::shape::Shape;
24+
use crate::sort::version_sort;
2425
use crate::source_map::SpanUtils;
2526
use crate::spanned::Spanned;
2627
use crate::utils::{is_same_visibility, mk_sp, rewrite_ident};
@@ -923,7 +924,7 @@ impl Ord for UseSegment {
923924
| (Crate(ref a), Crate(ref b)) => match (a, b) {
924925
(Some(sa), Some(sb)) => {
925926
if self.style_edition >= StyleEdition::Edition2024 {
926-
sa.trim_start_matches("r#").cmp(sb.trim_start_matches("r#"))
927+
version_sort(sa.trim_start_matches("r#"), sb.trim_start_matches("r#"))
927928
} else {
928929
a.cmp(b)
929930
}
@@ -937,20 +938,26 @@ impl Ord for UseSegment {
937938
} else {
938939
(pia.as_str(), pib.as_str())
939940
};
940-
// snake_case < CamelCase < UPPER_SNAKE_CASE
941-
if ia.starts_with(char::is_uppercase) && ib.starts_with(char::is_lowercase) {
942-
return Ordering::Greater;
943-
}
944-
if ia.starts_with(char::is_lowercase) && ib.starts_with(char::is_uppercase) {
945-
return Ordering::Less;
946-
}
947-
if is_upper_snake_case(ia) && !is_upper_snake_case(ib) {
948-
return Ordering::Greater;
949-
}
950-
if !is_upper_snake_case(ia) && is_upper_snake_case(ib) {
951-
return Ordering::Less;
952-
}
953-
let ident_ord = ia.cmp(ib);
941+
942+
let ident_ord = if self.style_edition >= StyleEdition::Edition2024 {
943+
version_sort(ia, ib)
944+
} else {
945+
// snake_case < CamelCase < UPPER_SNAKE_CASE
946+
if ia.starts_with(char::is_uppercase) && ib.starts_with(char::is_lowercase) {
947+
return Ordering::Greater;
948+
}
949+
if ia.starts_with(char::is_lowercase) && ib.starts_with(char::is_uppercase) {
950+
return Ordering::Less;
951+
}
952+
if is_upper_snake_case(ia) && !is_upper_snake_case(ib) {
953+
return Ordering::Greater;
954+
}
955+
if !is_upper_snake_case(ia) && is_upper_snake_case(ib) {
956+
return Ordering::Less;
957+
}
958+
ia.cmp(ib)
959+
};
960+
954961
if ident_ord != Ordering::Equal {
955962
return ident_ord;
956963
}
@@ -959,8 +966,7 @@ impl Ord for UseSegment {
959966
(Some(_), None) => Ordering::Greater,
960967
(Some(aas), Some(abs)) => {
961968
if self.style_edition >= StyleEdition::Edition2024 {
962-
aas.trim_start_matches("r#")
963-
.cmp(abs.trim_start_matches("r#"))
969+
version_sort(aas.trim_start_matches("r#"), abs.trim_start_matches("r#"))
964970
} else {
965971
aas.cmp(abs)
966972
}

0 commit comments

Comments
 (0)