Skip to content

Commit add696c

Browse files
Merge pull request #1191 from jrmoreno1/Issue1170
VB -> C#: Brackets needed around ternary expression
2 parents 1d8143a + c73104b commit add696c

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

CodeConverter/CSharp/CommonConversions.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,10 @@ private async Task<ExpressionSyntax> IncreaseArrayUpperBoundExpressionAsync(VBSy
523523
&& convertedExpression.SkipIntoParens() is CSSyntax.BinaryExpressionSyntax bExp && bExp.IsKind(CSSyntaxKind.SubtractExpression))
524524
return bExp.Left;
525525

526+
if (convertedExpression is CSSyntax.ConditionalExpressionSyntax ce) {
527+
convertedExpression = SyntaxFactory.ParenthesizedExpression(convertedExpression);
528+
}
529+
526530
return SyntaxFactory.BinaryExpression(
527531
CSSyntaxKind.SubtractExpression,
528532
convertedExpression, SyntaxFactory.Token(CSSyntaxKind.PlusToken), SyntaxFactory.LiteralExpression(CSSyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal(1)));

Tests/CSharp/ExpressionTests/AccessExpressionTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,26 @@ public string[][] GetStringsFromAmbiguous(int amb)
209209
}");
210210
}
211211

212+
[Fact]
213+
public async Task TernaryArrayIndexerAsync()
214+
{
215+
await TestConversionVisualBasicToCSharpAsync(@"Public Class A
216+
Public Sub Test()
217+
Dim i as integer = 0
218+
Dim a(If(i = 1, 2, 3)) as string
219+
End Sub
220+
End Class", @"
221+
public partial class A
222+
{
223+
public void Test()
224+
{
225+
int i = 0;
226+
var a = new string[(i == 1 ? 2 : 3) + 1];
227+
}
228+
}");
229+
}
230+
231+
212232
[Fact]
213233
public async Task ElementAtOrDefaultIndexingAsync()
214234
{

0 commit comments

Comments
 (0)