diff --git a/src/Extension/CoreExtension.php b/src/Extension/CoreExtension.php index 3c5d8d474..7c20f7312 100644 --- a/src/Extension/CoreExtension.php +++ b/src/Extension/CoreExtension.php @@ -989,7 +989,7 @@ function twig_compare($a, $b) } // fallback to <=> - return $b <=> $a; + return $a <=> $b; } /** diff --git a/src/Node/Expression/Binary/GreaterBinary.php b/src/Node/Expression/Binary/GreaterBinary.php index 635cf9607..f1af1275b 100644 --- a/src/Node/Expression/Binary/GreaterBinary.php +++ b/src/Node/Expression/Binary/GreaterBinary.php @@ -24,7 +24,7 @@ class GreaterBinary extends AbstractBinary } $compiler - ->raw('-1 === twig_compare(') + ->raw('1 === twig_compare(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) diff --git a/src/Node/Expression/Binary/GreaterEqualBinary.php b/src/Node/Expression/Binary/GreaterEqualBinary.php index 76f33b78e..7d206f7c8 100644 --- a/src/Node/Expression/Binary/GreaterEqualBinary.php +++ b/src/Node/Expression/Binary/GreaterEqualBinary.php @@ -24,7 +24,7 @@ class GreaterEqualBinary extends AbstractBinary } $compiler - ->raw('0 >= twig_compare(') + ->raw('0 <= twig_compare(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) diff --git a/src/Node/Expression/Binary/LessBinary.php b/src/Node/Expression/Binary/LessBinary.php index 1afb0f30a..e85193324 100644 --- a/src/Node/Expression/Binary/LessBinary.php +++ b/src/Node/Expression/Binary/LessBinary.php @@ -24,7 +24,7 @@ class LessBinary extends AbstractBinary } $compiler - ->raw('1 === twig_compare(') + ->raw('-1 === twig_compare(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) diff --git a/src/Node/Expression/Binary/LessEqualBinary.php b/src/Node/Expression/Binary/LessEqualBinary.php index 5a08f33aa..dccaf31aa 100644 --- a/src/Node/Expression/Binary/LessEqualBinary.php +++ b/src/Node/Expression/Binary/LessEqualBinary.php @@ -24,7 +24,7 @@ class LessEqualBinary extends AbstractBinary } $compiler - ->raw('0 <= twig_compare(') + ->raw('0 >= twig_compare(') ->subcompile($this->getNode('left')) ->raw(', ') ->subcompile($this->getNode('right')) diff --git a/tests/Extension/CoreTest.php b/tests/Extension/CoreTest.php index ea5b6b040..61cf31c81 100644 --- a/tests/Extension/CoreTest.php +++ b/tests/Extension/CoreTest.php @@ -285,10 +285,10 @@ class CoreTest extends TestCase [0, '0', '0'], [0, '0', '0.0'], - [1, '0', 'foo'], - [-1, '0', ''], + [-1, '0', 'foo'], + [1, '0', ''], [0, '42', ' 42'], - [1, '42', '42foo'], + [-1, '42', '42foo'], [0, 42, '000042'], [0, 42, '42.0'], @@ -310,6 +310,10 @@ class CoreTest extends TestCase [0, -INF, '-INF'], [0, INF, '1e1000'], [0, -INF, '-1e1000'], + + [-1, 10, 20], + [-1, '10', 20], + [-1, 10, '20'], ]; } }