From c8cbd398e4e54059b1594ef934ce96d6fc0c8130 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 15 Oct 2020 16:48:25 +0200 Subject: Prepare for pat_field_shorthand --- crates/ide/src/diagnostics.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'crates/ide/src') diff --git a/crates/ide/src/diagnostics.rs b/crates/ide/src/diagnostics.rs index b30cdb6ed..fb2a2fb28 100644 --- a/crates/ide/src/diagnostics.rs +++ b/crates/ide/src/diagnostics.rs @@ -15,7 +15,7 @@ use itertools::Itertools; use rustc_hash::FxHashSet; use syntax::{ ast::{self, AstNode}, - SyntaxNode, TextRange, T, + match_ast, SyntaxNode, TextRange, T, }; use text_edit::TextEdit; @@ -80,7 +80,7 @@ pub(crate) fn diagnostics( for node in parse.tree().syntax().descendants() { check_unnecessary_braces_in_use_statement(&mut res, file_id, &node); - check_struct_shorthand_initialization(&mut res, file_id, &node); + check_field_shorthand(&mut res, file_id, &node); } let res = RefCell::new(res); let sink_builder = DiagnosticSinkBuilder::new() @@ -188,12 +188,20 @@ fn text_edit_for_remove_unnecessary_braces_with_self_in_use_statement( None } -fn check_struct_shorthand_initialization( +fn check_field_shorthand(acc: &mut Vec, file_id: FileId, node: &SyntaxNode) { + match_ast! { + match node { + ast::RecordExpr(it) => check_expr_field_shorthand(acc, file_id, it), + _ => None + } + }; +} + +fn check_expr_field_shorthand( acc: &mut Vec, file_id: FileId, - node: &SyntaxNode, + record_lit: ast::RecordExpr, ) -> Option<()> { - let record_lit = ast::RecordExpr::cast(node.clone())?; let record_field_list = record_lit.record_expr_field_list()?; for record_field in record_field_list.fields() { if let (Some(name_ref), Some(expr)) = (record_field.name_ref(), record_field.expr()) { -- cgit v1.2.3