aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/ast/make.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src/ast/make.rs')
-rw-r--r--crates/ra_syntax/src/ast/make.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/ra_syntax/src/ast/make.rs b/crates/ra_syntax/src/ast/make.rs
index 2cc9ff153..69bacf224 100644
--- a/crates/ra_syntax/src/ast/make.rs
+++ b/crates/ra_syntax/src/ast/make.rs
@@ -108,7 +108,7 @@ pub fn expr_return() -> ast::Expr {
108pub fn expr_match(expr: ast::Expr, match_arm_list: ast::MatchArmList) -> ast::Expr { 108pub fn expr_match(expr: ast::Expr, match_arm_list: ast::MatchArmList) -> ast::Expr {
109 expr_from_text(&format!("match {} {}", expr, match_arm_list)) 109 expr_from_text(&format!("match {} {}", expr, match_arm_list))
110} 110}
111pub fn expr_if(condition: ast::Expr, then_branch: ast::BlockExpr) -> ast::Expr { 111pub fn expr_if(condition: ast::Condition, then_branch: ast::BlockExpr) -> ast::Expr {
112 expr_from_text(&format!("if {} {}", condition, then_branch)) 112 expr_from_text(&format!("if {} {}", condition, then_branch))
113} 113}
114pub fn expr_prefix(op: SyntaxKind, expr: ast::Expr) -> ast::Expr { 114pub fn expr_prefix(op: SyntaxKind, expr: ast::Expr) -> ast::Expr {
@@ -123,6 +123,15 @@ pub fn try_expr_from_text(text: &str) -> Option<ast::Expr> {
123 try_ast_from_text(&format!("const C: () = {};", text)) 123 try_ast_from_text(&format!("const C: () = {};", text))
124} 124}
125 125
126pub fn condition(expr: ast::Expr, pattern: Option<ast::Pat>) -> ast::Condition {
127 match pattern {
128 None => ast_from_text(&format!("const _: () = while {} {{}};", expr)),
129 Some(pattern) => {
130 ast_from_text(&format!("const _: () = while {} = {} {{}};", pattern, expr))
131 }
132 }
133}
134
126pub fn bind_pat(name: ast::Name) -> ast::BindPat { 135pub fn bind_pat(name: ast::Name) -> ast::BindPat {
127 return from_text(name.text()); 136 return from_text(name.text());
128 137