Skip to content

Commit 480e4e8

Browse files
Convert constant characters directly to constant strings
1 parent b8c5a10 commit 480e4e8

3 files changed

Lines changed: 12 additions & 6 deletions

File tree

CodeConverter/CSharp/TypeConversionAnalyzer.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,11 @@ private static ExpressionSyntax GetToStringConversionOrNull(ExpressionSyntax csN
469469
return csNode;
470470
}
471471

472+
if (currentType is {SpecialType: SpecialType.System_Char} && csNode is CSSyntax.LiteralExpressionSyntax {Token: {} t} l) {
473+
return SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Token(t.LeadingTrivia, SyntaxKind.StringLiteralToken, "\"" + t.Text.Trim('\'') + "\"", t.ValueText, t.TrailingTrivia))
474+
.WithLeadingTrivia(csNode.GetLeadingTrivia()).WithTrailingTrivia(csNode.GetTrailingTrivia());
475+
}
476+
472477
if (currentType.IsNumericType()) {
473478
var toString = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression,
474479
csNode.AddParens(), ValidSyntaxFactory.IdentifierName(toStringMethodName));

Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ public void PositionEnumFromString(char c)
310310
Console.WriteLine(1);
311311
break;
312312
}
313+
313314
case ',':
314315
{
315316
Console.WriteLine(2);

Tests/CSharp/SpecialConversionTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -317,19 +317,19 @@ public void Test()
317317
string a;
318318
a = Conversions.ToString(Chr(2));
319319
a = Conversions.ToString(Chr(2));
320-
a = Conversions.ToString('\u0002');
321-
a = Conversions.ToString('\u0002');
322-
a = Conversions.ToString('\u0002');
320+
a = ""\u0002"";
321+
a = ""\u0002"";
322+
a = ""\u0002"";
323323
}
324324
325325
public void TestW()
326326
{
327327
string a;
328328
a = Conversions.ToString(ChrW(2));
329329
a = Conversions.ToString(ChrW(2));
330-
a = Conversions.ToString('\u0002');
331-
a = Conversions.ToString('\u0002');
332-
a = Conversions.ToString('\u0002');
330+
a = ""\u0002"";
331+
a = ""\u0002"";
332+
a = ""\u0002"";
333333
}
334334
335335
public char Chr(object o)

0 commit comments

Comments
 (0)