pub trait ExecContext<'a, Q: QueryContext> {
// Required methods
fn pattern_definitions(&self) -> &[PatternDefinition<Q>];
fn predicate_definitions(&self) -> &[PredicateDefinition<Q>];
fn function_definitions(&self) -> &[GritFunctionDefinition<Q>];
fn ignore_limit_pattern(&self) -> bool;
fn call_built_in(
&self,
call: &'a CallBuiltIn<Q>,
context: &'a Self,
state: &mut State<'a, Q>,
logs: &mut AnalysisLogs,
) -> GritResult<Q::ResolvedPattern<'a>>;
fn call_callback<'b>(
&self,
call: &'a CallbackPattern,
context: &'a Self,
binding: &'b Q::ResolvedPattern<'a>,
state: &mut State<'a, Q>,
logs: &mut AnalysisLogs,
) -> GritResult<bool>;
fn load_file(
&self,
file: &Q::File<'a>,
state: &mut State<'a, Q>,
logs: &mut AnalysisLogs,
) -> GritResult<bool>;
fn files(&self) -> &FileOwners<Q::Tree<'a>>;
fn language(&self) -> &Q::Language<'a>;
fn exec_step(
&'a self,
step: &'a Pattern<Q>,
binding: &Q::ResolvedPattern<'a>,
state: &mut State<'a, Q>,
logs: &mut AnalysisLogs,
) -> GritResult<bool>;
fn name(&self) -> Option<&str>;
}
Expand description
Contains context necessary for query execution.
Required Methods§
fn pattern_definitions(&self) -> &[PatternDefinition<Q>]
fn predicate_definitions(&self) -> &[PredicateDefinition<Q>]
fn function_definitions(&self) -> &[GritFunctionDefinition<Q>]
fn ignore_limit_pattern(&self) -> bool
fn call_built_in( &self, call: &'a CallBuiltIn<Q>, context: &'a Self, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<Q::ResolvedPattern<'a>>
fn call_callback<'b>( &self, call: &'a CallbackPattern, context: &'a Self, binding: &'b Q::ResolvedPattern<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>
Sourcefn load_file(
&self,
file: &Q::File<'a>,
state: &mut State<'a, Q>,
logs: &mut AnalysisLogs,
) -> GritResult<bool>
fn load_file( &self, file: &Q::File<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>
Call this when “entering” a file to lazily load it. This MUST be implemented correctly, or the query engine will not work.
fn files(&self) -> &FileOwners<Q::Tree<'a>>
fn language(&self) -> &Q::Language<'a>
fn exec_step( &'a self, step: &'a Pattern<Q>, binding: &Q::ResolvedPattern<'a>, state: &mut State<'a, Q>, logs: &mut AnalysisLogs, ) -> GritResult<bool>
fn name(&self) -> Option<&str>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.