zyn 0.5.4

A proc macro framework with templates, composable elements, and built-in diagnostics
Documentation
#[test]
fn empty_emits_empty_tokens() {
    let d = zyn::mark::new().build();
    let tokens = d.emit();
    assert!(tokens.is_empty());
}

#[test]
fn single_error_emits_compile_error() {
    let d = zyn::mark::error("broken input").build();
    let tokens = d.emit();
    let output = tokens.to_string();
    assert!(output.contains("compile_error"));
    assert!(output.contains("broken input"));
}

#[test]
fn multiple_errors_emit_multiple_compile_errors() {
    let d = zyn::mark::new()
        .add(zyn::mark::error("error one"))
        .add(zyn::mark::error("error two"))
        .build();

    let tokens = d.emit();
    let output = tokens.to_string();
    assert!(output.contains("error one"));
    assert!(output.contains("error two"));
}

#[test]
fn mixed_levels_emit_errors() {
    let d = zyn::mark::new()
        .add(zyn::mark::error("err_token"))
        .add(zyn::mark::warning("warn_token"))
        .build();

    let tokens = d.emit();
    let output = tokens.to_string();
    assert!(output.contains("err_token"));
}