Handle IfLet in convert_to_guarded_return.

This commit is contained in:
krk 2019-10-31 21:10:58 +01:00
parent 998088876d
commit 4a4d9f7a90
2 changed files with 171 additions and 28 deletions

View file

@ -110,6 +110,22 @@ pub fn match_arm_list(arms: impl Iterator<Item = ast::MatchArm>) -> ast::MatchAr
}
}
pub fn let_match_early(expr: ast::Expr, early_expression: &str) -> ast::LetStmt {
return from_text(&format!(
r#"let {} = match {} {{
Some(it) => it,
None => {},
}};"#,
expr.syntax().text(),
expr.syntax().text(),
early_expression
));
fn from_text(text: &str) -> ast::LetStmt {
ast_from_text(&format!("fn f() {{ {} }}", text))
}
}
pub fn where_pred(path: ast::Path, bounds: impl Iterator<Item = ast::TypeBound>) -> ast::WherePred {
let bounds = bounds.map(|b| b.syntax().to_string()).join(" + ");
return from_text(&format!("{}: {}", path.syntax(), bounds));