feat(xatu): reject files with parse errors #72
@@ -10,6 +10,7 @@ pub trait ResultExt<T> {
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Code {
|
||||
InvalidArgument,
|
||||
FailedPrecondition,
|
||||
NotFound,
|
||||
PermissionDenied,
|
||||
Internal,
|
||||
@@ -39,6 +40,10 @@ impl Status {
|
||||
Self::new(Code::InvalidArgument, message)
|
||||
}
|
||||
|
||||
pub fn failed_precondition(message: impl Into<String>) -> Self {
|
||||
Self::new(Code::FailedPrecondition, message)
|
||||
}
|
||||
|
||||
pub fn permission_denied(message: impl Into<String>) -> Self {
|
||||
Self::new(Code::PermissionDenied, message)
|
||||
}
|
||||
|
||||
@@ -13,6 +13,13 @@ pub fn run(files: Vec<SourceFile>) -> status::Result<()> {
|
||||
let file = store.get(file_id);
|
||||
let parsed = parser::parse_file(file_id, &file.source);
|
||||
|
||||
if !parsed.errors.is_empty() {
|
||||
return Err(status::Status::failed_precondition(format!(
|
||||
"failed to parse {}",
|
||||
file.path.display()
|
||||
)));
|
||||
}
|
||||
|
||||
for diagnostic in rules::run_rules(&parsed) {
|
||||
println!(
|
||||
"{}:{}..{}: {}: {}",
|
||||
|
||||
Reference in New Issue
Block a user