Skip to main content

lisette_semantics/passes/
mod.rs

1use diagnostics::LocalSink;
2use syntax::program::UnusedInfo;
3
4use crate::context::AnalysisContext;
5use crate::facts::Facts;
6
7pub(crate) mod checks;
8mod deferred;
9mod fact_producers;
10mod lints;
11
12pub use lints::Lint;
13
14pub(crate) const PARALLEL_THRESHOLD: usize = 4;
15
16pub fn run(
17    analysis: &AnalysisContext,
18    facts: &mut Facts,
19    sink: &LocalSink,
20    unused: &mut UnusedInfo,
21    run_lints: bool,
22) {
23    checks::run_all(analysis, facts, sink);
24    fact_producers::run_all(analysis, facts);
25    deferred::run(facts, sink);
26
27    if run_lints {
28        lints::from_facts::run(facts, unused, sink);
29        lints::ast_walk::run(analysis, sink);
30        lints::ref_graph::run(analysis, facts, unused, sink);
31    }
32}