juniper/validation/
traits.rs

1use crate::{
2    Span,
3    ast::{
4        Directive, Document, Field, Fragment, FragmentSpread, InlineFragment, InputValue,
5        Operation, Selection, VariableDefinition,
6    },
7    parser::Spanning,
8    validation::ValidatorContext,
9    value::ScalarValue,
10};
11
12#[doc(hidden)]
13pub trait Visitor<'a, S>
14where
15    S: ScalarValue,
16{
17    fn enter_document(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Document<S>) {}
18    fn exit_document(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Document<S>) {}
19
20    fn enter_operation_definition(
21        &mut self,
22        _: &mut ValidatorContext<'a, S>,
23        _: &'a Spanning<Operation<S>>,
24    ) {
25    }
26    fn exit_operation_definition(
27        &mut self,
28        _: &mut ValidatorContext<'a, S>,
29        _: &'a Spanning<Operation<S>>,
30    ) {
31    }
32
33    fn enter_fragment_definition(
34        &mut self,
35        _: &mut ValidatorContext<'a, S>,
36        _: &'a Spanning<Fragment<S>>,
37    ) {
38    }
39    fn exit_fragment_definition(
40        &mut self,
41        _: &mut ValidatorContext<'a, S>,
42        _: &'a Spanning<Fragment<S>>,
43    ) {
44    }
45
46    fn enter_variable_definition(
47        &mut self,
48        _: &mut ValidatorContext<'a, S>,
49        _: &'a (Spanning<&'a str>, VariableDefinition<S>),
50    ) {
51    }
52    fn exit_variable_definition(
53        &mut self,
54        _: &mut ValidatorContext<'a, S>,
55        _: &'a (Spanning<&'a str>, VariableDefinition<S>),
56    ) {
57    }
58
59    fn enter_directive(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Spanning<Directive<S>>) {}
60    fn exit_directive(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Spanning<Directive<S>>) {}
61
62    fn enter_argument(
63        &mut self,
64        _: &mut ValidatorContext<'a, S>,
65        _: &'a (Spanning<&'a str>, Spanning<InputValue<S>>),
66    ) {
67    }
68    fn exit_argument(
69        &mut self,
70        _: &mut ValidatorContext<'a, S>,
71        _: &'a (Spanning<&'a str>, Spanning<InputValue<S>>),
72    ) {
73    }
74
75    fn enter_selection_set(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a [Selection<S>]) {}
76    fn exit_selection_set(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a [Selection<S>]) {}
77
78    fn enter_field(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Spanning<Field<S>>) {}
79    fn exit_field(&mut self, _: &mut ValidatorContext<'a, S>, _: &'a Spanning<Field<S>>) {}
80
81    fn enter_fragment_spread(
82        &mut self,
83        _: &mut ValidatorContext<'a, S>,
84        _: &'a Spanning<FragmentSpread<S>>,
85    ) {
86    }
87    fn exit_fragment_spread(
88        &mut self,
89        _: &mut ValidatorContext<'a, S>,
90        _: &'a Spanning<FragmentSpread<S>>,
91    ) {
92    }
93
94    fn enter_inline_fragment(
95        &mut self,
96        _: &mut ValidatorContext<'a, S>,
97        _: &'a Spanning<InlineFragment<S>>,
98    ) {
99    }
100    fn exit_inline_fragment(
101        &mut self,
102        _: &mut ValidatorContext<'a, S>,
103        _: &'a Spanning<InlineFragment<S>>,
104    ) {
105    }
106
107    fn enter_null_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, ()>) {}
108    fn exit_null_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, ()>) {}
109
110    fn enter_scalar_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, S>) {}
111    fn exit_scalar_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, S>) {}
112
113    fn enter_enum_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, String>) {}
114    fn exit_enum_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedInput<'a, String>) {}
115
116    fn enter_variable_value(
117        &mut self,
118        _: &mut ValidatorContext<'a, S>,
119        _: SpannedInput<'a, String>,
120    ) {
121    }
122    fn exit_variable_value(
123        &mut self,
124        _: &mut ValidatorContext<'a, S>,
125        _: SpannedInput<'a, String>,
126    ) {
127    }
128
129    fn enter_list_value(
130        &mut self,
131        _: &mut ValidatorContext<'a, S>,
132        _: SpannedInput<'a, Vec<Spanning<InputValue<S>>>>,
133    ) {
134    }
135    fn exit_list_value(
136        &mut self,
137        _: &mut ValidatorContext<'a, S>,
138        _: SpannedInput<'a, Vec<Spanning<InputValue<S>>>>,
139    ) {
140    }
141
142    fn enter_object_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedObject<'a, S>) {}
143    fn exit_object_value(&mut self, _: &mut ValidatorContext<'a, S>, _: SpannedObject<'a, S>) {}
144
145    fn enter_object_field(
146        &mut self,
147        _: &mut ValidatorContext<'a, S>,
148        _: (SpannedInput<'a, String>, SpannedInput<'a, InputValue<S>>),
149    ) {
150    }
151    fn exit_object_field(
152        &mut self,
153        _: &mut ValidatorContext<'a, S>,
154        _: (SpannedInput<'a, String>, SpannedInput<'a, InputValue<S>>),
155    ) {
156    }
157}
158
159type SpannedInput<'a, T> = Spanning<&'a T, &'a Span>;
160type SpannedObject<'a, S> = SpannedInput<'a, Vec<(Spanning<String>, Spanning<InputValue<S>>)>>;