From 47d7434dde215460fc95916f2703c6925f58dcce Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 18 May 2021 14:42:41 +0300 Subject: internal: replace AstTransformer with mutable syntax trees --- crates/ide_assists/src/utils.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'crates/ide_assists/src/utils.rs') 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::{ use crate::{ assist_context::{AssistBuilder, AssistContext}, - ast_transform::{self, AstTransform, QualifyPaths, SubstituteTypeParams}, + ast_transform::AstTransform, }; pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr { @@ -132,14 +132,18 @@ pub fn add_trait_assoc_items_to_impl( target_scope: hir::SemanticsScope, ) -> (ast::Impl, ast::AssocItem) { let source_scope = sema.scope_for_def(trait_); - let ast_transform = QualifyPaths::new(&target_scope, &source_scope) - .or(SubstituteTypeParams::for_trait_impl(&source_scope, trait_, impl_.clone())); - - let items = items - .into_iter() - .map(|it| it.clone_for_update()) - .inspect(|it| ast_transform::apply(&*ast_transform, it)) - .map(|it| edit::remove_attrs_and_docs(&it).clone_subtree().clone_for_update()); + + let transform = AstTransform { + subst: (trait_, impl_.clone()), + source_scope: &source_scope, + target_scope: &target_scope, + }; + + let items = items.into_iter().map(|assoc_item| { + let assoc_item = assoc_item.clone_for_update(); + transform.apply(assoc_item.clone()); + edit::remove_attrs_and_docs(&assoc_item).clone_subtree().clone_for_update() + }); let res = impl_.clone_for_update(); -- cgit v1.2.3 From e6776c3e1b66c8946873d20e1e3bc1d743c952fe Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 22 May 2021 16:23:07 +0300 Subject: use more precise name --- crates/ide_assists/src/utils.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ide_assists/src/utils.rs') diff --git a/crates/ide_assists/src/utils.rs b/crates/ide_assists/src/utils.rs index 2e79a3aed..30128a24a 100644 --- a/crates/ide_assists/src/utils.rs +++ b/crates/ide_assists/src/utils.rs @@ -24,7 +24,7 @@ use syntax::{ use crate::{ assist_context::{AssistBuilder, AssistContext}, - ast_transform::AstTransform, + path_transform::PathTransform, }; pub(crate) fn unwrap_trivial_block(block: ast::BlockExpr) -> ast::Expr { @@ -133,7 +133,7 @@ pub fn add_trait_assoc_items_to_impl( ) -> (ast::Impl, ast::AssocItem) { let source_scope = sema.scope_for_def(trait_); - let transform = AstTransform { + let transform = PathTransform { subst: (trait_, impl_.clone()), source_scope: &source_scope, target_scope: &target_scope, -- cgit v1.2.3