private InterfaceTypeExtensionNode ParseInterfaceTypeExtension(ParserContext context) { SyntaxToken start = context.Current; context.ExpectExtendKeyword(); context.ExpectInterfaceKeyword(); NameNode name = context.ParseName(); List <DirectiveNode> directives = ParseDirectives(context, true); List <FieldDefinitionNode> fields = ParseFieldsDefinition(context); Location location = context.CreateLocation(start); if (directives.Count == 0 && fields.Count == 0) { throw context.Unexpected(start); } return(new InterfaceTypeExtensionNode ( location, name, directives, fields )); }
/// <summary> /// Parses an interface type definition. /// <see cref="InterfaceTypeDefinition" />: /// Description? interface Name Directives[isConstant=true]? FieldsDefinition? /// </summary> /// <param name="context">The parser context.</param> private InterfaceTypeDefinitionNode ParseInterfaceTypeDefinition( ParserContext context) { SyntaxToken start = context.Current; StringValueNode description = ParseDescription(context); context.ExpectInterfaceKeyword(); NameNode name = ParseName(context); List <DirectiveNode> directives = ParseDirectives(context, true); List <FieldDefinitionNode> fields = ParseFieldsDefinition(context); Location location = context.CreateLocation(start); return(new InterfaceTypeDefinitionNode ( location, name, description, directives, fields )); }