lisette-semantics 0.4.1

Little language inspired by Rust that compiles to Go
Documentation
use crate::passes::walk::NodeCtx;
use syntax::ast::{Expression, FormatStringPart, Literal};

pub fn check_uninterpolated_fstring(expression: &Expression, ctx: &NodeCtx) {
    let Expression::Literal {
        literal: Literal::FormatString(parts),
        span,
        ..
    } = expression
    else {
        return;
    };

    let has_interpolation = parts
        .iter()
        .any(|p| matches!(p, FormatStringPart::Expression(_)));

    if !has_interpolation {
        ctx.sink
            .push(diagnostics::lint::uninterpolated_fstring(span));
    }
}