ackerman 0.1.1

Yggdrasil Shared Structure
Documentation
use super::*;

pub fn top_area_error(src: &str, msg: &str, range: &Range<usize>, file: &GrammarContext) -> Diagnostic {
    Diagnostic {
        range: file.get_lsp_range(range),
        severity: Some(DiagnosticSeverity::WARNING),
        code: None,
        code_description: None,
        source: Some(String::from(src)),
        message: String::from(msg),
        related_information: None,
        tags: None,
        data: None,
    }
}

#[rustfmt::skip]
pub fn duplicate_declaration_error(
    src: &str,
    msg: impl Into<String>,
    this: &Range<usize>,
    last: &Range<usize>,
    file: &GrammarContext
) -> Diagnostic {
    let info = DiagnosticRelatedInformation { location: Location { uri: file.get_url().to_owned(), range: file.get_lsp_range(last) }, message: msg.into() };
    Diagnostic {
        range: file.get_lsp_range(this),
        severity: Some(DiagnosticSeverity::ERROR),
        code: None,
        code_description: None,
        source: Some(String::from(src)),
        message: String::from("Duplicate declaration detected"),
        related_information: Some(vec![info]),
        tags: None,
        data: None,
    }
}