You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2022/05/09 09:26:35 UTC
[commons-jexl] branch master updated: JEXL-360: missed a few test cases; - opportunistic fix of '%=' not being controlled for side-effects;
This is an automated email from the ASF dual-hosted git repository.
henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push:
new 57b6a5a4 JEXL-360: missed a few test cases; - opportunistic fix of '%=' not being controlled for side-effects;
57b6a5a4 is described below
commit 57b6a5a4b6db0fe9f75b7ef73dabaf60bd09d17f
Author: henrib <he...@apache.org>
AuthorDate: Mon May 9 11:20:18 2022 +0200
JEXL-360: missed a few test cases;
- opportunistic fix of '%=' not being controlled for side-effects;
---
.../org/apache/commons/jexl3/parser/FeatureController.java | 5 +++++
src/test/java/org/apache/commons/jexl3/FeaturesTest.java | 4 ++++
.../java/org/apache/commons/jexl3/ShiftOperatorsTest.java | 12 ++++++++----
src/test/java/org/apache/commons/jexl3/SideEffectTest.java | 12 ++++++++++++
4 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/commons/jexl3/parser/FeatureController.java b/src/main/java/org/apache/commons/jexl3/parser/FeatureController.java
index 23e290b0..b6487db6 100644
--- a/src/main/java/org/apache/commons/jexl3/parser/FeatureController.java
+++ b/src/main/java/org/apache/commons/jexl3/parser/FeatureController.java
@@ -214,6 +214,11 @@ public class FeatureController extends ScriptVisitor {
return controlSideEffect(node, data);
}
+ @Override
+ protected Object visit(final ASTSetModNode node, final Object data) {
+ return controlSideEffect(node, data);
+ }
+
@Override
protected Object visit(final ASTSetAndNode node, final Object data) {
return controlSideEffect(node, data);
diff --git a/src/test/java/org/apache/commons/jexl3/FeaturesTest.java b/src/test/java/org/apache/commons/jexl3/FeaturesTest.java
index edaa2b73..6893b46f 100644
--- a/src/test/java/org/apache/commons/jexl3/FeaturesTest.java
+++ b/src/test/java/org/apache/commons/jexl3/FeaturesTest.java
@@ -125,9 +125,13 @@ public class FeaturesTest extends JexlTestCase {
"x -= 1",
"x *= 1",
"x /= 1",
+ "x %= 1",
"x ^= 1",
"x &= 1",
"x |= 1",
+ "x >>= 1",
+ "x <<= 1",
+ "x >>>= 1",
};
checkFeature(f, scripts);
}
diff --git a/src/test/java/org/apache/commons/jexl3/ShiftOperatorsTest.java b/src/test/java/org/apache/commons/jexl3/ShiftOperatorsTest.java
index 2bff54d3..d9e0a262 100644
--- a/src/test/java/org/apache/commons/jexl3/ShiftOperatorsTest.java
+++ b/src/test/java/org/apache/commons/jexl3/ShiftOperatorsTest.java
@@ -151,10 +151,14 @@ public class ShiftOperatorsTest extends JexlTestCase {
@Test
public void testOverloadedShift() throws Exception {
JexlEngine jexl = new JexlBuilder().arithmetic(new ShiftArithmetic(true)).create();
- JexlScript e = jexl.createScript("x << 'Left'", "x");
- StringBuilder x = new StringBuilder("1");
- Object o = e.execute(null, x);
- Assert.assertEquals(e.getSourceText(), "1Left", x.toString());
+ StringBuilder x;
+ JexlScript e;
+ Object o;
+
+ x = new StringBuilder("1");
+ e = jexl.createScript("x << 'Left'", "x");
+ o = e.execute(null, x);
+ Assert.assertEquals(e.getSourceText(), "1Left", o.toString());
e = jexl.createScript("'Right' >> x", "x");
x = new StringBuilder("1");
diff --git a/src/test/java/org/apache/commons/jexl3/SideEffectTest.java b/src/test/java/org/apache/commons/jexl3/SideEffectTest.java
index c258b7d9..a198165a 100644
--- a/src/test/java/org/apache/commons/jexl3/SideEffectTest.java
+++ b/src/test/java/org/apache/commons/jexl3/SideEffectTest.java
@@ -89,6 +89,18 @@ public class SideEffectTest extends JexlTestCase {
context.put("foo", foo);
asserter.assertExpression("foo ^= 2", (long)(i41 ^ 2));
Assert.assertEquals(context.get("foo"), (long)(i41 ^ 2));
+
+ context.put("foo", foo);
+ asserter.assertExpression("foo <<= 2", (long)(i41 << 2));
+ Assert.assertEquals(context.get("foo"), (long)(i41 << 2));
+
+ context.put("foo", foo);
+ asserter.assertExpression("foo >>= 2", (long)(i41 >> 2));
+ Assert.assertEquals(context.get("foo"), (long)(i41 >> 2));
+
+ context.put("foo", foo);
+ asserter.assertExpression("foo >>>= 2", (long)(i41 >>> 2));
+ Assert.assertEquals(context.get("foo"), (long)(i41 >>> 2));
}
@Test