Skip to content

Commit 14f21aa

Browse files
committed
parser: Inline 'parse_executable_definition' to simplify code
Replicates graphql/graphql-js@d130a60
1 parent 32a2e6b commit 14f21aa

File tree

1 file changed

+7
-18
lines changed

1 file changed

+7
-18
lines changed

src/graphql/language/parser.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
EnumTypeExtensionNode,
1313
EnumValueDefinitionNode,
1414
EnumValueNode,
15-
ExecutableDefinitionNode,
1615
FieldDefinitionNode,
1716
FieldNode,
1817
FloatValueNode,
@@ -183,9 +182,8 @@ def parse_document(self) -> DocumentNode:
183182
)
184183

185184
_parse_definition_method_names: Dict[str, str] = {
186-
**dict.fromkeys(
187-
("query", "mutation", "subscription", "fragment"), "executable_definition"
188-
),
185+
**dict.fromkeys(("query", "mutation", "subscription"), "operation_definition"),
186+
"fragment": "fragment_definition",
189187
**dict.fromkeys(
190188
(
191189
"schema",
@@ -203,15 +201,18 @@ def parse_document(self) -> DocumentNode:
203201
}
204202

205203
def parse_definition(self) -> DefinitionNode:
206-
"""Definition: ExecutableDefinition or TypeSystemDefinition/Extension"""
204+
"""Definition: ExecutableDefinition or TypeSystemDefinition/Extension
205+
206+
ExecutableDefinition: OperationDefinition or FragmentDefinition
207+
"""
207208
if self.peek(TokenKind.NAME):
208209
method_name = self._parse_definition_method_names.get(
209210
cast(str, self._lexer.token.value)
210211
)
211212
if method_name:
212213
return getattr(self, f"parse_{method_name}")()
213214
elif self.peek(TokenKind.BRACE_L):
214-
return self.parse_executable_definition()
215+
return self.parse_operation_definition()
215216
elif self.peek_description():
216217
return self.parse_type_system_definition()
217218
raise self.unexpected()
@@ -221,18 +222,6 @@ def parse_definition(self) -> DefinitionNode:
221222
**dict.fromkeys(("fragment",), "fragment_definition"),
222223
}
223224

224-
def parse_executable_definition(self) -> ExecutableDefinitionNode:
225-
"""ExecutableDefinition: OperationDefinition or FragmentDefinition"""
226-
if self.peek(TokenKind.NAME):
227-
method_name = self._parse_executable_definition_method_names.get(
228-
cast(str, self._lexer.token.value)
229-
)
230-
if method_name:
231-
return getattr(self, f"parse_{method_name}")()
232-
elif self.peek(TokenKind.BRACE_L):
233-
return self.parse_operation_definition()
234-
raise self.unexpected()
235-
236225
# Implement the parsing rules in the Operations section.
237226

238227
def parse_operation_definition(self) -> OperationDefinitionNode:

0 commit comments

Comments
 (0)