refactor(xatu): retain node rule scaffolding
This commit is contained in:
@@ -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 {
|
pub trait TokenRule {
|
||||||
type Token;
|
type Token;
|
||||||
|
|
||||||
@@ -53,6 +63,21 @@ pub fn run_rules(file: &ast::ParsedFile) -> Vec<Diagnostic> {
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[expect(dead_code, reason = "retained for planned node rules")]
|
||||||
|
fn run_node_rule<R>(node: &ast::Node) -> Option<Finding>
|
||||||
|
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<R>(token: &ast::Token) -> Option<Finding>
|
fn run_token_rule<R>(token: &ast::Token) -> Option<Finding>
|
||||||
where
|
where
|
||||||
R: TokenRule,
|
R: TokenRule,
|
||||||
|
|||||||
Reference in New Issue
Block a user