private static EnumTypeDefinitionNode AddEnumValues( EnumTypeDefinitionNode typeDefinition, EnumTypeExtensionNode typeExtension) { if (typeExtension.Values.Count == 0) { return(typeDefinition); } var values = new OrderedDictionary <string, EnumValueDefinitionNode>(); foreach (EnumValueDefinitionNode value in typeDefinition.Values) { values[value.Name.Value] = value; } foreach (EnumValueDefinitionNode value in typeExtension.Values) { // we allow an extension to override values. values[value.Name.Value] = value; } return(typeDefinition.WithValues(values.Values.ToList())); }
protected override void VisitEnumTypeExtension( EnumTypeExtensionNode node, object context) { _types.Add(SchemaTypeReference.Create( _enumTypeExtensionFactory.Create(_bindingLookup, node))); }
private void VisitEnumTypeExtension( EnumTypeExtensionNode node, ISyntaxWriter writer) { writer.Write(Keywords.Extend); writer.WriteSpace(); VisitEnumTypeDefinitionBase(node, writer); }
protected override void VisitEnumTypeExtension( EnumTypeExtensionNode node, TypeDefinitionItem context) { VisitName(node.Name, context); VisitMany(node.Directives, context, VisitDirective); VisitMany(node.Values, context, VisitEnumValueDefinition); }
public EnumTypeExtension Create(IDescriptorContext context, EnumTypeExtensionNode node) { var preserveSyntaxNodes = context.Options.PreserveSyntaxNodes; var typeDefinition = new EnumTypeDefinition(node.Name.Value); typeDefinition.BindTo = node.GetBindingValue(); SdlToTypeSystemHelper.AddDirectives(typeDefinition, node); DeclareValues(typeDefinition, node.Values, preserveSyntaxNodes); return(EnumTypeExtension.CreateUnsafe(typeDefinition)); }
protected sealed override ISyntaxVisitorAction Enter( ISyntaxNode node, ISyntaxVisitorContext context) { return(node switch { DocumentNode n => Enter(n, context), OperationDefinitionNode n => Enter(n, context), VariableDefinitionNode n => Enter(n, context), VariableNode n => Enter(n, context), SelectionSetNode n => Enter(n, context), FieldNode n => Enter(n, context), ArgumentNode n => Enter(n, context), FragmentSpreadNode n => Enter(n, context), InlineFragmentNode n => Enter(n, context), FragmentDefinitionNode n => Enter(n, context), DirectiveNode n => Enter(n, context), NamedTypeNode n => Enter(n, context), ListTypeNode n => Enter(n, context), NonNullTypeNode n => Enter(n, context), ListValueNode n => Enter(n, context), ObjectValueNode n => Enter(n, context), ObjectFieldNode n => Enter(n, context), IValueNode n => Enter(n, context), SchemaDefinitionNode n => Enter(n, context), OperationTypeDefinitionNode n => Enter(n, context), ScalarTypeDefinitionNode n => Enter(n, context), ObjectTypeDefinitionNode n => Enter(n, context), FieldDefinitionNode n => Enter(n, context), InputValueDefinitionNode n => Enter(n, context), InterfaceTypeDefinitionNode n => Enter(n, context), UnionTypeDefinitionNode n => Enter(n, context), EnumTypeDefinitionNode n => Enter(n, context), EnumValueDefinitionNode n => Enter(n, context), InputObjectTypeDefinitionNode n => Enter(n, context), DirectiveDefinitionNode n => Enter(n, context), SchemaExtensionNode n => Enter(n, context), ScalarTypeExtensionNode n => Enter(n, context), ObjectTypeExtensionNode n => Enter(n, context), InterfaceTypeExtensionNode n => Enter(n, context), UnionTypeExtensionNode n => Enter(n, context), EnumTypeExtensionNode n => Enter(n, context), InputObjectTypeExtensionNode n => Enter(n, context), _ => throw new NotSupportedException() });
protected virtual ISyntaxVisitorAction Enter( EnumTypeExtensionNode node, ISyntaxVisitorContext context) => DefaultAction;
protected virtual ISyntaxVisitorAction Leave( EnumTypeExtensionNode node, TContext context) => DefaultAction;
protected virtual void VisitEnumTypeExtension(EnumTypeExtensionNode node) { }