From 326890753cd146d09d45a330016624c020abdd9e Mon Sep 17 00:00:00 2001 From: Yoshua Wuyts Date: Tue, 10 Aug 2021 12:21:48 +0200 Subject: [PATCH] implement feedback from review --- .../src/handlers/add_missing_impl_members.rs | 8 ++++---- .../src/handlers/replace_derive_with_manual_impl.rs | 7 +++---- crates/ide_assists/src/utils.rs | 4 ++-- .../{gen_trait_body.rs => gen_trait_fn_body.rs} | 12 +++++++++--- crates/rust-analyzer/tests/slow-tests/tidy.rs | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) rename crates/ide_assists/src/utils/{gen_trait_body.rs => gen_trait_fn_body.rs} (97%) diff --git a/crates/ide_assists/src/handlers/add_missing_impl_members.rs b/crates/ide_assists/src/handlers/add_missing_impl_members.rs index 87c8f5e54827..a145598c791d 100644 --- a/crates/ide_assists/src/handlers/add_missing_impl_members.rs +++ b/crates/ide_assists/src/handlers/add_missing_impl_members.rs @@ -5,8 +5,8 @@ use syntax::ast::{self, make, AstNode}; use crate::{ assist_context::{AssistContext, Assists}, utils::{ - add_trait_assoc_items_to_impl, filter_assoc_items, gen_trait_body, render_snippet, Cursor, - DefaultMethods, + add_trait_assoc_items_to_impl, filter_assoc_items, gen_trait_fn_body, render_snippet, + Cursor, DefaultMethods, }, AssistId, AssistKind, }; @@ -156,10 +156,10 @@ fn try_gen_trait_body( trait_: &hir::Trait, impl_def: &ast::Impl, ) -> Option<()> { - let trait_path = make::path_from_text(&trait_.name(ctx.db()).to_string()); + let trait_path = make::ext::ident_path(&trait_.name(ctx.db()).to_string()); let hir_ty = ctx.sema.resolve_type(&impl_def.self_ty()?)?; let adt = hir_ty.as_adt()?.source(ctx.db())?; - gen_trait_body(func, &trait_path, &adt.value) + gen_trait_fn_body(func, &trait_path, &adt.value) } #[cfg(test)] diff --git a/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs b/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs index 77a6e1546275..2add705db2e8 100644 --- a/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs +++ b/crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs @@ -7,12 +7,11 @@ use syntax::{ SyntaxKind::{IDENT, WHITESPACE}, }; -use crate::utils::gen_trait_body; use crate::{ assist_context::{AssistBuilder, AssistContext, Assists}, utils::{ - add_trait_assoc_items_to_impl, filter_assoc_items, generate_trait_impl_text, - render_snippet, Cursor, DefaultMethods, + add_trait_assoc_items_to_impl, filter_assoc_items, gen_trait_fn_body, + generate_trait_impl_text, render_snippet, Cursor, DefaultMethods, }, AssistId, AssistKind, }; @@ -168,7 +167,7 @@ fn impl_def_from_trait( // Generate a default `impl` function body for the derived trait. if let ast::AssocItem::Fn(ref func) = first_assoc_item { - let _ = gen_trait_body(func, trait_path, adt); + let _ = gen_trait_fn_body(func, trait_path, adt); }; Some((impl_def, first_assoc_item)) diff --git a/crates/ide_assists/src/utils.rs b/crates/ide_assists/src/utils.rs index 6552c1feb966..b4b9b6af80d0 100644 --- a/crates/ide_assists/src/utils.rs +++ b/crates/ide_assists/src/utils.rs @@ -1,7 +1,7 @@ //! Assorted functions shared by several assists. pub(crate) mod suggest_name; -mod gen_trait_body; +mod gen_trait_fn_body; use std::ops; @@ -26,7 +26,7 @@ use syntax::{ use crate::assist_context::{AssistBuilder, AssistContext}; -pub(crate) use gen_trait_body::gen_trait_body; +pub(crate) use gen_trait_fn_body::gen_trait_fn_body; pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr { extract_trivial_expression(&block) diff --git a/crates/ide_assists/src/utils/gen_trait_body.rs b/crates/ide_assists/src/utils/gen_trait_fn_body.rs similarity index 97% rename from crates/ide_assists/src/utils/gen_trait_body.rs rename to crates/ide_assists/src/utils/gen_trait_fn_body.rs index e8d11f42b0ec..17e006a7553f 100644 --- a/crates/ide_assists/src/utils/gen_trait_body.rs +++ b/crates/ide_assists/src/utils/gen_trait_fn_body.rs @@ -1,14 +1,20 @@ //! This module contains functions to generate default trait impl function bodies where possible. -use syntax::ast::{self, edit::AstNodeEdit, make, AstNode, NameOwner}; -use syntax::ted; +use syntax::{ + ast::{self, edit::AstNodeEdit, make, AstNode, NameOwner}, + ted, +}; /// Generate custom trait bodies where possible. /// /// Returns `Option` so that we can use `?` rather than `if let Some`. Returning /// `None` means that generating a custom trait body failed, and the body will remain /// as `todo!` instead. -pub(crate) fn gen_trait_body(func: &ast::Fn, trait_path: &ast::Path, adt: &ast::Adt) -> Option<()> { +pub(crate) fn gen_trait_fn_body( + func: &ast::Fn, + trait_path: &ast::Path, + adt: &ast::Adt, +) -> Option<()> { match trait_path.segment()?.name_ref()?.text().as_str() { "Debug" => gen_debug_impl(adt, func), "Default" => gen_default_impl(adt, func), diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index c895e48f3dfd..4e99ae67d85c 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -280,7 +280,7 @@ fn check_todo(path: &Path, text: &str) { "ast/make.rs", // The documentation in string literals may contain anything for its own purposes "ide_db/src/helpers/generated_lints.rs", - "ide_assists/src/utils/gen_trait_body.rs", + "ide_assists/src/utils/gen_trait_fn_body.rs", "ide_assists/src/tests/generated.rs", ]; if need_todo.iter().any(|p| path.ends_with(p)) {