aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_assists/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide_assists/src/utils.rs')
-rw-r--r--crates/ide_assists/src/utils.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/crates/ide_assists/src/utils.rs b/crates/ide_assists/src/utils.rs
index fc7caee04..2e79a3aed 100644
--- a/crates/ide_assists/src/utils.rs
+++ b/crates/ide_assists/src/utils.rs
@@ -24,7 +24,7 @@ use syntax::{
24 24
25use crate::{ 25use crate::{
26 assist_context::{AssistBuilder, AssistContext}, 26 assist_context::{AssistBuilder, AssistContext},
27 ast_transform::{self, AstTransform, QualifyPaths, SubstituteTypeParams}, 27 ast_transform::AstTransform,
28}; 28};
29 29
30pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr { 30pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr {
@@ -132,14 +132,18 @@ pub fn add_trait_assoc_items_to_impl(
132 target_scope: hir::SemanticsScope, 132 target_scope: hir::SemanticsScope,
133) -> (ast::Impl, ast::AssocItem) { 133) -> (ast::Impl, ast::AssocItem) {
134 let source_scope = sema.scope_for_def(trait_); 134 let source_scope = sema.scope_for_def(trait_);
135 let ast_transform = QualifyPaths::new(&target_scope, &source_scope) 135
136 .or(SubstituteTypeParams::for_trait_impl(&source_scope, trait_, impl_.clone())); 136 let transform = AstTransform {
137 137 subst: (trait_, impl_.clone()),
138 let items = items 138 source_scope: &source_scope,
139 .into_iter() 139 target_scope: &target_scope,
140 .map(|it| it.clone_for_update()) 140 };
141 .inspect(|it| ast_transform::apply(&*ast_transform, it)) 141
142 .map(|it| edit::remove_attrs_and_docs(&it).clone_subtree().clone_for_update()); 142 let items = items.into_iter().map(|assoc_item| {
143 let assoc_item = assoc_item.clone_for_update();
144 transform.apply(assoc_item.clone());
145 edit::remove_attrs_and_docs(&assoc_item).clone_subtree().clone_for_update()
146 });
143 147
144 let res = impl_.clone_for_update(); 148 let res = impl_.clone_for_update();
145 149