veryl-analyzer 0.20.0

A modern hardware description language
Documentation
use crate::analyzer_error::{AnalyzerError, MismatchTypeKind};
use crate::conv::Context;
use crate::symbol::Symbol;
use veryl_parser::Stringifier;
use veryl_parser::veryl_grammar_trait::*;
use veryl_parser::veryl_walker::VerylWalker;

pub fn check_bind_target(
    context: &mut Context,
    identifier: &ScopedIdentifier,
    target: &Symbol,
) -> bool {
    if !(target.is_module(false) || target.is_interface(false)) {
        let mut stringifier = Stringifier::new();
        stringifier.scoped_identifier(identifier);
        let name = stringifier.as_str();

        context.insert_error(AnalyzerError::mismatch_type(
            MismatchTypeKind::SymbolKind {
                name: name.to_string(),
                expected: "module or interface".to_string(),
                actual: target.kind.to_kind_name(),
            },
            &identifier.into(),
        ));
        return false;
    }
    true
}