enki-anu 0.2.6

BorrowEngine, task recording, and pipeline synthesis for the Enki runtime
Documentation
use super::event::Diagnostic;
use crate::diagnostics::source::Span;
use parsu::compiler::GpuDiagnostic;

pub fn from_parsu(diag: GpuDiagnostic) -> Diagnostic {
    let spans = diag
        .spans
        .into_iter()
        .map(|s| Span::from_coords(s.file_path, s.line, s.column, s.length, s.role))
        .collect();

    let payload = if diag.code == 9999 {
        diag.message
            .map(|token| super::event::DynamicPayload::InternalCompilerError { token })
    } else {
        None
    };

    Diagnostic {
        code: diag.code,
        spans,
        payload,
    }
}

pub fn from_parsu_batch(diags: Vec<GpuDiagnostic>) -> Vec<Diagnostic> {
    diags.into_iter().map(from_parsu).collect()
}

pub fn bitcode_not_found() -> Diagnostic {
    Diagnostic {
        code: 11,
        spans: Vec::new(),
        payload: None,
    }
}

pub fn toolchain_not_found() -> Diagnostic {
    Diagnostic {
        code: 12,
        spans: Vec::new(),
        payload: None,
    }
}