From 1c97effbc9ce04f1011028f4dc388abdaa15df6f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 23 Feb 2017 20:22:33 +0000 Subject: [PATCH] Make ConditionExpression ! return false for negative numbers. This brings it in line with C/C++ behaviour. --- OpenRA.Game/Support/ConditionExpression.cs | 12 ++---------- OpenRA.Test/OpenRA.Game/ConditionExpressionTest.cs | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/OpenRA.Game/Support/ConditionExpression.cs b/OpenRA.Game/Support/ConditionExpression.cs index 9ffd48ab29..03af2d6f47 100644 --- a/OpenRA.Game/Support/ConditionExpression.cs +++ b/OpenRA.Game/Support/ConditionExpression.cs @@ -641,12 +641,7 @@ namespace OpenRA.Support static Expression AsBool(Expression expression) { - return Expressions.Expression.GreaterThan(expression, Zero); - } - - static Expression AsNegBool(Expression expression) - { - return Expressions.Expression.LessThanOrEqual(expression, Zero); + return Expressions.Expression.NotEqual(expression, Zero); } static Expression IfThenElse(Expression test, Expression ifTrue, Expression ifFalse) @@ -757,10 +752,7 @@ namespace OpenRA.Support case TokenType.Not: { - if (ast.PeekType() == ExpressionType.Bool) - ast.Push(Expressions.Expression.Not(ast.Pop(ExpressionType.Bool))); - else - ast.Push(AsNegBool(ast.Pop(ExpressionType.Int))); + ast.Push(Expressions.Expression.Not(ast.Pop(ExpressionType.Bool))); continue; } diff --git a/OpenRA.Test/OpenRA.Game/ConditionExpressionTest.cs b/OpenRA.Test/OpenRA.Game/ConditionExpressionTest.cs index 66cc5faea7..14cb0475ee 100644 --- a/OpenRA.Test/OpenRA.Game/ConditionExpressionTest.cs +++ b/OpenRA.Test/OpenRA.Game/ConditionExpressionTest.cs @@ -163,7 +163,7 @@ namespace OpenRA.Test AssertValue("!1", 0); AssertValue("!5", 0); AssertValue("!!5", 1); - AssertValue("!-5", 1); + AssertValue("!-5", 0); } [TestCase(TestName = "Relation operations")]