mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Reduce path_from_text usage
This commit is contained in:
parent
60706fca8e
commit
b1f59ff6c1
2 changed files with 18 additions and 13 deletions
|
@ -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(
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue