Skip to content

Commit

Permalink
Convert constant characters directly to constant strings
Browse files Browse the repository at this point in the history
  • Loading branch information
GrahamTheCoder committed Dec 21, 2023
1 parent b8c5a10 commit 480e4e8
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
5 changes: 5 additions & 0 deletions CodeConverter/CSharp/TypeConversionAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
1 change: 1 addition & 0 deletions Tests/CSharp/MissingSemanticModelInfo/ExpressionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ public void PositionEnumFromString(char c)
Console.WriteLine(1);
break;
}
case ',':
{
Console.WriteLine(2);
Expand Down
12 changes: 6 additions & 6 deletions Tests/CSharp/SpecialConversionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -317,19 +317,19 @@ 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()
{
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)
Expand Down

0 comments on commit 480e4e8

Please sign in to comment.