Skip to content

VB -> C#: Missing cast for int/enum switch #361

Description

@mrmonday

Input code

Module Module1
    Enum E
        A = 1
    End Enum

    Sub Main()
        Dim x = 1
        Select Case x
            Case E.A
                Console.WriteLine("z")
        End Select
    End Sub
End Module

Erroneous output

using System;

namespace ConsoleApp10
{
    static class Module1
    {
        enum E
        {
            A = 1
        }

        public static void Main()
        {
            var x = 1;
            switch (x)
            {
                case var @case when @case == E.A:
                    {
                        Console.WriteLine("z");
                        break;
                    }
            }
        }
    }
}

Expected output

using System;

namespace ConsoleApp10
{
    static class Module1
    {
        enum E
        {
            A = 1
        }

        public static void Main()
        {
            var x = 1;
            switch (x)
            {
                case var @case when @case == (int)E.A:
                    {
                        Console.WriteLine("z");
                        break;
                    }
            }
        }
    }
}

Or, even better:

using System;

namespace ConsoleApp10
{
    static class Module1
    {
        enum E
        {
            A = 1
        }

        public static void Main()
        {
            var x = 1;
            switch (x)
            {
                case (int)E.A:
                    {
                        Console.WriteLine("z");
                        break;
                    }
            }
        }
    }
}

Details

Version in use: master @ 2483369

Metadata

Metadata

Assignees

No one assigned

    Labels

    VB -> C#Specific to VB -> C# conversioncompilation errorA bug where the converted output won't compile

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions