Skip to content

Hot Chocolate throws error when Flags Enum is in a paged response #8355

@cabillin

Description

@cabillin

Product

Hot Chocolate

Version

15.1.3

Link to minimal reproduction

https://github.com/cabillin/hot-chocolate-issues/tree/flag_enum_incorrect_handling

Steps to reproduce

query bob {
  parents(first: 1) {
    nodes {
      childId
      id
      flags {
        isANA
      }
    }
  }
}

What is expected?

{
  "data": {
    "parents": {
      "nodes": [
        {
          "childId": "Child1",
          "id": 1,
          "flags": {
            "isANA": false
          }
        }
      ]
    }
  }
}

What is actually happening?

{
  "errors": [
    {
      "message": "Unexpected Execution Error",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "parents"
      ],
      "extensions": {
        "message": "Property 'Int32 Count' is not defined for type 'HotChocolate.Issues.Classes.FlagEnum' (Parameter 'property')",
        "stackTrace": "   at System.Linq.Expressions.Expression.Property(Expression expression, PropertyInfo property)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildAssignmentExpression(PropertyNode node, Context context)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildSelectionSetExpression(Context context, TypeNode parent)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildTypeSwitchExpression(Context context, TypeContainer parent)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildAssignmentExpression(PropertyNode node, Context context)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildSelectionSetExpression(Context context, TypeNode parent)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildTypeSwitchExpression(Context context, TypeContainer parent)\r\n   at HotChocolate.Execution.Projections.SelectionExpressionBuilder.BuildExpression[TRoot](ISelection selection)\r\n   at HotChocolate.Execution.Processing.HotChocolateExecutionSelectionExtensions.<>c__2`1.<GetOrCreateExpression>b__2_0(String _, ValueTuple`2 ctx)\r\n   at HotChocolate.Execution.Processing.Operation.GetOrAddState[TState,TContext](String key, Func`3 createState, TContext context)\r\n   at HotChocolate.Execution.Processing.HotChocolateExecutionSelectionExtensions.GetOrCreateExpression[TValue](ISelection selection)\r\n   at HotChocolate.Execution.Processing.HotChocolateExecutionSelectionExtensions.AsSelector[TValue](ISelection selection)\r\n   at HotChocolate.Data.QueryContextParameterExpressionBuilder.CreateQueryContext[T](IResolverContext context)\r\n   at lambda_method3(Closure, IResolverContext)\r\n   at HotChocolate.Types.Helpers.FieldMiddlewareCompiler.<>c__DisplayClass9_0.<<CreateResolverMiddleware>b__0>d.MoveNext()\r\n--- End of stack trace from previous location ---\r\n   at HotChocolate.Types.UnwrapFieldMiddlewareHelper.<>c__DisplayClass0_1.<<CreateDataMiddleware>b__1>d.MoveNext()\r\n--- End of stack trace from previous location ---\r\n   at HotChocolate.Types.Pagination.PagingMiddleware.InvokeAsync(IMiddlewareContext context)\r\n   at HotChocolate.Execution.Processing.Tasks.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)\r\n   at HotChocolate.Execution.Processing.Tasks.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)"
      }
    }
  ],
  "data": {
    "parents": null
  }
}

Additional Context

query bob {
  parents(first: 1) {
    nodes {
      childId
      id
    }
  }
}

works

query bob {
  parents(first: 2, where: { flags: { eq: { isANA: true } } }) {
    nodes {
      childId
      id
    }
  }
}

returns successfully, but I'm not sure if it is working correctly. I would have expected to get back id 3 and id 5, but I only get back id 3

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions