Skip to content

Commit e0a36d1

Browse files
Escape character -> string conversions - fixes #1135
1 parent 625c207 commit e0a36d1

3 files changed

Lines changed: 21 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
2323

2424
### VB -> C#
2525

26+
* Escape character -> string conversions [#1135](https://github.com/icsharpcode/CodeConverter/issues/1135)
2627
* Convert Not(x IsNot Nothing) to x is null [#1113](https://github.com/icsharpcode/CodeConverter/issues/1113)
2728
* Escape parameter names [#1092](https://github.com/icsharpcode/CodeConverter/issues/1092)
2829

CodeConverter/CSharp/TypeConversionAnalyzer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ private static ExpressionSyntax GetToStringConversionOrNull(ExpressionSyntax csN
470470
}
471471

472472
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))
473+
return LiteralConversions.GetLiteralExpression(t.Value?.ToString(), convertedType: targetType)
474474
.WithLeadingTrivia(csNode.GetLeadingTrivia()).WithTrailingTrivia(csNode.GetTrailingTrivia());
475475
}
476476

Tests/CSharp/ExpressionTests/StringExpressionTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,25 @@ private void TestMethod()
2929
}");
3030
}
3131

32+
[Fact]
33+
public async Task QuoteCharacterAsync()
34+
{
35+
await TestConversionVisualBasicToCSharpAsync(@"Public Class C
36+
Public Sub s
37+
Dim x As String = Chr(34)
38+
x = Chr(92)
39+
End Sub
40+
End Class", @"
41+
public partial class C
42+
{
43+
public void s()
44+
{
45+
string x = ""\"""";
46+
x = @""\"";
47+
}
48+
}");
49+
}
50+
3251
[Fact]
3352
public async Task QuotesAsync()
3453
{

0 commit comments

Comments
 (0)