fix(natu): preserve NixOS cfg bindings

This commit was merged in pull request #104.
This commit is contained in:
2026-09-26 23:24:54 -04:00
parent 5e5c3e2534
commit ac5cc8d659
4 changed files with 49 additions and 25 deletions

View File

@@ -1,3 +1,5 @@
use std::path::Path;
use crate::FileId;
use crate::ast;
use crate::rules::manual_inherit::ManualInherit;
@@ -59,7 +61,7 @@ pub trait TokenRule {
fn check(token: &Self::Token) -> Option<&'static str>;
}
pub fn run_rules(file: &ast::ParsedFile, graph: &ScopeGraph) -> Vec<Diagnostic> {
pub fn run_rules(file: &ast::ParsedFile, graph: &ScopeGraph, path: &Path) -> Vec<Diagnostic> {
let node_diagnostics = file
.nodes
.iter()
@@ -76,13 +78,17 @@ pub fn run_rules(file: &ast::ParsedFile, graph: &ScopeGraph) -> Vec<Diagnostic>
.flat_map(|token| [run_token_rule::<UnquotedUri>(token)])
.flatten();
let let_order_diagnostics = let_order::check(graph).into_iter().map(|finding| Finding {
rule_id: "let_order",
range: finding.range,
message: "Let bindings must follow dependency order",
binding: None,
expected_order: Some(finding.expected_order),
});
let ignore_cfg =
path.starts_with("configs/nixos") || path.to_string_lossy().contains("/configs/nixos/");
let let_order_diagnostics = let_order::check(graph, ignore_cfg)
.into_iter()
.map(|finding| Finding {
rule_id: "let_order",
range: finding.range,
message: "Let bindings must follow dependency order",
binding: None,
expected_order: Some(finding.expected_order),
});
node_diagnostics
.chain(token_diagnostics)