grit_pattern_matcher/pattern/
step.rs

1use 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}