Skip to content

Commit b2823b2

Browse files
committed
Surrounding negated assignments in parenthesis
1 parent cedf5b5 commit b2823b2

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

ReadableExpressions.UnitTests/WhenTranslatingAssignments.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,19 @@ public void ShouldNotWrapAnAssignmentValueInParentheses()
221221
Assert.AreEqual("i = 1 * 2", translated);
222222
}
223223

224+
[TestMethod]
225+
public void ShouldTranslateANegatedBooleanAssignment()
226+
{
227+
var boolVariable1 = Expression.Variable(typeof(bool), "isItNot");
228+
var boolVariable2 = Expression.Variable(typeof(bool), "isIt");
229+
var assignBool = Expression.Assign(boolVariable1, Expression.IsFalse(boolVariable2));
230+
var negated = Expression.Not(assignBool);
231+
232+
var translated = negated.ToReadableString();
233+
234+
Assert.AreEqual("!(isItNot = !isIt)", translated);
235+
}
236+
224237
[TestMethod]
225238
public void ShouldWrapAnAssignmentTernaryTestInParentheses()
226239
{

ReadableExpressions/Translators/NegationExpressionTranslator.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,14 @@ public string TranslateNot(Expression expression, TranslationContext context)
3232

3333
private static string Translate(ExpressionType negationType, Expression expression, TranslationContext context)
3434
{
35-
return _negationsByNodeType[negationType] + context.Translate(expression);
35+
var valueToNegate = context.Translate(expression);
36+
37+
if (valueToNegate.Contains(" "))
38+
{
39+
valueToNegate = valueToNegate.WithSurroundingParentheses(checkExisting: true);
40+
}
41+
42+
return _negationsByNodeType[negationType] + valueToNegate;
3643
}
3744
}
3845
}

0 commit comments

Comments
 (0)