From 2090b534fc249a493823bb8e9039c0123aa0b90e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 6 Oct 2020 16:19:18 +0200 Subject: Move ModPath->ast::Path function to IDE layer closes #6092 --- crates/assists/src/ast_transform.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'crates/assists/src/ast_transform.rs') diff --git a/crates/assists/src/ast_transform.rs b/crates/assists/src/ast_transform.rs index 4307e0191..ac72f3f02 100644 --- a/crates/assists/src/ast_transform.rs +++ b/crates/assists/src/ast_transform.rs @@ -1,13 +1,14 @@ //! `AstTransformer`s are functions that replace nodes in an AST and can be easily combined. -use rustc_hash::FxHashMap; - use hir::{HirDisplay, PathResolution, SemanticsScope}; +use rustc_hash::FxHashMap; use syntax::{ algo::SyntaxRewriter, ast::{self, AstNode}, SyntaxNode, }; +use crate::utils::mod_path_to_ast; + pub fn apply<'a, N: AstNode>(transformer: &dyn AstTransform<'a>, node: N) -> N { SyntaxRewriter::from_fn(|element| match element { syntax::SyntaxElement::Node(n) => { @@ -189,7 +190,7 @@ impl<'a> AstTransform<'a> for QualifyPaths<'a> { match resolution { PathResolution::Def(def) => { let found_path = from.find_use_path(self.source_scope.db.upcast(), def)?; - let mut path = path_to_ast(found_path); + let mut path = mod_path_to_ast(&found_path); let type_args = p .segment() @@ -210,13 +211,3 @@ impl<'a> AstTransform<'a> for QualifyPaths<'a> { } } } - -pub(crate) fn path_to_ast(path: hir::ModPath) -> ast::Path { - let parse = ast::SourceFile::parse(&path.to_string()); - parse - .tree() - .syntax() - .descendants() - .find_map(ast::Path::cast) - .unwrap_or_else(|| panic!("failed to parse path {:?}, `{}`", path, path)) -} -- cgit v1.2.3