Skip to content

Commit 0a913fd

Browse files
bors[bot]matklad
andauthored
Merge #7812
7812: Use consistent naming for assist r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2 parents 358b9a5 + 406d96c commit 0a913fd

File tree

5 files changed

+60
-40
lines changed

5 files changed

+60
-40
lines changed

crates/ide_assists/src/handlers/convert_for_to_iter_for_each.rs renamed to crates/ide_assists/src/handlers/replace_for_loop_with_for_each.rs

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@ use hir::known;
33
use ide_db::helpers::FamousDefs;
44
use stdx::format_to;
55
use syntax::{ast, AstNode};
6+
use test_utils::mark;
67

78
use crate::{AssistContext, AssistId, AssistKind, Assists};
89

9-
// Assist: convert_for_to_iter_for_each
10+
// Assist: replace_for_loop_with_for_each
1011
//
1112
// Converts a for loop into a for_each loop on the Iterator.
1213
//
1314
// ```
1415
// fn main() {
1516
// let x = vec![1, 2, 3];
16-
// for $0v in x {
17+
// for$0 v in x {
1718
// let y = v * 2;
1819
// }
1920
// }
@@ -27,15 +28,19 @@ use crate::{AssistContext, AssistId, AssistKind, Assists};
2728
// });
2829
// }
2930
// ```
30-
pub(crate) fn convert_for_to_iter_for_each(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
31+
pub(crate) fn replace_for_loop_with_for_each(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
3132
let for_loop = ctx.find_node_at_offset::<ast::ForExpr>()?;
3233
let iterable = for_loop.iterable()?;
3334
let pat = for_loop.pat()?;
3435
let body = for_loop.loop_body()?;
36+
if body.syntax().text_range().start() < ctx.offset() {
37+
mark::hit!(not_available_in_body);
38+
return None;
39+
}
3540

3641
acc.add(
37-
AssistId("convert_for_to_iter_for_each", AssistKind::RefactorRewrite),
38-
"Convert a for loop into an Iterator::for_each",
42+
AssistId("replace_for_loop_with_for_each", AssistKind::RefactorRewrite),
43+
"Replace this for loop with `Iterator::for_each`",
3944
for_loop.syntax().text_range(),
4045
|builder| {
4146
let mut buf = String::new();
@@ -145,13 +150,13 @@ pub struct NoIterMethod;
145150
FamousDefs::FIXTURE,
146151
EMPTY_ITER_FIXTURE
147152
);
148-
check_assist(convert_for_to_iter_for_each, before, after);
153+
check_assist(replace_for_loop_with_for_each, before, after);
149154
}
150155

151156
#[test]
152157
fn test_not_for() {
153158
check_assist_not_applicable(
154-
convert_for_to_iter_for_each,
159+
replace_for_loop_with_for_each,
155160
r"
156161
let mut x = vec![1, 2, 3];
157162
x.iter_mut().$0for_each(|v| *v *= 2);
@@ -162,7 +167,7 @@ x.iter_mut().$0for_each(|v| *v *= 2);
162167
#[test]
163168
fn test_simple_for() {
164169
check_assist(
165-
convert_for_to_iter_for_each,
170+
replace_for_loop_with_for_each,
166171
r"
167172
fn main() {
168173
let x = vec![1, 2, 3];
@@ -180,6 +185,21 @@ fn main() {
180185
)
181186
}
182187

188+
#[test]
189+
fn not_available_in_body() {
190+
mark::check!(not_available_in_body);
191+
check_assist_not_applicable(
192+
replace_for_loop_with_for_each,
193+
r"
194+
fn main() {
195+
let x = vec![1, 2, 3];
196+
for v in x {
197+
$0v *= 2;
198+
}
199+
}",
200+
)
201+
}
202+
183203
#[test]
184204
fn test_for_borrowed() {
185205
check_assist_with_fixtures(
@@ -255,7 +275,7 @@ fn main() {
255275
#[test]
256276
fn test_for_borrowed_mut_behind_var() {
257277
check_assist(
258-
convert_for_to_iter_for_each,
278+
replace_for_loop_with_for_each,
259279
r"
260280
fn main() {
261281
let x = vec![1, 2, 3];

crates/ide_assists/src/handlers/replace_let_with_if_let.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::iter::once;
22

3+
use ide_db::ty_filter::TryEnum;
34
use syntax::{
45
ast::{
56
self,
@@ -10,7 +11,6 @@ use syntax::{
1011
};
1112

1213
use crate::{AssistContext, AssistId, AssistKind, Assists};
13-
use ide_db::ty_filter::TryEnum;
1414

1515
// Assist: replace_let_with_if_let
1616
//

crates/ide_assists/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ mod handlers {
114114
mod apply_demorgan;
115115
mod auto_import;
116116
mod change_visibility;
117-
mod convert_for_to_iter_for_each;
118117
mod convert_integer_literal;
119118
mod early_return;
120119
mod expand_glob_import;
@@ -132,8 +131,8 @@ mod handlers {
132131
mod generate_enum_projection_method;
133132
mod generate_from_impl_for_enum;
134133
mod generate_function;
135-
mod generate_getter;
136134
mod generate_getter_mut;
135+
mod generate_getter;
137136
mod generate_impl;
138137
mod generate_new;
139138
mod generate_setter;
@@ -156,6 +155,7 @@ mod handlers {
156155
mod reorder_fields;
157156
mod reorder_impl;
158157
mod replace_derive_with_manual_impl;
158+
mod replace_for_loop_with_for_each;
159159
mod replace_if_let_with_match;
160160
mod replace_impl_trait_with_generic;
161161
mod replace_let_with_if_let;
@@ -177,11 +177,9 @@ mod handlers {
177177
apply_demorgan::apply_demorgan,
178178
auto_import::auto_import,
179179
change_visibility::change_visibility,
180-
convert_for_to_iter_for_each::convert_for_to_iter_for_each,
181180
convert_integer_literal::convert_integer_literal,
182181
early_return::convert_to_guarded_return,
183182
expand_glob_import::expand_glob_import,
184-
move_module_to_file::move_module_to_file,
185183
extract_struct_from_enum_variant::extract_struct_from_enum_variant,
186184
fill_match_arms::fill_match_arms,
187185
fix_visibility::fix_visibility,
@@ -191,12 +189,12 @@ mod handlers {
191189
generate_default_from_enum_variant::generate_default_from_enum_variant,
192190
generate_derive::generate_derive,
193191
generate_enum_is_method::generate_enum_is_method,
194-
generate_enum_projection_method::generate_enum_try_into_method,
195192
generate_enum_projection_method::generate_enum_as_method,
193+
generate_enum_projection_method::generate_enum_try_into_method,
196194
generate_from_impl_for_enum::generate_from_impl_for_enum,
197195
generate_function::generate_function,
198-
generate_getter::generate_getter,
199196
generate_getter_mut::generate_getter_mut,
197+
generate_getter::generate_getter,
200198
generate_impl::generate_impl,
201199
generate_new::generate_new,
202200
generate_setter::generate_setter,
@@ -210,6 +208,7 @@ mod handlers {
210208
move_bounds::move_bounds_to_where_clause,
211209
move_guard::move_arm_cond_to_match_guard,
212210
move_guard::move_guard_to_arm_body,
211+
move_module_to_file::move_module_to_file,
213212
pull_assignment_up::pull_assignment_up,
214213
qualify_path::qualify_path,
215214
raw_string::add_hash,
@@ -221,6 +220,7 @@ mod handlers {
221220
reorder_fields::reorder_fields,
222221
reorder_impl::reorder_impl,
223222
replace_derive_with_manual_impl::replace_derive_with_manual_impl,
223+
replace_for_loop_with_for_each::replace_for_loop_with_for_each,
224224
replace_if_let_with_match::replace_if_let_with_match,
225225
replace_if_let_with_match::replace_match_with_if_let,
226226
replace_impl_trait_with_generic::replace_impl_trait_with_generic,

crates/ide_assists/src/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ fn assist_order_field_struct() {
190190
let mut assists = assists.iter();
191191

192192
assert_eq!(assists.next().expect("expected assist").label, "Change visibility to pub(crate)");
193-
assert_eq!(assists.next().expect("expected assist").label, "Generate a getter method");
194193
assert_eq!(assists.next().expect("expected assist").label, "Generate a mut getter method");
194+
assert_eq!(assists.next().expect("expected assist").label, "Generate a getter method");
195195
assert_eq!(assists.next().expect("expected assist").label, "Generate a setter method");
196196
assert_eq!(assists.next().expect("expected assist").label, "Add `#[derive]`");
197197
}

crates/ide_assists/src/tests/generated.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -192,29 +192,6 @@ pub(crate) fn frobnicate() {}
192192
)
193193
}
194194

195-
#[test]
196-
fn doctest_convert_for_to_iter_for_each() {
197-
check_doc_test(
198-
"convert_for_to_iter_for_each",
199-
r#####"
200-
fn main() {
201-
let x = vec![1, 2, 3];
202-
for $0v in x {
203-
let y = v * 2;
204-
}
205-
}
206-
"#####,
207-
r#####"
208-
fn main() {
209-
let x = vec![1, 2, 3];
210-
x.into_iter().for_each(|v| {
211-
let y = v * 2;
212-
});
213-
}
214-
"#####,
215-
)
216-
}
217-
218195
#[test]
219196
fn doctest_convert_integer_literal() {
220197
check_doc_test(
@@ -1179,6 +1156,29 @@ impl Debug for S {
11791156
)
11801157
}
11811158

1159+
#[test]
1160+
fn doctest_replace_for_loop_with_for_each() {
1161+
check_doc_test(
1162+
"replace_for_loop_with_for_each",
1163+
r#####"
1164+
fn main() {
1165+
let x = vec![1, 2, 3];
1166+
for$0 v in x {
1167+
let y = v * 2;
1168+
}
1169+
}
1170+
"#####,
1171+
r#####"
1172+
fn main() {
1173+
let x = vec![1, 2, 3];
1174+
x.into_iter().for_each(|v| {
1175+
let y = v * 2;
1176+
});
1177+
}
1178+
"#####,
1179+
)
1180+
}
1181+
11821182
#[test]
11831183
fn doctest_replace_if_let_with_match() {
11841184
check_doc_test(

0 commit comments

Comments
 (0)