Replace if with if-let

This commit is contained in:
Aleksey Kladov 2020-03-27 12:12:17 +01:00
parent cbb53cf55c
commit 91e482b46d
6 changed files with 170 additions and 5 deletions

View file

@ -251,7 +251,7 @@ impl ast::UseItem {
#[must_use]
pub fn with_use_tree(&self, use_tree: ast::UseTree) -> ast::UseItem {
if let Some(old) = self.use_tree() {
return self.replace_descendants(iter::once((old, use_tree)));
return self.replace_descendant(old, use_tree);
}
self.clone()
}
@ -283,7 +283,7 @@ impl ast::UseTree {
#[must_use]
pub fn with_path(&self, path: ast::Path) -> ast::UseTree {
if let Some(old) = self.path() {
return self.replace_descendants(iter::once((old, path)));
return self.replace_descendant(old, path);
}
self.clone()
}
@ -291,7 +291,7 @@ impl ast::UseTree {
#[must_use]
pub fn with_use_tree_list(&self, use_tree_list: ast::UseTreeList) -> ast::UseTree {
if let Some(old) = self.use_tree_list() {
return self.replace_descendants(iter::once((old, use_tree_list)));
return self.replace_descendant(old, use_tree_list);
}
self.clone()
}
@ -465,6 +465,11 @@ pub trait AstNodeEdit: AstNode + Sized {
Self::cast(new_syntax).unwrap()
}
#[must_use]
fn replace_descendant<D: AstNode>(&self, old: D, new: D) -> Self {
self.replace_descendants(iter::once((old, new)))
}
#[must_use]
fn replace_descendants<D: AstNode>(
&self,