cmajor 0.7.0

Rust bindings for the Cmajor JIT engine.
Documentation
use cmajor::{
    diagnostic::{Category, Location, Severity},
    Cmajor,
};

#[test]
fn compile_error() {
    let program = r#"
        processor Test {
            input stweam int in;
            
            fn main() {
                advance();
            }
        }
    "#;

    let cmajor = Cmajor::new();

    let error = match cmajor.parse(program).unwrap_err() {
        cmajor::ParseError::ParserError(parser_error) => parser_error,
        _ => panic!("expected parser error"),
    };

    assert_eq!(error.category(), Some(Category::Compile));
    assert_eq!(error.severity(), Severity::Error);
    assert_eq!(error.message(), "Expected a stream type specifier");
    assert_eq!(error.file_name(), None);
    assert_eq!(
        error.location(),
        Location {
            line: 3,
            column: 19
        }
    );
    assert_eq!(error.source_line(), "            input stweam int in;\n");
    assert_eq!(
        error.annotated_line(),
        "            input stweam int in;\n                  ^"
    );
    assert_eq!(
        error.full_description(),
        "3:19: error: Expected a stream type specifier"
    );
}