diff --git a/CodeConverter/CSharp/TypeConversionAnalyzer.cs b/CodeConverter/CSharp/TypeConversionAnalyzer.cs index 73cf867ae..37702e34b 100644 --- a/CodeConverter/CSharp/TypeConversionAnalyzer.cs +++ b/CodeConverter/CSharp/TypeConversionAnalyzer.cs @@ -469,6 +469,11 @@ private static ExpressionSyntax GetToStringConversionOrNull(ExpressionSyntax csN return csNode; } + if (currentType is {SpecialType: SpecialType.System_Char} && csNode is CSSyntax.LiteralExpressionSyntax {Token: {} t} l) { + return SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Token(t.LeadingTrivia, SyntaxKind.StringLiteralToken, "\"" + t.Text.Trim('\'') + "\"", t.ValueText, t.TrailingTrivia)) + .WithLeadingTrivia(csNode.GetLeadingTrivia()).WithTrailingTrivia(csNode.GetTrailingTrivia()); + } + if (currentType.IsNumericType()) { var toString = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, csNode.AddParens(), ValidSyntaxFactory.IdentifierName(toStringMethodName)); diff --git a/Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs b/Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs index 2e866f01c..5a8d26e07 100644 --- a/Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs +++ b/Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs @@ -310,6 +310,7 @@ public void PositionEnumFromString(char c) Console.WriteLine(1); break; } + case ',': { Console.WriteLine(2); diff --git a/Tests/CSharp/SpecialConversionTests.cs b/Tests/CSharp/SpecialConversionTests.cs index d858bbc9d..95b4bbe06 100644 --- a/Tests/CSharp/SpecialConversionTests.cs +++ b/Tests/CSharp/SpecialConversionTests.cs @@ -317,9 +317,9 @@ public void Test() string a; a = Conversions.ToString(Chr(2)); a = Conversions.ToString(Chr(2)); - a = Conversions.ToString('\u0002'); - a = Conversions.ToString('\u0002'); - a = Conversions.ToString('\u0002'); + a = ""\u0002""; + a = ""\u0002""; + a = ""\u0002""; } public void TestW() @@ -327,9 +327,9 @@ public void TestW() string a; a = Conversions.ToString(ChrW(2)); a = Conversions.ToString(ChrW(2)); - a = Conversions.ToString('\u0002'); - a = Conversions.ToString('\u0002'); - a = Conversions.ToString('\u0002'); + a = ""\u0002""; + a = ""\u0002""; + a = ""\u0002""; } public char Chr(object o)