Adds "replace with guarded return" assist

This commit is contained in:
Mikhail Modin 2019-10-20 19:00:09 +01:00
parent 6b9bd7bdd2
commit fb215dc192
4 changed files with 314 additions and 0 deletions

View file

@ -128,6 +128,14 @@ pub fn where_clause(preds: impl Iterator<Item = ast::WherePred>) -> ast::WhereCl
}
}
pub fn if_expression(condition: &ast::Expr, statement: &str) -> ast::IfExpr {
return ast_from_text(&format!(
"fn f() {{ if !{} {{\n {}\n}}\n}}",
condition.syntax().text(),
statement
));
}
fn ast_from_text<N: AstNode>(text: &str) -> N {
let parse = SourceFile::parse(text);
let res = parse.tree().syntax().descendants().find_map(N::cast).unwrap();