Skip to main content

runmat_static_analysis/
lib.rs

1pub mod lints;
2
3pub use lints::shape::infer_binding_shapes;
4pub use lints::shape::lint_shapes;
5
6pub fn lint_mir_analysis(result: &runmat_hir::LoweringResult) -> Vec<runmat_hir::HirDiagnostic> {
7    let mir = match runmat_mir::lowering::lower_assembly(&result.assembly) {
8        Ok(mir) => mir,
9        Err(err) => {
10            return vec![runmat_hir::HirDiagnostic::new(
11                "lint.mir.lowering_failed",
12                runmat_hir::HirDiagnosticSeverity::Error,
13                format!("MIR lowering failed: {}", err.message),
14                err.span.unwrap_or(runmat_hir::Span { start: 0, end: 0 }),
15            )
16            .with_category("mir-lowering")]
17        }
18    };
19    runmat_mir::analysis::analyze_assembly(&mir).diagnostics
20}