Reduce path_from_text usage

This commit is contained in:
Aleksey Kladov 2020-08-31 15:47:42 +02:00
parent 60706fca8e
commit b1f59ff6c1
2 changed files with 18 additions and 13 deletions

View file

@ -4,7 +4,11 @@ use ide_db::{
defs::{classify_name_ref, Definition, NameRefClass}, defs::{classify_name_ref, Definition, NameRefClass},
search::SearchScope, search::SearchScope,
}; };
use syntax::{algo, ast, AstNode, Direction, SyntaxNode, SyntaxToken, T}; use syntax::{
algo,
ast::{self, make},
AstNode, Direction, SyntaxNode, SyntaxToken, T,
};
use crate::{ use crate::{
assist_context::{AssistBuilder, AssistContext, Assists}, assist_context::{AssistBuilder, AssistContext, Assists},
@ -249,7 +253,10 @@ fn replace_ast(
let new_use_trees: Vec<ast::UseTree> = names_to_import let new_use_trees: Vec<ast::UseTree> = names_to_import
.iter() .iter()
.map(|n| ast::make::use_tree(ast::make::path_from_text(&n.to_string()), None, None, false)) .map(|n| {
let path = make::path_unqualified(make::path_segment(make::name_ref(&n.to_string())));
make::use_tree(path, None, None, false)
})
.collect(); .collect();
let use_trees = [&existing_use_trees[..], &new_use_trees[..]].concat(); let use_trees = [&existing_use_trees[..], &new_use_trees[..]].concat();
@ -257,8 +264,8 @@ fn replace_ast(
match use_trees.as_slice() { match use_trees.as_slice() {
[name] => { [name] => {
if let Some(end_path) = name.path() { if let Some(end_path) = name.path() {
let replacement = ast::make::use_tree( let replacement = make::use_tree(
ast::make::path_from_text(&format!("{}::{}", path, end_path)), make::path_from_text(&format!("{}::{}", path, end_path)),
None, None,
None, None,
false, false,
@ -273,15 +280,12 @@ fn replace_ast(
} }
names => { names => {
let replacement = match parent { let replacement = match parent {
Either::Left(_) => ast::make::use_tree( Either::Left(_) => {
path, make::use_tree(path, Some(make::use_tree_list(names.to_owned())), None, false)
Some(ast::make::use_tree_list(names.to_owned())),
None,
false,
)
.syntax() .syntax()
.clone(), .clone()
Either::Right(_) => ast::make::use_tree_list(names.to_owned()).syntax().clone(), }
Either::Right(_) => make::use_tree_list(names.to_owned()).syntax().clone(),
}; };
algo::diff( algo::diff(

View file

@ -33,6 +33,7 @@ pub fn path_unqualified(segment: ast::PathSegment) -> ast::Path {
pub fn path_qualified(qual: ast::Path, segment: ast::PathSegment) -> ast::Path { pub fn path_qualified(qual: ast::Path, segment: ast::PathSegment) -> ast::Path {
path_from_text(&format!("{}::{}", qual, segment)) path_from_text(&format!("{}::{}", qual, segment))
} }
// FIXME: make this private
pub fn path_from_text(text: &str) -> ast::Path { pub fn path_from_text(text: &str) -> ast::Path {
ast_from_text(text) ast_from_text(text)
} }