parseOperationDefinition method

OperationDefinitionContext? parseOperationDefinition()

Implementation

OperationDefinitionContext? parseOperationDefinition() {
  var selectionSet = parseSelectionSet();
  if (selectionSet != null) {
    return OperationDefinitionContext(null, null, null, selectionSet);
  } else {
    if (nextName('mutation') ||
        nextName('query') ||
        nextName('subscription')) {
      var TYPE = current;
      var NAME = next(TokenType.NAME) ? current : null;
      var variables = parseVariableDefinitions();
      var dirs = parseDirectives();
      var selectionSet = parseSelectionSet();
      if (selectionSet != null) {
        return OperationDefinitionContext(TYPE, NAME, variables, selectionSet)
          ..directives.addAll(dirs);
      } else {
        errors.add(SyntaxError(
            'Missing selection set in fragment definition.',
            NAME?.span ?? TYPE?.span));
        return null;
      }
    } else {
      return null;
    }
  }
}