just-lsp 0.3.0

A language server for just
use super::*;

define_rule! {
  /// Reports recipe dependencies that reference recipes which don't exist in the
  /// current document.
  MissingDependencyRule {
    id: "missing-dependencies",
    message: "missing dependency",
    run(context) {
      let mut diagnostics = Vec::new();

      let recipe_names = context.recipe_names();

      for recipe in context.recipes() {
        for dependency in &recipe.dependencies {
          if !recipe_names.contains(&dependency.name) {
            diagnostics.push(Diagnostic::error(
              format!("Recipe `{}` not found", dependency.name),
              dependency.range,
            ));
          }
        }
      }

      diagnostics
    }
  }
}