lisette-semantics 0.2.16

Little language inspired by Rust that compiles to Go
Documentation
use diagnostics::LocalSink;
use syntax::ast::Expression;

use crate::passes::lints::ast_walk::casing::{is_screaming_snake_case, to_screaming_snake_case};

pub(crate) fn check(expression: &Expression, sink: &LocalSink) {
    let Expression::Const {
        identifier,
        identifier_span,
        ..
    } = expression
    else {
        return;
    };
    if identifier.starts_with('_') || is_screaming_snake_case(identifier) {
        return;
    }
    sink.push(diagnostics::lint::miscased_screaming_snake(
        identifier_span,
        &to_screaming_snake_case(identifier),
    ));
}