C# -> VB: unchecked can cause compile error
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 45/100
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
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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de icsharpcode/CodeConverter
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
icsharpcode/CodeConverter#1271 · 1 comentário ·
-
C# -> VB
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
icsharpcode/CodeConverter#1281 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted codeAbertaDifficult area VB -> C#
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 74/100
icsharpcode/CodeConverter#1272 ·
Todas as issues de icsharpcode/CodeConverter
Issues semelhantes
-
area-ai untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
dotnet/extensions#7790 ·
Mantenedores costumam responder em até 1 dia
-
P2 testing
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
Mantenedores costumam responder em até 1 dia
-
area-Infrastructure-coreclr os-ios os-maccatalyst os-tvos untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
dotnet/runtime#134766 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
0 - Backlog Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
BrighterCommand/Brighter#4444 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia