From 4152367f5dee2a70ff49f4aff4040d5d433b8e44 Mon Sep 17 00:00:00 2001 From: Akshay Date: Mon, 13 Sep 2021 22:20:25 +0530 Subject: add demo lint: bool_comparison --- lib/src/lib.rs | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) (limited to 'lib/src/lib.rs') diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 31e1bb2..537f4b3 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -1,7 +1,47 @@ -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); +pub mod lints; + +use rnix::{SyntaxElement, SyntaxKind, TextRange}; +use std::ops::Deref; + +pub trait Rule { + fn validate(&self, node: &SyntaxElement) -> Option; +} + +#[derive(Debug)] +pub struct Diagnostic { + pub at: TextRange, + pub message: String, +} + +impl Diagnostic { + pub fn new(at: TextRange, message: String) -> Self { + Self { at, message } } } + +pub trait Metadata { + fn name(&self) -> &str; + fn note(&self) -> &str; + fn match_with(&self, with: &SyntaxKind) -> bool; +} + +pub trait Lint: Metadata + Rule + Send + Sync {} + +// #[macro_export] +// macro_rules! lint_map { +// ($($s:ident),*,) => { +// lint_map($($s),*); +// } +// ($($s:ident),*) => { +// use ::std::collections::HashMap; +// use rnix::SyntaxKind; +// $( +// mod $s; +// )* +// ::lazy_static::lazy_static! { +// pub static ref RULES: HashMap> = { +// vec![$(&*$s::LINT,)*] +// } +// } +// } +// } -- cgit v1.2.3