vyre-libs 0.6.1

vyre Category A library ecosystem - pure-IR compositions over vyre-ops hardware primitives
Documentation
use super::*;

pub(crate) struct ReplacementTokenView {
    pub(crate) spelling_start: u32,
    pub(crate) spelling_len: u32,
}

pub(crate) fn collect_replacement_token_views(
    replacement_tokens: &ClassifiedTokens,
) -> SmallVec<[ReplacementTokenView; 8]> {
    let mut out = SmallVec::new();
    for idx in 0..replacement_tokens.tok_types.len() {
        if replacement_tokens.tok_types[idx] == 0 {
            continue;
        }
        let Ok(start) = token_start(replacement_tokens, idx) else {
            continue;
        };
        let Ok(len) = token_len(replacement_tokens, idx) else {
            continue;
        };
        out.push(ReplacementTokenView {
            spelling_start: start,
            spelling_len: len,
        });
    }
    out
}

pub(crate) fn replacement_token_count(replacement_tokens: &ClassifiedTokens) -> usize {
    replacement_tokens
        .tok_types
        .iter()
        .filter(|kind| **kind != 0)
        .count()
}