1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
use std::fmt;
/// An enum of identifiers representing AST nodes.
///
/// This enum can be printed using the [`fmt::Display`] trait.
/// When parsing this enum is used to indicate what AST node encountered a parsing error.
pub enum ASTKind {
/// See: [crate::ast::Definition]
Definition,
/// See: [crate::ast::Document]
Document,
/// See: [crate::ast::OperationDefinition]
OperationDefinition,
/// See: [crate::ast::OperationKind]
OperationKind,
/// See: [crate::ast::FragmentDefinition]
FragmentDefinition,
/// See: [crate::ast::VariableDefinitions]
VariableDefinitions,
/// See: [crate::ast::VariableDefinition]
VariableDefinition,
/// See: [crate::ast::Type]
Type,
/// See: [crate::ast::NamedType]
NamedType,
/// See: `ListType` on [crate::ast::Type]
ListType,
/// See: `NonNullType` on [crate::ast::Type]
NonNullType,
/// See: [crate::ast::Field]
Field,
/// See: [crate::ast::FragmentSpread]
FragmentSpread,
/// See: [crate::ast::InlineFragment]
InlineFragment,
/// See: [crate::ast::SelectionSet]
SelectionSet,
/// See: [crate::ast::Selection]
Selection,
/// See: [crate::ast::Directives]
Directives,
/// See: [crate::ast::Directive]
Directive,
/// See: [crate::ast::Arguments]
Arguments,
/// See: [crate::ast::Argument]
Argument,
/// See: [crate::ast::ObjectValue]
Object,
/// See: [crate::ast::ObjectField]
ObjectField,
/// See: [crate::ast::Value]
Value,
/// See: [crate::ast::Variable]
Variable,
/// See: [crate::ast::StringValue]
String,
/// See: [crate::ast::FloatValue]
Float,
/// See: [crate::ast::IntValue]
Int,
/// See: [crate::ast::BooleanValue]
Boolean,
/// See: [crate::ast::EnumValue]
Enum,
/// See: [crate::ast::ListValue]
List,
}
impl fmt::Display for ASTKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ASTKind::Definition => f.write_str("Definition"),
ASTKind::Document => f.write_str("Document"),
ASTKind::OperationDefinition => f.write_str("Operation Definition"),
ASTKind::OperationKind => f.write_str("Operation Kind"),
ASTKind::FragmentDefinition => f.write_str("Fragment Definition"),
ASTKind::VariableDefinitions => f.write_str("Variable Definitions"),
ASTKind::VariableDefinition => f.write_str("Variable Definition"),
ASTKind::Type => f.write_str("Type"),
ASTKind::NamedType => f.write_str("Type Name"),
ASTKind::ListType => f.write_str("List Type"),
ASTKind::NonNullType => f.write_str("Non-null Type"),
ASTKind::Field => f.write_str("Field"),
ASTKind::FragmentSpread => f.write_str("Fragment Spread"),
ASTKind::InlineFragment => f.write_str("Inline Fragment"),
ASTKind::SelectionSet => f.write_str("Selection Set"),
ASTKind::Selection => f.write_str("Selection"),
ASTKind::Directives => f.write_str("Directives"),
ASTKind::Directive => f.write_str("Directive"),
ASTKind::Arguments => f.write_str("Arguments"),
ASTKind::Argument => f.write_str("Argument"),
ASTKind::Object => f.write_str("Object"),
ASTKind::ObjectField => f.write_str("Object Field"),
ASTKind::Value => f.write_str("Value"),
ASTKind::Variable => f.write_str("Variable"),
ASTKind::String => f.write_str("String"),
ASTKind::Float => f.write_str("Float"),
ASTKind::Int => f.write_str("Integer"),
ASTKind::Boolean => f.write_str("Boolean"),
ASTKind::Enum => f.write_str("Enum"),
ASTKind::List => f.write_str("List"),
}
}
}