[ 
https://issues.apache.org/jira/browse/JEXL-307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16963775#comment-16963775
 ] 

Dmitri Blinov commented on JEXL-307:
------------------------------------

The following test case fails with NPE on the second parsing

{code}
package org.apache.commons.jexl3;

import java.util.Set;

import org.junit.Assert;
import org.junit.Test;

/**
 * Test cases for lexical option and feature.
 */
public class LexicalTest extends JexlTestCase {

    public LexicalTest() {
        super("LexicalTest");
    }

    @Test
    public void testLexical3() throws Exception {
        JexlScript e = JEXL.createScript("var s = {}; for (var i : [1]) 
s.add(i); s");
        JexlContext jc = new MapContext();
        Object o = e.execute(jc);
        Assert.assertEquals(Boolean.TRUE, ((Set)o).contains(1));

        e = JEXL.createScript("var s = {}; for (var i : [1]) s.add(i); s");
        o = e.execute(jc);
        Assert.assertEquals(Boolean.TRUE, ((Set)o).contains(1));
    }
{code}

> Variable redeclaration option
> -----------------------------
>
>                 Key: JEXL-307
>                 URL: https://issues.apache.org/jira/browse/JEXL-307
>             Project: Commons JEXL
>          Issue Type: New Feature
>    Affects Versions: 3.1
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>            Priority: Minor
>             Fix For: 3.2
>
>
> As of now, JEXL allows a script writer to redeclare a local variable during 
> script evaluation.
> {code:java}
> var a = 1; var a = 2;{code}
> This may lead to potential errors with misspelled names and clashed 
> variables. Checking for already defined variable is a common feature of many 
> languages. This feature can be implemented in JEXL as an additional option of 
> JexlFeatures class, enabled by default, thus allowing compatibility with 
> existing code.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to