Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/utils.rs')
-rw-r--r--crates/ide-assists/src/utils.rs26
1 files changed, 6 insertions, 20 deletions
diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs
index 91aac9cf7b..20e0302b57 100644
--- a/crates/ide-assists/src/utils.rs
+++ b/crates/ide-assists/src/utils.rs
@@ -736,8 +736,11 @@ fn generate_impl_inner(
generic_params.as_ref().map(|params| params.to_generic_args().clone_for_update());
let ty = make::ty_path(make::ext::ident_path(&adt.name().unwrap().text()));
- let impl_ = match trait_ {
+ let cfg_attrs =
+ adt.attrs().filter(|attr| attr.as_simple_call().is_some_and(|(name, _arg)| name == "cfg"));
+ match trait_ {
Some(trait_) => make::impl_trait(
+ cfg_attrs,
is_unsafe,
None,
None,
@@ -750,26 +753,9 @@ fn generate_impl_inner(
adt.where_clause(),
body,
),
- None => make::impl_(generic_params, generic_args, ty, adt.where_clause(), body),
- }
- .clone_for_update();
-
- // Copy any cfg attrs from the original adt
- add_cfg_attrs_to(adt, &impl_);
-
- impl_
-}
-
-pub(crate) fn add_cfg_attrs_to<T, U>(from: &T, to: &U)
-where
- T: HasAttrs,
- U: AttrsOwnerEdit,
-{
- let cfg_attrs =
- from.attrs().filter(|attr| attr.as_simple_call().is_some_and(|(name, _arg)| name == "cfg"));
- for attr in cfg_attrs {
- to.add_attr(attr.clone_for_update());
+ None => make::impl_(cfg_attrs, generic_params, generic_args, ty, adt.where_clause(), body),
}
+ .clone_for_update()
}
pub(crate) fn add_method_to_adt(