Skip to content

Commit 55d3ed9

Browse files
committed
Maintaining surrounding parentheses when assigning a method call result executed on the result of a maths operation
1 parent 1147aef commit 55d3ed9

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

ReadableExpressions.UnitTests/WhenTranslatingAssignments.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,20 @@ public void ShouldAssignAVariableInAMethodCallArgument()
357357

358358
var translated = intToString.ToReadableString();
359359

360-
const string EXPECTED = @"i.ToString(value = null)";
360+
Assert.AreEqual("i.ToString(value = null)", translated);
361+
}
361362

362-
Assert.AreEqual(EXPECTED.TrimStart(), translated);
363+
[TestMethod]
364+
public void ShouldAssignAMultiplicationToStringResult()
365+
{
366+
Expression<Func<int, string>> timesThreeToString = i => (i * 3).ToString();
367+
368+
var stringVariable = Expression.Variable(typeof(string), "value");
369+
var stringAssignment = Expression.Assign(stringVariable, timesThreeToString.Body);
370+
371+
var translated = stringAssignment.ToReadableString();
372+
373+
Assert.AreEqual("value = (i * 3).ToString()", translated);
363374
}
364375

365376
[TestMethod]

ReadableExpressions/StringExtensions.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,16 @@ private static bool KeepSurroundingParentheses(Expression expression)
117117
parentExpression = expression.GetParentOrNull();
118118
}
119119

120-
return (expression.NodeType == ExpressionType.Convert);
120+
switch (expression.NodeType)
121+
{
122+
case ExpressionType.Add:
123+
case ExpressionType.Convert:
124+
case ExpressionType.Multiply:
125+
case ExpressionType.Subtract:
126+
return true;
127+
}
128+
129+
return false;
121130

122131
case ExpressionType.Invoke:
123132
var invocation = (InvocationExpression)expression;

0 commit comments

Comments
 (0)