Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/generate_delegate_trait.rs')
-rw-r--r--crates/ide-assists/src/handlers/generate_delegate_trait.rs40
1 files changed, 17 insertions, 23 deletions
diff --git a/crates/ide-assists/src/handlers/generate_delegate_trait.rs b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
index f5153b8f1f..154a1f59c7 100644
--- a/crates/ide-assists/src/handlers/generate_delegate_trait.rs
+++ b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
@@ -270,19 +270,16 @@ fn generate_impl(
make::path_from_text(&format!("<{} as {}>", field_ty, delegate.trait_()?));
let delegate_assoc_items = delegate.get_or_create_assoc_item_list();
- match bound_def.assoc_item_list() {
- Some(ai) => {
- ai.assoc_items()
- .filter(|item| matches!(item, AssocItem::MacroCall(_)).not())
- .for_each(|item| {
- let assoc =
- process_assoc_item(item, qualified_path_type.clone(), field_name);
- if let Some(assoc) = assoc {
- delegate_assoc_items.add_item(assoc);
- }
- });
- }
- None => {}
+ if let Some(ai) = bound_def.assoc_item_list() {
+ ai.assoc_items()
+ .filter(|item| matches!(item, AssocItem::MacroCall(_)).not())
+ .for_each(|item| {
+ let assoc =
+ process_assoc_item(item, qualified_path_type.clone(), field_name);
+ if let Some(assoc) = assoc {
+ delegate_assoc_items.add_item(assoc);
+ }
+ });
};
let target_scope = ctx.sema.scope(strukt.strukt.syntax())?;
@@ -512,17 +509,14 @@ fn generate_args_for_impl(
// form the substitution list
let mut arg_substs = FxHashMap::default();
- match field_ty {
- field_ty @ ast::Type::PathType(_) => {
- let field_args = field_ty.generic_arg_list().map(|gal| gal.generic_args());
- let self_ty_args = self_ty.generic_arg_list().map(|gal| gal.generic_args());
- if let (Some(field_args), Some(self_ty_args)) = (field_args, self_ty_args) {
- self_ty_args.zip(field_args).for_each(|(self_ty_arg, field_arg)| {
- arg_substs.entry(self_ty_arg.to_string()).or_insert(field_arg);
- })
- }
+ if let field_ty @ ast::Type::PathType(_) = field_ty {
+ let field_args = field_ty.generic_arg_list().map(|gal| gal.generic_args());
+ let self_ty_args = self_ty.generic_arg_list().map(|gal| gal.generic_args());
+ if let (Some(field_args), Some(self_ty_args)) = (field_args, self_ty_args) {
+ self_ty_args.zip(field_args).for_each(|(self_ty_arg, field_arg)| {
+ arg_substs.entry(self_ty_arg.to_string()).or_insert(field_arg);
+ })
}
- _ => {}
}
let args = old_impl_args