From 9e213385c9d06db3c8ca20812779e2b8f8ad2c71 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 30 Mar 2019 13:25:53 +0300 Subject: switch to new rowan --- crates/ra_syntax/src/validation.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'crates/ra_syntax/src/validation.rs') diff --git a/crates/ra_syntax/src/validation.rs b/crates/ra_syntax/src/validation.rs index 69f344d65..fc534df83 100644 --- a/crates/ra_syntax/src/validation.rs +++ b/crates/ra_syntax/src/validation.rs @@ -6,7 +6,7 @@ mod block; use crate::{ SourceFile, SyntaxError, AstNode, SyntaxNode, - SyntaxKind::{L_CURLY, R_CURLY}, + SyntaxKind::{L_CURLY, R_CURLY, BYTE, BYTE_STRING, STRING, CHAR}, ast, algo::visit::{visitor_ctx, VisitorCtx}, }; @@ -15,16 +15,24 @@ pub(crate) fn validate(file: &SourceFile) -> Vec { let mut errors = Vec::new(); for node in file.syntax().descendants() { let _ = visitor_ctx(&mut errors) - .visit::(byte::validate_byte_node) - .visit::(byte_string::validate_byte_string_node) - .visit::(char::validate_char_node) - .visit::(string::validate_string_node) + .visit::(validate_literal) .visit::(block::validate_block_node) .accept(node); } errors } +// FIXME: kill duplication +fn validate_literal(literal: &ast::Literal, acc: &mut Vec) { + match literal.token().kind() { + BYTE => byte::validate_byte_node(literal.token(), acc), + BYTE_STRING => byte_string::validate_byte_string_node(literal.token(), acc), + STRING => string::validate_string_node(literal.token(), acc), + CHAR => char::validate_char_node(literal.token(), acc), + _ => (), + } +} + pub(crate) fn validate_block_structure(root: &SyntaxNode) { let mut stack = Vec::new(); for node in root.descendants() { -- cgit v1.2.3