Skip to content

Fix #780: Cast enum values to underlying type in Select Case range comparisons#1257

Open
GrahamTheCoder wants to merge 2 commits intoicsharpcode:masterfrom
GrahamTheCoder:claude/fix-issue-780-select-case-range-cast
Open

Fix #780: Cast enum values to underlying type in Select Case range comparisons#1257
GrahamTheCoder wants to merge 2 commits intoicsharpcode:masterfrom
GrahamTheCoder:claude/fix-issue-780-select-case-range-cast

Conversation

@GrahamTheCoder
Copy link
Copy Markdown
Member

Fixes #780

When a VB Select Case uses Case enumVal1 To enumVal2, the converter generates C# <= comparisons. C# does not support <= directly on enum values, causing a compilation error. This fix detects when the switch expression is an enum type and casts both operands to the enum's underlying integral type before comparison, producing e.g. (int)EnumType.Value <= (int)@case.

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX

Link to issue(s) this covers

Problem

Link to, or brief information about the issue

Solution

  • Any comments on the approach taken, its consistency with surrounding code, etc.
  • Which part of this PR is most in need of attention/improvement?
  • At least one test covering the code changed

claude added 2 commits April 13, 2026 21:48
…se range comparisons

When a VB Select Case uses `Case enumVal1 To enumVal2`, the converter generates
C# `<=` comparisons. C# does not support `<=` directly on enum values, causing
a compilation error. This fix detects when the switch expression is an enum type
and casts both operands to the enum's underlying integral type before comparison,
producing e.g. `(int)EnumType.Value <= (int)@case`.

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX
… error

The test uses a 'var @case when' pattern which all other similar tests
correctly expect to produce a CS0825 compilation error in the target.
Without this, the test output won't match and CI will fail.

https://claude.ai/code/session_01AkwUvu3XuCdj3D4axoX4UX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

VB -> C#: Select Case involving a range needs cast

2 participants