kiutils_kicad 0.3.0

Typed KiCad document model and codecs for seamless, lossless edit round-trips
Documentation
use crate::diagnostic::{Diagnostic, Severity};
use crate::version::VersionPolicy;

pub(crate) fn collect_version_diagnostics(version: Option<i32>) -> Vec<Diagnostic> {
    let policy = VersionPolicy::default();
    let mut diagnostics = Vec::new();

    if let Some(v) = version {
        if policy.reject_older && !policy.accepts(v) {
            diagnostics.push(Diagnostic {
                severity: Severity::Warning,
                code: "legacy_format",
                message: format!(
                    "version {v} is older than v9 target; parsing in compatibility mode"
                ),
                span: None,
                hint: Some("parser support for pre-v9 token variants is best-effort".to_string()),
            });
        }

        if policy.is_future_for_target(v) {
            diagnostics.push(Diagnostic {
                severity: Severity::Warning,
                code: "future_format",
                message: format!(
                    "version {v} is newer than target {:?}; keeping lossless CST for compatibility",
                    policy.target
                ),
                span: None,
                hint: Some("consider newer parser coverage for this token set".to_string()),
            });
        }
    }

    diagnostics
}