1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use erg_common::error::ErrorKind;
use erg_common::log;
use erg_compiler::context::ModuleContext;
use erg_compiler::error::{CompileError, CompileErrors};
pub(crate) fn filter_errors(ctx: &ModuleContext, errors: CompileErrors) -> CompileErrors {
errors
.into_iter()
.filter_map(|error| filter_error(ctx, error))
.collect()
}
fn filter_error(_ctx: &ModuleContext, error: CompileError) -> Option<CompileError> {
match error.core.kind {
ErrorKind::FeatureError => {
log!(err "this error is ignored:");
log!(err "{error}");
None
}
ErrorKind::VisibilityError => None,
ErrorKind::UnusedWarning => {
let code = error.input.reread_lines(
error.core.loc.ln_begin().unwrap_or(1) as usize,
error.core.loc.ln_end().unwrap_or(1) as usize,
);
if code[0].trim().starts_with("\"\"\"") {
None
} else {
Some(error)
}
}
_ => Some(error),
}
}