Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

C# -> VB: unchecked can cause compile error

Aberta
#981 2 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
csharp, visualbasic
Domínio
devtools

Direção de pesquisa

Comece com CommonConversions.RemodelVariableDeclaration, identificado no erro de conversão, e reproduza a entrada C# que contém argumentos hexadecimais unchecked para Color.FromArgb. Rastreie como essas expressões são convertidas para VB e verifique se a saída corresponde às declarações Dim esperadas sem erros de conversão.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

C# -> VB
Input code
using System.Drawing;
using System.Windows.Forms;

class ConverterTests {
    public Color[] test1() {
        var textColor = Color.FromArgb(unchecked((int)0xFFCFCFCF));
        var backColor = Color.FromArgb(unchecked((int)0xFF303030));
        var altTextColor = Color.FromArgb(unchecked((int)0xFFFFFFFF));
        var altBackColor = Color.FromArgb(unchecked((int)0xFF515259));

        return new Color[] { textColor, backColor, altTextColor, altBackColor };
    }
}
Erroneous output
Imports System.Drawing
Imports System.Windows.Forms

Friend Class ConverterTests
    Public Function test1() As Color()
                ''' Cannot convert LocalDeclarationStatementSyntax, System.InvalidCastException: Unable to cast object of type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax' to type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax'.
'''    at ICSharpCode.CodeConverter.VB.CommonConversions.RemodelVariableDeclaration(VariableDeclarationSyntax declaration)
'''    at ICSharpCode.CodeConverter.VB.MethodBodyExecutableStatementVisitor.VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
'''    at Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
'''    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
'''    at ICSharpCode.CodeConverter.VB.CommentConvertingMethodBodyVisitor.DefaultVisit(SyntaxNode node)
''' 
''' Input:
'''         var textColor = System.Drawing.Color.FromArgb(unchecked((int)0xFFCFCFCF));
''' 
''' 
                ''' Cannot convert LocalDeclarationStatementSyntax, System.InvalidCastException: Unable to cast object of type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax' to type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax'.
'''    at ICSharpCode.CodeConverter.VB.CommonConversions.RemodelVariableDeclaration(VariableDeclarationSyntax declaration)
'''    at ICSharpCode.CodeConverter.VB.MethodBodyExecutableStatementVisitor.VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
'''    at Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
'''    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
'''    at ICSharpCode.CodeConverter.VB.CommentConvertingMethodBodyVisitor.DefaultVisit(SyntaxNode node)
''' 
''' Input:
'''         var backColor = System.Drawing.Color.FromArgb(unchecked((int)0xFF303030));
''' 
''' 
                ''' Cannot convert LocalDeclarationStatementSyntax, System.InvalidCastException: Unable to cast object of type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax' to type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax'.
'''    at ICSharpCode.CodeConverter.VB.CommonConversions.RemodelVariableDeclaration(VariableDeclarationSyntax declaration)
'''    at ICSharpCode.CodeConverter.VB.MethodBodyExecutableStatementVisitor.VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
'''    at Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
'''    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
'''    at ICSharpCode.CodeConverter.VB.CommentConvertingMethodBodyVisitor.DefaultVisit(SyntaxNode node)
''' 
''' Input:
'''         var altTextColor = System.Drawing.Color.FromArgb(unchecked((int)0xFFFFFFFF));
''' 
''' 
                ''' Cannot convert LocalDeclarationStatementSyntax, System.InvalidCastException: Unable to cast object of type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax' to type 'Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax'.
'''    at ICSharpCode.CodeConverter.VB.CommonConversions.RemodelVariableDeclaration(VariableDeclarationSyntax declaration)
'''    at ICSharpCode.CodeConverter.VB.MethodBodyExecutableStatementVisitor.VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
'''    at Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
'''    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
'''    at ICSharpCode.CodeConverter.VB.CommentConvertingMethodBodyVisitor.DefaultVisit(SyntaxNode node)
''' 
''' Input:
'''         var altBackColor = System.Drawing.Color.FromArgb(unchecked((int)0xFF515259));
''' 
''' 

        Return New Color() {textColor, backColor, altTextColor, altBackColor}
    End Function
End Class
Expected output
Imports System.Drawing
Imports System.Windows.Forms

Friend Class ConverterTests
    Public Function test1() As Color()
        Dim textColor As Color = Color.FromArgb(&HFFCFCFCF)
        Dim backColor As Color = Color.FromArgb(&HFF303030)
        Dim altTextColor As Color = Color.FromArgb(&HFFFFFFFF)
        Dim altBackColor As Color = Color.FromArgb(&HFF515259)

        Return New Color() {textColor, backColor, altTextColor, altBackColor}
    End Function
End Class
Details
  • Product in use: VS extension (Microsoft Visual Studio Community 2019 / Version 16.11.23)
  • Version in use: 9.1.1.0
  • Did you see it working in a previous version, which? / No, but I don't think I've tried this code before
  • I suppose this is fairly minor, fixing the output is easy, but I noticed it when converting a fairly large file, so I suppose it's probably a good idea to fix. I'm happy to help, but not sure I'd be able to figure anything out - this project looks fairly huge...
Linguagem predominante
C#
Estrelas
913
Forks
244
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de icsharpcode/CodeConverter

Todas as issues de icsharpcode/CodeConverter

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.