From 1a97cce01f8e49b33bf28cbcdfeb3c8aefd809a5 Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 29 Oct 2021 18:20:54 +0530 Subject: report syntax errors as statix errors - statix now reports errors also, not just warnings - all diagnostics are available on stderr stream - non-utf8 files are skipped, does not eject early --- bin/src/lint.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'bin/src/lint.rs') diff --git a/bin/src/lint.rs b/bin/src/lint.rs index 65ae824..e889d31 100644 --- a/bin/src/lint.rs +++ b/bin/src/lint.rs @@ -1,5 +1,3 @@ -use crate::err::LintErr; - use lib::{Report, LINTS}; use rnix::WalkEvent; use vfs::{FileId, VfsEntry}; @@ -10,11 +8,16 @@ pub struct LintResult { pub reports: Vec, } -pub fn lint(vfs_entry: VfsEntry) -> Result { +pub fn lint(vfs_entry: VfsEntry) -> LintResult { + let file_id = vfs_entry.file_id; let source = vfs_entry.contents; - let parsed = rnix::parse(source) - .as_result() - .map_err(|e| LintErr::Parse(vfs_entry.file_path.to_path_buf(), e))?; + let parsed = rnix::parse(source); + + let error_reports = parsed + .errors() + .into_iter() + .map(|e| Report::from_parse_err(e)); + let reports = parsed .node() .preorder_with_tokens() @@ -28,9 +31,8 @@ pub fn lint(vfs_entry: VfsEntry) -> Result { _ => None, }) .flatten() + .chain(error_reports) .collect(); - Ok(LintResult { - file_id: vfs_entry.file_id, - reports, - }) + + LintResult { file_id, reports } } -- cgit v1.2.3