diff options
author | Lukas Wirth <[email protected]> | 2021-06-08 21:14:30 +0100 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2021-06-08 21:14:30 +0100 |
commit | 31aad2528f53349e9a0601c756d3c9f86ca9154c (patch) | |
tree | d2250c8e6ccb80eb236e1731db9f4e5c80e48e54 /crates/ide_db/src/helpers/insert_use.rs | |
parent | 590472607c9629fdd37e3f6f33dacfdc2a3f56cc (diff) |
Fix edge case for ImportGranularity guessing
Diffstat (limited to 'crates/ide_db/src/helpers/insert_use.rs')
-rw-r--r-- | crates/ide_db/src/helpers/insert_use.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/crates/ide_db/src/helpers/insert_use.rs b/crates/ide_db/src/helpers/insert_use.rs index aa61c5bcb..10bbafe77 100644 --- a/crates/ide_db/src/helpers/insert_use.rs +++ b/crates/ide_db/src/helpers/insert_use.rs | |||
@@ -120,15 +120,19 @@ impl ImportScope { | |||
120 | if eq_visibility(prev_vis, curr_vis.clone()) && eq_attrs(prev_attrs, curr_attrs.clone()) | 120 | if eq_visibility(prev_vis, curr_vis.clone()) && eq_attrs(prev_attrs, curr_attrs.clone()) |
121 | { | 121 | { |
122 | if let Some((prev_path, curr_path)) = prev.path().zip(curr.path()) { | 122 | if let Some((prev_path, curr_path)) = prev.path().zip(curr.path()) { |
123 | if let Some(_) = common_prefix(&prev_path, &curr_path) { | 123 | if let Some((prev_prefix, _)) = common_prefix(&prev_path, &curr_path) { |
124 | if prev.use_tree_list().is_none() && curr.use_tree_list().is_none() { | 124 | if prev.use_tree_list().is_none() && curr.use_tree_list().is_none() { |
125 | // Same prefix but no use tree lists so this has to be of item style. | 125 | let prefix_c = prev_prefix.qualifiers().count(); |
126 | break ImportGranularityGuess::Item; // this overwrites CrateOrModule, technically the file doesn't adhere to anything here. | 126 | let curr_c = curr_path.qualifiers().count() - prefix_c; |
127 | } else { | 127 | let prev_c = prev_path.qualifiers().count() - prefix_c; |
128 | // Same prefix with item tree lists, has to be module style as it | 128 | if curr_c <= 1 || prev_c <= 1 { |
129 | // can't be crate style since the trees wouldn't share a prefix then. | 129 | // Same prefix but no use tree lists so this has to be of item style. |
130 | break ImportGranularityGuess::Module; | 130 | break ImportGranularityGuess::Item; // this overwrites CrateOrModule, technically the file doesn't adhere to anything here. |
131 | } | ||
131 | } | 132 | } |
133 | // Same prefix with item tree lists, has to be module style as it | ||
134 | // can't be crate style since the trees wouldn't share a prefix then. | ||
135 | break ImportGranularityGuess::Module; | ||
132 | } | 136 | } |
133 | } | 137 | } |
134 | } | 138 | } |