diff --git a/src/xatu/rules.rs b/src/xatu/rules.rs index 890aca9..45af16e 100644 --- a/src/xatu/rules.rs +++ b/src/xatu/rules.rs @@ -27,6 +27,16 @@ impl std::fmt::Display for Diagnostic { } } +#[expect(dead_code, reason = "retained for planned node rules")] +pub trait NodeRule { + type Node; + + const ID: &'static str; + + fn select(data: &ast::NodeData) -> Option<&Self::Node>; + fn check(node: &Self::Node) -> Option<&'static str>; +} + pub trait TokenRule { type Token; @@ -53,6 +63,21 @@ pub fn run_rules(file: &ast::ParsedFile) -> Vec { .collect() } +#[expect(dead_code, reason = "retained for planned node rules")] +fn run_node_rule(node: &ast::Node) -> Option +where + R: NodeRule, +{ + let typed_node = R::select(&node.data)?; + let message = R::check(typed_node)?; + + Some(Finding { + rule_id: R::ID, + range: node.range, + message, + }) +} + fn run_token_rule(token: &ast::Token) -> Option where R: TokenRule,