parseFragmentDefinition method
Implementation
FragmentDefinitionContext? parseFragmentDefinition() {
if (nextName('fragment') && current != null) {
var FRAGMENT = current!;
if (next(TokenType.NAME)) {
var NAME = current;
if (nextName('on')) {
var ON = current;
var typeCondition = parseTypeCondition();
if (typeCondition != null) {
var dirs = parseDirectives();
var selectionSet = parseSelectionSet();
if (selectionSet != null) {
return FragmentDefinitionContext(
FRAGMENT, NAME, ON, typeCondition, selectionSet)
..directives.addAll(dirs);
} else {
errors.add(SyntaxError(
'Expected selection set in fragment definition.',
typeCondition.span));
return null;
}
} else {
errors.add(SyntaxError(
'Expected type condition after "on" in fragment definition.',
ON?.span));
return null;
}
} else {
errors.add(SyntaxError(
'Expected "on" after name "${NAME?.text}" in fragment definition.',
NAME?.span));
return null;
}
} else {
errors.add(SyntaxError(
'Expected name after "fragment" in fragment definition.',
FRAGMENT.span));
return null;
}
} else {
return null;
}
}