use super::folder::Folder;
use super::VisitInfo;
use crate::ast::*;
use crate::error::Result;
pub trait SimpleFolder<'a> {
#[inline]
fn operation(&mut self, operation: OperationDefinition<'a>) -> OperationDefinition<'a> {
operation
}
#[inline]
fn fragment(&mut self, fragment: FragmentDefinition<'a>) -> FragmentDefinition<'a> {
fragment
}
#[inline]
fn variable_definitions(
&mut self,
var_defs: VariableDefinitions<'a>,
) -> VariableDefinitions<'a> {
var_defs
}
#[inline]
fn variable_definition(&mut self, var_def: VariableDefinition<'a>) -> VariableDefinition<'a> {
var_def
}
#[inline]
fn selection_set(&mut self, selection_set: SelectionSet<'a>) -> SelectionSet<'a> {
selection_set
}
#[inline]
fn fragment_spread(&mut self, fragment_spread: FragmentSpread<'a>) -> FragmentSpread<'a> {
fragment_spread
}
#[inline]
fn inline_fragment(&mut self, inline_fragment: InlineFragment<'a>) -> InlineFragment<'a> {
inline_fragment
}
#[inline]
fn field(&mut self, field: Field<'a>) -> Field<'a> {
field
}
#[inline]
fn directives(&mut self, directives: Directives<'a>) -> Directives<'a> {
directives
}
#[inline]
fn directive(&mut self, directive: Directive<'a>) -> Directive<'a> {
directive
}
#[inline]
fn arguments(&mut self, arguments: Arguments<'a>) -> Arguments<'a> {
arguments
}
#[inline]
fn argument(&mut self, argument: Argument<'a>) -> Argument<'a> {
argument
}
#[inline]
fn value(&mut self, value: Value<'a>) -> Value<'a> {
value
}
#[inline]
fn of_type(&mut self, of_type: Type<'a>) -> Type<'a> {
of_type
}
#[inline]
fn variable(&mut self, var: Variable<'a>) -> Variable<'a> {
var
}
#[inline]
fn named_type(&mut self, name: NamedType<'a>) -> NamedType<'a> {
name
}
}
impl<'a, F: SimpleFolder<'a>> Folder<'a> for F {
#[inline]
fn enter_operation(
&mut self,
_ctx: &'a ASTContext,
operation: OperationDefinition<'a>,
_info: &VisitInfo,
) -> Result<OperationDefinition<'a>> {
Ok(SimpleFolder::operation(self, operation))
}
#[inline]
fn leave_operation(
&mut self,
_ctx: &'a ASTContext,
operation: OperationDefinition<'a>,
_info: &VisitInfo,
) -> Result<OperationDefinition<'a>> {
Ok(operation)
}
#[inline]
fn enter_fragment(
&mut self,
_ctx: &'a ASTContext,
fragment: FragmentDefinition<'a>,
_info: &VisitInfo,
) -> Result<FragmentDefinition<'a>> {
Ok(SimpleFolder::fragment(self, fragment))
}
#[inline]
fn leave_fragment(
&mut self,
_ctx: &'a ASTContext,
fragment: FragmentDefinition<'a>,
_info: &VisitInfo,
) -> Result<FragmentDefinition<'a>> {
Ok(fragment)
}
#[inline]
fn variable_definitions(
&mut self,
_ctx: &'a ASTContext,
var_defs: VariableDefinitions<'a>,
_info: &VisitInfo,
) -> Result<VariableDefinitions<'a>> {
Ok(SimpleFolder::variable_definitions(self, var_defs))
}
#[inline]
fn variable_definition(
&mut self,
_ctx: &'a ASTContext,
var_def: VariableDefinition<'a>,
_info: &VisitInfo,
) -> Result<VariableDefinition<'a>> {
Ok(SimpleFolder::variable_definition(self, var_def))
}
#[inline]
fn selection_set(
&mut self,
_ctx: &'a ASTContext,
selection_set: SelectionSet<'a>,
_info: &VisitInfo,
) -> Result<SelectionSet<'a>> {
Ok(SimpleFolder::selection_set(self, selection_set))
}
#[inline]
fn enter_fragment_spread(
&mut self,
_ctx: &'a ASTContext,
fragment_spread: FragmentSpread<'a>,
_info: &VisitInfo,
) -> Result<FragmentSpread<'a>> {
Ok(SimpleFolder::fragment_spread(self, fragment_spread))
}
#[inline]
fn leave_fragment_spread(
&mut self,
_ctx: &'a ASTContext,
fragment_spread: FragmentSpread<'a>,
_info: &VisitInfo,
) -> Result<FragmentSpread<'a>> {
Ok(fragment_spread)
}
#[inline]
fn enter_inline_fragment(
&mut self,
_ctx: &'a ASTContext,
inline_fragment: InlineFragment<'a>,
_info: &VisitInfo,
) -> Result<InlineFragment<'a>> {
Ok(SimpleFolder::inline_fragment(self, inline_fragment))
}
#[inline]
fn leave_inline_fragment(
&mut self,
_ctx: &'a ASTContext,
inline_fragment: InlineFragment<'a>,
_info: &VisitInfo,
) -> Result<InlineFragment<'a>> {
Ok(inline_fragment)
}
#[inline]
fn enter_field(
&mut self,
_ctx: &'a ASTContext,
field: Field<'a>,
_info: &VisitInfo,
) -> Result<Field<'a>> {
Ok(SimpleFolder::field(self, field))
}
#[inline]
fn leave_field(
&mut self,
_ctx: &'a ASTContext,
field: Field<'a>,
_info: &VisitInfo,
) -> Result<Field<'a>> {
Ok(field)
}
#[inline]
fn directives(
&mut self,
_ctx: &'a ASTContext,
directives: Directives<'a>,
_info: &VisitInfo,
) -> Result<Directives<'a>> {
Ok(SimpleFolder::directives(self, directives))
}
#[inline]
fn enter_directive(
&mut self,
_ctx: &'a ASTContext,
directive: Directive<'a>,
_info: &VisitInfo,
) -> Result<Directive<'a>> {
Ok(SimpleFolder::directive(self, directive))
}
#[inline]
fn leave_directive(
&mut self,
_ctx: &'a ASTContext,
directive: Directive<'a>,
_info: &VisitInfo,
) -> Result<Directive<'a>> {
Ok(directive)
}
#[inline]
fn arguments(
&mut self,
_ctx: &'a ASTContext,
arguments: Arguments<'a>,
_info: &VisitInfo,
) -> Result<Arguments<'a>> {
Ok(SimpleFolder::arguments(self, arguments))
}
#[inline]
fn argument(
&mut self,
_ctx: &'a ASTContext,
argument: Argument<'a>,
_info: &VisitInfo,
) -> Result<Argument<'a>> {
Ok(SimpleFolder::argument(self, argument))
}
#[inline]
fn value(
&mut self,
_ctx: &'a ASTContext,
value: Value<'a>,
_info: &VisitInfo,
) -> Result<Value<'a>> {
Ok(SimpleFolder::value(self, value))
}
#[inline]
fn of_type(
&mut self,
_ctx: &'a ASTContext,
of_type: Type<'a>,
_info: &VisitInfo,
) -> Result<Type<'a>> {
Ok(SimpleFolder::of_type(self, of_type))
}
#[inline]
fn variable(
&mut self,
_ctx: &'a ASTContext,
var: Variable<'a>,
_info: &VisitInfo,
) -> Result<Variable<'a>> {
Ok(SimpleFolder::variable(self, var))
}
#[inline]
fn named_type(
&mut self,
_ctx: &'a ASTContext,
name: NamedType<'a>,
_info: &VisitInfo,
) -> Result<NamedType<'a>> {
Ok(SimpleFolder::named_type(self, name))
}
}