Skip to content

Commit 4a6d91e

Browse files
committed
Maintaining surrounding parentheses of multi-parameter lambda method arguments
1 parent b2823b2 commit 4a6d91e

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

ReadableExpressions.UnitTests/WhenFormattingCode.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,18 @@ public void ShouldNotRemoveParenthesesFromACastObjectChainedMethodCall()
506506
Assert.AreEqual("strings = ((int[])ints).ToString().Split(',')", translated);
507507
}
508508

509+
[TestMethod]
510+
public void ShouldNotRemoveParenthesesFromMultiParameterLambdaArguments()
511+
{
512+
Expression<Func<IEnumerable<string>, string[]>> stringsConverter =
513+
strings => strings.Select((str, i) => string.Join(i + ": ", str)).ToArray();
514+
515+
const string EXPECTED = "strings.Select((str, i) => string.Join(i + \": \", str)).ToArray()";
516+
var translated = stringsConverter.Body.ToReadableString();
517+
518+
Assert.AreEqual(EXPECTED, translated);
519+
}
520+
509521
[TestMethod]
510522
public void ShouldUseMethodGroupsForStaticMethods()
511523
{

ReadableExpressions/StringExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ private static bool KeepSurroundingParentheses(Expression expression)
117117
}
118118

119119
return (expression.NodeType == ExpressionType.Convert);
120+
121+
case ExpressionType.Lambda:
122+
return ((LambdaExpression)expression).Parameters.Count > 1;
120123
}
121124

122125
return false;

0 commit comments

Comments
 (0)