use super::maybe_parse_and_store_regex;
use crate::rule_prelude::*;
declare_lint! {
#[derive(Default)]
NoInvalidRegexp,
regex,
tags(Recommended),
"no-invalid-regexp"
}
#[typetag::serde]
impl CstRule for NoInvalidRegexp {
fn check_node(&self, node: &SyntaxNode, ctx: &mut RuleCtx) -> Option<()> {
let res = maybe_parse_and_store_regex(node, ctx.file_id)?;
if let Err((range, string)) = res {
let err = ctx
.err(self.name(), "invalid regex pattern")
.primary(range, string);
ctx.add_err(err);
}
None
}
}
rule_tests! {
NoInvalidRegexp::default(),
err: {
"RegExp('[')",
"new RegExp('[')",
"RegExp('a', 'h')",
},
ok: {}
}