Invert if should be smart about is_some, is_none, is_ok, is_err

This commit is contained in:
dragfire 2020-08-23 14:30:07 -06:00
parent e65d48d1fb
commit 1d129a7172
3 changed files with 45 additions and 2 deletions

View file

@ -7,7 +7,7 @@
use itertools::Itertools;
use stdx::format_to;
use crate::{ast, AstNode, SourceFile, SyntaxKind, SyntaxNode, SyntaxToken};
use crate::{ast, AstNode, SourceFile, SyntaxKind, SyntaxNode, SyntaxText, SyntaxToken};
pub fn name(text: &str) -> ast::Name {
ast_from_text(&format!("mod {};", text))
@ -137,6 +137,12 @@ pub fn expr_prefix(op: SyntaxKind, expr: ast::Expr) -> ast::Expr {
pub fn expr_call(f: ast::Expr, arg_list: ast::ArgList) -> ast::Expr {
expr_from_text(&format!("{}{}", f, arg_list))
}
pub fn expr_method_call<F>(text: &str, caller: F) -> Option<ast::Expr>
where
F: FnOnce() -> Option<SyntaxText>,
{
try_expr_from_text(&format!("{}.{}()", caller()?, text))
}
fn expr_from_text(text: &str) -> ast::Expr {
ast_from_text(&format!("const C: () = {};", text))
}