diff options
Diffstat (limited to 'crates/ra_assists/src/ast_editor.rs')
-rw-r--r-- | crates/ra_assists/src/ast_editor.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/crates/ra_assists/src/ast_editor.rs b/crates/ra_assists/src/ast_editor.rs index 7ef58aa8e..13ee82879 100644 --- a/crates/ra_assists/src/ast_editor.rs +++ b/crates/ra_assists/src/ast_editor.rs | |||
@@ -137,9 +137,32 @@ pub struct AstBuilder<N: AstNode> { | |||
137 | } | 137 | } |
138 | 138 | ||
139 | impl AstBuilder<ast::NamedField> { | 139 | impl AstBuilder<ast::NamedField> { |
140 | pub fn from_text(text: &str) -> TreeArc<ast::NamedField> { | 140 | fn from_text(text: &str) -> TreeArc<ast::NamedField> { |
141 | ast_node_from_file_text(&format!("fn f() {{ S {{ {}, }} }}", text)) | 141 | ast_node_from_file_text(&format!("fn f() {{ S {{ {}, }} }}", text)) |
142 | } | 142 | } |
143 | |||
144 | pub fn from_pieces(name: &ast::NameRef, expr: Option<&ast::Expr>) -> TreeArc<ast::NamedField> { | ||
145 | match expr { | ||
146 | Some(expr) => Self::from_text(&format!("{}: {}", name.syntax(), expr.syntax())), | ||
147 | None => Self::from_text(&name.syntax().to_string()), | ||
148 | } | ||
149 | } | ||
150 | } | ||
151 | |||
152 | impl AstBuilder<ast::Expr> { | ||
153 | fn from_text(text: &str) -> TreeArc<ast::Expr> { | ||
154 | ast_node_from_file_text(&format!("fn f() {{ {}; }}", text)) | ||
155 | } | ||
156 | |||
157 | pub fn unit() -> TreeArc<ast::Expr> { | ||
158 | Self::from_text("()") | ||
159 | } | ||
160 | } | ||
161 | |||
162 | impl AstBuilder<ast::NameRef> { | ||
163 | pub fn new(text: &str) -> TreeArc<ast::NameRef> { | ||
164 | ast_node_from_file_text(&format!("fn f() {{ {}; }}", text)) | ||
165 | } | ||
143 | } | 166 | } |
144 | 167 | ||
145 | fn ast_node_from_file_text<N: AstNode>(text: &str) -> TreeArc<N> { | 168 | fn ast_node_from_file_text<N: AstNode>(text: &str) -> TreeArc<N> { |