Unnamed repository; edit this file 'description' to name the repository.
Change add_cfg_attrs_to to make parameter
| -rw-r--r-- | crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs b/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs index dc8056e903..c25b0bbe7c 100644 --- a/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs +++ b/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs @@ -1,7 +1,6 @@ use crate::{ AssistConfig, assist_context::{AssistContext, Assists}, - utils::add_cfg_attrs_to, }; use hir::{HasCrate, Semantics}; use ide_db::{ @@ -13,8 +12,8 @@ use ide_db::{ use syntax::{ AstNode, ast::{ - self, AssocItem, BlockExpr, GenericParam, HasGenericParams, HasName, HasTypeBounds, - HasVisibility, edit_in_place::Indent, make, + self, AssocItem, BlockExpr, GenericParam, HasAttrs, HasGenericParams, HasName, + HasTypeBounds, HasVisibility, edit_in_place::Indent, make, }, syntax_editor::Position, }; @@ -96,6 +95,7 @@ pub(crate) fn generate_blanket_trait_impl( } let impl_ = make::impl_trait( + cfg_attrs(&traitd), is_unsafe, traitd.generic_param_list(), trait_gen_args, @@ -120,14 +120,11 @@ pub(crate) fn generate_blanket_trait_impl( continue; } let f = todo_fn(&method, ctx.config).clone_for_update(); - add_cfg_attrs_to(&method, &f); f.indent(1.into()); assoc_item_list.add_item(AssocItem::Fn(f)); } } - add_cfg_attrs_to(&traitd, &impl_); - impl_.indent(indent); edit.insert_all( @@ -138,10 +135,10 @@ pub(crate) fn generate_blanket_trait_impl( ], ); - if let Some(cap) = ctx.config.snippet_cap { - if let Some(self_ty) = impl_.self_ty() { - builder.add_tabstop_before(cap, self_ty); - } + if let Some(cap) = ctx.config.snippet_cap + && let Some(self_ty) = impl_.self_ty() + { + builder.add_tabstop_before(cap, self_ty); } builder.add_file_edits(ctx.vfs_file_id(), edit); @@ -271,6 +268,7 @@ fn ty_bound_is(bound: &ast::TypeBound, s: &str) -> bool { fn todo_fn(f: &ast::Fn, config: &AssistConfig) -> ast::Fn { let params = f.param_list().unwrap_or_else(|| make::param_list(None, None)); make::fn_( + cfg_attrs(f), f.visibility(), f.name().unwrap_or_else(|| make::name("unnamed")), f.generic_param_list(), @@ -294,6 +292,10 @@ fn default_block(config: &AssistConfig) -> BlockExpr { make::block_expr(None, Some(expr)) } +fn cfg_attrs(node: &impl HasAttrs) -> impl Iterator<Item = ast::Attr> { + node.attrs().filter(|attr| attr.as_simple_call().is_some_and(|(name, _arg)| name == "cfg")) +} + #[cfg(test)] mod test { |