private EnumTypeExtensionNode ParseEnumTypeExtension(ParserContext context) { SyntaxToken start = context.Current; context.ExpectExtendKeyword(); context.ExpectEnumKeyword(); NameNode name = context.ParseName(); List <DirectiveNode> directives = ParseDirectives(context, true); List <EnumValueDefinitionNode> values = ParseEnumValuesDefinition(context); Location location = context.CreateLocation(start); if (directives.Count == 0 && values.Count == 0) { throw context.Unexpected(start); } return(new EnumTypeExtensionNode ( location, name, directives, values )); }
/// <summary> /// Parses an enum type definition. /// <see cref="EnumTypeDefinitionNode" />: /// Description? enum Name Directives[Const]? EnumValuesDefinition? /// </summary> /// <param name="context">The parser context.</param> private EnumTypeDefinitionNode ParseEnumTypeDefinition( ParserContext context) { SyntaxToken start = context.Current; StringValueNode description = ParseDescription(context); context.ExpectEnumKeyword(); NameNode name = ParseName(context); List <DirectiveNode> directives = ParseDirectives(context, true); List <EnumValueDefinitionNode> values = ParseEnumValuesDefinition(context); Location location = context.CreateLocation(start); return(new EnumTypeDefinitionNode ( location, name, description, directives, values )); }