Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/validation.rs')
-rw-r--r--crates/syntax/src/validation.rs31
1 files changed, 15 insertions, 16 deletions
diff --git a/crates/syntax/src/validation.rs b/crates/syntax/src/validation.rs
index 5c5b26f525..dbfab537fe 100644
--- a/crates/syntax/src/validation.rs
+++ b/crates/syntax/src/validation.rs
@@ -15,33 +15,32 @@ use crate::{
SyntaxNode, SyntaxToken, TextSize, T,
};
-pub(crate) fn validate(root: &SyntaxNode) -> Vec<SyntaxError> {
+pub(crate) fn validate(root: &SyntaxNode, errors: &mut Vec<SyntaxError>) {
+ let _p = tracing::span!(tracing::Level::INFO, "parser::validate").entered();
// FIXME:
// * Add unescape validation of raw string literals and raw byte string literals
// * Add validation of doc comments are being attached to nodes
- let mut errors = Vec::new();
for node in root.descendants() {
match_ast! {
match node {
- ast::Literal(it) => validate_literal(it, &mut errors),
- ast::Const(it) => validate_const(it, &mut errors),
- ast::BlockExpr(it) => block::validate_block_expr(it, &mut errors),
- ast::FieldExpr(it) => validate_numeric_name(it.name_ref(), &mut errors),
- ast::RecordExprField(it) => validate_numeric_name(it.name_ref(), &mut errors),
- ast::Visibility(it) => validate_visibility(it, &mut errors),
- ast::RangeExpr(it) => validate_range_expr(it, &mut errors),
- ast::PathSegment(it) => validate_path_keywords(it, &mut errors),
- ast::RefType(it) => validate_trait_object_ref_ty(it, &mut errors),
- ast::PtrType(it) => validate_trait_object_ptr_ty(it, &mut errors),
- ast::FnPtrType(it) => validate_trait_object_fn_ptr_ret_ty(it, &mut errors),
- ast::MacroRules(it) => validate_macro_rules(it, &mut errors),
- ast::LetExpr(it) => validate_let_expr(it, &mut errors),
+ ast::Literal(it) => validate_literal(it, errors),
+ ast::Const(it) => validate_const(it, errors),
+ ast::BlockExpr(it) => block::validate_block_expr(it, errors),
+ ast::FieldExpr(it) => validate_numeric_name(it.name_ref(), errors),
+ ast::RecordExprField(it) => validate_numeric_name(it.name_ref(), errors),
+ ast::Visibility(it) => validate_visibility(it, errors),
+ ast::RangeExpr(it) => validate_range_expr(it, errors),
+ ast::PathSegment(it) => validate_path_keywords(it, errors),
+ ast::RefType(it) => validate_trait_object_ref_ty(it, errors),
+ ast::PtrType(it) => validate_trait_object_ptr_ty(it, errors),
+ ast::FnPtrType(it) => validate_trait_object_fn_ptr_ret_ty(it, errors),
+ ast::MacroRules(it) => validate_macro_rules(it, errors),
+ ast::LetExpr(it) => validate_let_expr(it, errors),
_ => (),
}
}
}
- errors
}
fn rustc_unescape_error_to_string(err: unescape::EscapeError) -> (&'static str, bool) {