aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/validation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src/validation.rs')
-rw-r--r--crates/ra_syntax/src/validation.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/validation.rs b/crates/ra_syntax/src/validation.rs
new file mode 100644
index 000000000..bdee8120c
--- /dev/null
+++ b/crates/ra_syntax/src/validation.rs
@@ -0,0 +1,24 @@
1use crate::{
2 algo::visit::{visitor_ctx, VisitorCtx},
3 ast,
4 SourceFileNode,
5 yellow::SyntaxError,
6};
7
8mod byte;
9mod byte_string;
10mod char;
11mod string;
12
13pub(crate) fn validate(file: &SourceFileNode) -> Vec<SyntaxError> {
14 let mut errors = Vec::new();
15 for node in file.syntax().descendants() {
16 let _ = visitor_ctx(&mut errors)
17 .visit::<ast::Byte, _>(self::byte::validate_byte_node)
18 .visit::<ast::ByteString, _>(self::byte_string::validate_byte_string_node)
19 .visit::<ast::Char, _>(self::char::validate_char_node)
20 .visit::<ast::String, _>(self::string::validate_string_node)
21 .accept(node);
22 }
23 errors
24}