grit_pattern_matcher/pattern/
step.rs1use super::{
2 patterns::{Matcher, Pattern},
3 state::State,
4};
5use crate::context::{ExecContext, QueryContext};
6use grit_util::{error::GritResult, AnalysisLogs};
7
8#[derive(Debug, Clone)]
9pub struct Step<Q: QueryContext> {
10 pub pattern: Pattern<Q>,
11}
12
13impl<Q: QueryContext> Step<Q> {
14 pub fn new(pattern: Pattern<Q>) -> Self {
15 Self { pattern }
16 }
17}
18
19impl<Q: QueryContext> Matcher<Q> for Step<Q> {
20 fn execute<'a>(
21 &'a self,
22 binding: &Q::ResolvedPattern<'a>,
23 state: &mut State<'a, Q>,
24 context: &'a Q::ExecContext<'a>,
25 logs: &mut AnalysisLogs,
26 ) -> GritResult<bool> {
27 context.exec_step(&self.pattern, binding, state, logs)
28 }
29}