C# -> VB: unchecked can cause compile error
還沒有人認領這個 Issue。
評估
研究方向
從轉換錯誤中識別出的 CommonConversions.RemodelVariableDeclaration 開始,重現包含 unchecked 十六進位 Color.FromArgb 引數的 C# 輸入。追蹤這些運算式如何轉換為 VB,並驗證輸出與預期的 Dim 宣告相符且沒有轉換錯誤。
由索引模型根據 Issue 內容生成。
描述
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...
- 主要語言
- C#
- 星號
- 913
- 分支
- 244
- PR 合併指標
- 30 天內沒有已合併 PR
環境準備
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
icsharpcode/CodeConverter 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 78/100
icsharpcode/CodeConverter#1271 · 1 則留言 ·
-
C# -> VB
難度 4/5 3-5 天 新手友好度 35/100
icsharpcode/CodeConverter#1281 ·
-
難度 3/5 1-2 天 新手友好度 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#
難度 3/5 1-2 天 新手友好度 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted code未關閉Difficult area VB -> C#
難度 3/5 1-2 天 新手友好度 74/100
icsharpcode/CodeConverter#1272 ·
查看 icsharpcode/CodeConverter 的全部 Issue
相似的 Issue
-
area-ai untriaged
難度 2/5 1-3 小時 新手友好度 85/100
dotnet/extensions#7790 ·
維護者通常 1 天內回覆
-
P2 testing
難度 1/5 1 小時以內 新手友好度 90/100
維護者通常 1 天內回覆
-
area-Infrastructure-coreclr os-ios os-maccatalyst os-tvos untriaged
難度 2/5 1-3 小時 新手友好度 78/100
dotnet/runtime#134766 · 3 則留言 ·
維護者通常 1 天內回覆
-
0 - Backlog Bug
難度 2/5 1-3 小時 新手友好度 88/100
BrighterCommand/Brighter#4444 ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 88/100
維護者通常 1 天內回覆