Skip to content

Using DefaultValueAttribute on enum input type field gives Int in schema on F# #7040

Description

@cmeeren

Product

Hot Chocolate

Version

14.0.0-p.85

Link to minimal reproduction

See zip below

Steps to reproduce

Repro solution: HotChocolateRepro.zip

Repro code for reference:

open Microsoft.AspNetCore.Builder
open Microsoft.Extensions.DependencyInjection
open Microsoft.Extensions.Hosting

type MyEnum =
    | Value1 = 0
    | Value2 = 1

type MyType() =

    [<HotChocolate.Types.DefaultValue(MyEnum.Value1)>]
    member val Enum: MyEnum = MyEnum.Value1 with get, set

type Query() =

    member _.Test(arg: MyType) = ""


module Program =

    [<EntryPoint>]
    let main args =
        let builder = WebApplication.CreateBuilder(args)
        builder.Services.AddGraphQLServer().AddQueryType<Query>() |> ignore
        let app = builder.Build()
        app.MapGraphQL() |> ignore
        app.Run()
        0

What is expected?

type Query {
  test(arg: MyTypeInput): String
}

input MyTypeInput {
  enum: MyEnum! = VALUE1
}

enum MyEnum {
  VALUE1
  VALUE2
}

What is actually happening?

type Query {
  test(arg: MyTypeInput): String
}

input MyTypeInput {
  enum: Int! = 0
}

Relevant log output

No response

Additional context

Strangely enough, the following C# code, which as far as I know is equivalent to the F# code above, does not exhibit the problem, and produces the expected schema:

var builder = WebApplication.CreateBuilder(args);

builder
    .Services
    .AddGraphQLServer()
    .AddQueryType<Query>();

var app = builder.Build();

app.MapGraphQL();
app.Run();

public enum MyEnum
{
    Value1 = 0,
    Value2 = 1
}

public class MyType
{
    [HotChocolate.Types.DefaultValue(MyEnum.Value1)] public MyEnum Enum { get; set; }
}

public class Query
{
    public string Test(MyType arg) => "";
}

I tried also adding the GraphQLType(typeof<MyEnum>) attribute to the field. This did not help.

The following workaround seems to work (requires removing the [DefaultValue] attribute from the property to avoid other bugs):

type MyTypeDescriptor() =
    inherit InputObjectType<MyType>()

    override this.Configure(descriptor: IInputObjectTypeDescriptor<MyType>) : unit =
        descriptor.Field("enum").Type(typeof<MyEnum>).DefaultValue(MyEnum.Value1)
        |> ignore

// In the builder:
.AddType<MyTypeDescriptor>()

Activity

  1. deleted a comment from SvdSinner on Apr 18, 2024
  2. deleted a comment from cmeeren on Apr 18, 2024
  3. SvdSinner commented on Apr 23, 2024

    @SvdSinner

    Why was my comment deleted? I spent more than a day of research on that comment and I come back to check and it is deleted without comment? Please explain.

  4. cmeeren commented on Apr 23, 2024

    @cmeeren
    ContributorAuthor

    I did not delete it, but since it was off-topic, I reported it as such after several days of inactivity had passed. My intention was for the owners of this repo to hide it as off-topic in order to clean up this thread, but apparently it was deleted (along with my reply suggesting that you open a separate issue).

  5. SvdSinner commented on Apr 24, 2024

    @SvdSinner

    I did open another issue, but initially, I was told on the slack channel to post into this thread. The two are most likely related as they post deal specifically with default values of enums. Not sure why you assumed it was off topic.

  6. cmeeren commented on Apr 24, 2024

    @cmeeren
    ContributorAuthor

    There may be many issues related to default enum values. Yours clearly seems to be a completely separate issue for the following reasons, as I described in my (now deleted) original comment:

    • Your bug is about AddMutationConventions throwing. I do not experience that; it is not a symptom of my bug.
    • My bug is specifically about F# and does not repro on C#.

    These two points clearly point to these two bugs not overlapping in any meaningful way. That is why I suggested you open a different issue, and why after some time, I reported the comment as off-topic.

  7. added a commit that references this issue on Feb 27, 2026
    4751743
  8. added a commit that references this issue on Mar 2, 2026
    afd4ba4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions