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 f094271 JEXL-307: fixing regression, parameter declaration under
lexical feature Task #JEXL-307 - Variable redeclaration option
f094271 is described below
commit f0942719bf96487596fa71f0b7fdcc1d004c34e0
Author: henrib <[email protected]>
AuthorDate: Mon Jan 20 17:12:31 2020 +0100
JEXL-307: fixing regression, parameter declaration under lexical feature
Task #JEXL-307 - Variable redeclaration option
---
.../java/org/apache/commons/jexl3/parser/JexlParser.java | 2 +-
src/test/java/org/apache/commons/jexl3/LexicalTest.java | 12 +++++++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java
b/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java
index 8a5d51b..75de958 100644
--- a/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java
+++ b/src/main/java/org/apache/commons/jexl3/parser/JexlParser.java
@@ -390,7 +390,7 @@ public abstract class JexlParser extends StringParser {
int symbol = frame.declareParameter(identifier);
// not sure how declaring a parameter could fail...
// lexical feature error
- if (!declareSymbol(symbol) && getFeatures().isLexical()) {
+ if (!block.declareSymbol(symbol) && getFeatures().isLexical()) {
JexlInfo xinfo = info.at(token.beginLine, token.beginColumn);
throw new JexlException(xinfo, identifier + ": variable is
already declared", null);
}
diff --git a/src/test/java/org/apache/commons/jexl3/LexicalTest.java
b/src/test/java/org/apache/commons/jexl3/LexicalTest.java
index 699f70a..2d7b820 100644
--- a/src/test/java/org/apache/commons/jexl3/LexicalTest.java
+++ b/src/test/java/org/apache/commons/jexl3/LexicalTest.java
@@ -728,5 +728,15 @@ public class LexicalTest {
Object result = script.execute(jc);
Assert.assertEquals(result, 42);
}
-
+
+ @Test
+ public void testNamed() throws Exception {
+ JexlFeatures f = new JexlFeatures();
+ f.lexical(true);
+ JexlEngine jexl = new JexlBuilder().strict(true).features(f).create();
+ JexlScript script = jexl.createScript("var i = (x, y, z)->{return x +
y + z}; i(22,18,2)");
+ JexlContext jc = new MapContext();
+ Object result = script.execute(null);
+ Assert.assertEquals(result, 42);
+ }
}