-
Notifications
You must be signed in to change notification settings - Fork 224
Closed
Labels
C# -> VBSpecific to C# -> VB conversionSpecific to C# -> VB conversion
Milestone
Description
Input code
namespace ICSharpCode.CodeConverter.Shared
{
public class SolutionConverter
{
private static string ApplyReplacements(string originalText, IEnumerable<(string, string)> replacements)
{
foreach (var (oldValue, newValue) in replacements)
{
originalText = Regex.Replace(originalText, oldValue, newValue, RegexOptions.IgnoreCase);
}
return originalText;
}
}
}
Erroneous output
CONVERSION ERROR: Conversion for ParenthesizedVariableDesignation not implemented, please report this issue in '(oldValue, newValue)' at character 240
at ICSharpCode.CodeConverter.VB.NodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignationSyntax node)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.ParenthesizedVariableDesignationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.ParenthesizedVariableDesignationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitDeclarationExpression(DeclarationExpressionSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.DeclarationExpressionSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.CommonConversions.ConvertToVariableDeclarator(DeclarationExpressionSyntax des)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList[TNode](IEnumerable`1 nodes)
at ICSharpCode.CodeConverter.VB.CommonConversions.ConvertToDeclarationStatement(List`1 des, List`1 isPatternExpressions)
at ICSharpCode.CodeConverter.VB.CommonConversions.InsertRequiredDeclarations(SyntaxList`1 convertedStatements, CSharpSyntaxNode originaNode)
at ICSharpCode.CodeConverter.VB.CommonConversions.ConvertStatement(StatementSyntax statement, CSharpSyntaxVisitor`1 methodBodyVisitor)
at ICSharpCode.CodeConverter.VB.CommonConversions.<>c__DisplayClass5_0.<ConvertStatements>b__0(StatementSyntax s)
at System.Linq.Enumerable.<SelectManyIterator>d__17`2.MoveNext()
at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)
at ICSharpCode.CodeConverter.VB.CommonConversions.ConvertStatements(SyntaxList`1 statements, MethodBodyVisitor iteratorState)
at ICSharpCode.CodeConverter.VB.CommonConversions.ConvertBody(BlockSyntax body, ArrowExpressionClauseSyntax expressionBody, MethodBodyVisitor iteratorState)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitMethodDeclaration(MethodDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitMethodDeclaration(MethodDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.NodesVisitor.<VisitClassDeclaration>b__23_0(MemberDeclarationSyntax m)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitClassDeclaration(ClassDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitClassDeclaration(ClassDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.NodesVisitor.<VisitNamespaceDeclaration>b__21_0(MemberDeclarationSyntax m)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.NamespaceDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.NamespaceDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.NodesVisitor.<VisitCompilationUnit>b__15_1(MemberDeclarationSyntax m)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)
at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)
at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitCompilationUnit(CompilationUnitSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)
at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitCompilationUnit(CompilationUnitSyntax node)
at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)
at ICSharpCode.CodeConverter.VB.CSharpConverter.ConvertCompilationTree(CSharpCompilation compilation, CSharpSyntaxTree tree)
at ICSharpCode.CodeConverter.VB.CSToVBConversion.SingleFirstPass(Compilation sourceCompilation, SyntaxTree tree)
at ICSharpCode.CodeConverter.Shared.ProjectConversion.SingleFirstPass(SyntaxTree tree, String treeFilePath)
at ICSharpCode.CodeConverter.Shared.ProjectConversion.FirstPass()```
Expected output
Namespace ICSharpCode.CodeConverter.Shared
Public Class SolutionConverter
Private Shared Function ApplyReplacements(ByVal originalText As String, ByVal replacements As IEnumerable(Of (String, String))) As String
Dim oldValue As String
Dim newValue As String
For Each oldValuenewValueTempTuple In replacements
oldValue = oldValuenewValueTempTuple.Item1
newValue = oldValuenewValueTempTuple.Item2
originalText = Regex.Replace(originalText, oldValue, newValue, RegexOptions.IgnoreCase)
Next
Return originalText
End Function
End Class
End Namespace
Details
VisitTupleElement will also need implemented.
Metadata
Metadata
Assignees
Labels
C# -> VBSpecific to C# -> VB conversionSpecific to C# -> VB conversion