]> git.lizzy.rs Git - rust.git/blobdiff - crates/ide_assists/src/handlers/convert_iter_for_each_to_for.rs
Merge #11481
[rust.git] / crates / ide_assists / src / handlers / convert_iter_for_each_to_for.rs
index aef03e3238e13120472af198665f8de5b9617ecc..0d2daa8dc30c567ab17b9af90dec6a735a546bb5 100644 (file)
@@ -2,7 +2,7 @@
 use ide_db::helpers::FamousDefs;
 use stdx::format_to;
 use syntax::{
-    ast::{self, edit_in_place::Indent, make, ArgListOwner, LoopBodyOwner},
+    ast::{self, edit_in_place::Indent, make, HasArgList, HasLoopBody},
     AstNode,
 };
 
@@ -148,7 +148,7 @@ fn is_ref_and_impls_iter_method(
     let ty = sema.type_of_expr(&expr_behind_ref)?.adjusted();
     let scope = sema.scope(iterable.syntax());
     let krate = scope.module()?.krate();
-    let traits_in_scope = scope.traits_in_scope();
+    let traits_in_scope = scope.visible_traits();
     let iter_trait = FamousDefs(sema, Some(krate)).core_iter_Iterator()?;
 
     let has_wanted_method = ty
@@ -156,6 +156,7 @@ fn is_ref_and_impls_iter_method(
             sema.db,
             krate,
             &traits_in_scope,
+            None,
             Some(&wanted_method),
             |_, func| {
                 if func.ret_type(sema.db).impls_trait(sema.db, iter_trait, &[]) {
@@ -199,7 +200,7 @@ fn validate_method_call_expr(
     expr: ast::MethodCallExpr,
 ) -> Option<(ast::Expr, ast::Expr)> {
     let name_ref = expr.name_ref()?;
-    if name_ref.syntax().text_range().intersect(ctx.frange.range).is_none() {
+    if !name_ref.syntax().text_range().contains_range(ctx.selection_trimmed()) {
         cov_mark::hit!(test_for_each_not_applicable_invalid_cursor_pos);
         return None;
     }