]> git.lizzy.rs Git - rust.git/blobdiff - crates/ide_assists/src/handlers/reorder_impl.rs
Merge #11481
[rust.git] / crates / ide_assists / src / handlers / reorder_impl.rs
index 54a9a468ecc68b7ed39b1a91ccaa765e6da2cc30..8ae12ab1f41d1fb6473adc5db8aa3fc95bce0751 100644 (file)
@@ -4,11 +4,11 @@
 use hir::{PathResolution, Semantics};
 use ide_db::RootDatabase;
 use syntax::{
-    ast::{self, NameOwner},
+    ast::{self, HasName},
     ted, AstNode,
 };
 
-use crate::{AssistContext, AssistId, AssistKind, Assists};
+use crate::{utils::get_methods, AssistContext, AssistId, AssistKind, Assists};
 
 // Assist: reorder_impl
 //
@@ -44,7 +44,6 @@
 //     fn c() {}
 // }
 // ```
-//
 pub(crate) fn reorder_impl(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
     let impl_ast = ctx.find_node_at_offset::<ast::Impl>()?;
     let items = impl_ast.assoc_item_list()?;
@@ -76,11 +75,10 @@ pub(crate) fn reorder_impl(acc: &mut Assists, ctx: &AssistContext) -> Option<()>
     let target = items.syntax().text_range();
     acc.add(
         AssistId("reorder_impl", AssistKind::RefactorRewrite),
-        "Sort methods",
+        "Sort methods by trait definition",
         target,
         |builder| {
-            let methods =
-                methods.into_iter().map(|fn_| builder.make_ast_mut(fn_)).collect::<Vec<_>>();
+            let methods = methods.into_iter().map(|fn_| builder.make_mut(fn_)).collect::<Vec<_>>();
             methods
                 .into_iter()
                 .zip(sorted)
@@ -112,17 +110,6 @@ fn trait_definition(path: &ast::Path, sema: &Semantics<RootDatabase>) -> Option<
     }
 }
 
-fn get_methods(items: &ast::AssocItemList) -> Vec<ast::Fn> {
-    items
-        .assoc_items()
-        .flat_map(|i| match i {
-            ast::AssocItem::Fn(f) => Some(f),
-            _ => None,
-        })
-        .filter(|f| f.name().is_some())
-        .collect()
-}
-
 #[cfg(test)]
 mod tests {
     use crate::tests::{check_assist, check_assist_not_applicable};