Skip to content

Fix source generator emitting enum members as numeric values#9727

Merged
glen-84 merged 2 commits into
mainfrom
gai/source-gen-enum-attribute-emission
May 18, 2026
Merged

Fix source generator emitting enum members as numeric values#9727
glen-84 merged 2 commits into
mainfrom
gai/source-gen-enum-attribute-emission

Conversation

@glen-84
Copy link
Copy Markdown
Member

@glen-84 glen-84 commented May 18, 2026

No description provided.

Copilot AI review requested due to automatic review settings May 18, 2026 11:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a bug in the Types.Analyzers source generator where enum-typed attribute arguments were emitted as EnumType.<numericValue> (e.g., Visibility.1), producing invalid C#. The new helper resolves the numeric value back to a named enum member, falling back to a numeric cast ((EnumType)value) when no single member matches (e.g., bitwise combinations of [Flags] values).

Changes:

  • Introduce FormatEnumConstant that looks up enum field names by their constant value.
  • Replace the inline enum formatting in FormatTypedConstant with a call to the new helper.
  • Add an analyzer test plus snapshot covering enum and [Flags] enum arguments on a custom attribute applied to a resolver parameter.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/HotChocolate/Core/src/Types.Analyzers/FileBuilders/TypeFileBuilderBase.cs Resolves enum constants to their member names; falls back to numeric cast.
src/HotChocolate/Core/test/Types.Analyzers.Tests/ObjectTypeTests.cs New test verifying generation for enum and [Flags] attribute arguments.
src/HotChocolate/Core/test/Types.Analyzers.Tests/snapshots/ObjectTypeTests.CustomAttribute_With_Enum_And_Flags_Arguments_On_Parameter_MatchesSnapshot.md New snapshot demonstrating the corrected emission (enum members by name, flags combination as (Enum)3).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants