Skip to main content

runmat_static_analysis/
lib.rs

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