Skip to content

Commit 9e16646

Browse files
committed
Rewrite paths ending in ::self to ::{self}.
1 parent 47fc453 commit 9e16646

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

src/formatting/imports.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,16 @@ pub(crate) fn merge_use_trees(use_trees: Vec<UseTree>, merge_by: SharedPrefix) -
179179
}
180180
}
181181
}
182+
for merged in result.iter_mut() {
183+
// If a path ends with `::self`, rewrite it to `::{self}`.
184+
if let Some(UseSegment::Slf(..)) = merged.path.last_mut() {
185+
let slf_segment = merged.path.pop().unwrap();
186+
merged.path.push(UseSegment::List(vec![UseTree::from_path(
187+
vec![slf_segment],
188+
DUMMY_SP,
189+
)]));
190+
}
191+
}
182192
result
183193
}
184194

@@ -550,11 +560,6 @@ impl UseTree {
550560
fn flatten(self) -> Vec<UseTree> {
551561
match self.path.last() {
552562
Some(UseSegment::List(list)) => {
553-
if list.len() == 1 && list[0].path.len() == 1 {
554-
if let UseSegment::Slf(..) = list[0].path[0] {
555-
return vec![self];
556-
};
557-
}
558563
let prefix = &self.path[..self.path.len() - 1];
559564
let mut result = vec![];
560565
for nested_use_tree in list {
@@ -1086,7 +1091,7 @@ mod test {
10861091
test_merge!(
10871092
NoPrefix,
10881093
["foo::{self, a, b::{c, d}, e::*}"],
1089-
["foo::self", "foo::a", "foo::b::c", "foo::b::d", "foo::e::*"]
1094+
["foo::{self}", "foo::a", "foo::b::c", "foo::b::d", "foo::e::*"]
10901095
)
10911096
}
10921097

src/formatting/reorder.rs

-5
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,6 @@ fn rewrite_reorderable_or_regroupable_items(
238238
}
239239
ImportGranularity::Preserve => normalized_items,
240240
};
241-
for item in normalized_items.iter_mut() {
242-
if let Some(UseSegment::Slf(None)) = item.path.last() {
243-
item.path.pop().unwrap();
244-
}
245-
}
246241

247242
let mut regrouped_items = match context.config.group_imports() {
248243
GroupImportsTactic::Preserve => vec![normalized_items],

tests/target/imports_granularity_item.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use a::d;
66
use a::f::g;
77
use a::h::i;
88
use a::h::j;
9-
use a::l;
109
use a::l::m;
1110
use a::l::n::o;
1211
use a::l::p::*;
12+
use a::l::{self};
1313
use a::q::{self};

0 commit comments

Comments
 (0)