jakartaee / expression-language

Jakarta Expression Language
https://eclipse.org/ee4j/el
Other
67 stars 49 forks source link

ParseException against a parenthesized single variable at the begginig position #44

Closed glassfishrobot closed 4 years ago

glassfishrobot commented 8 years ago

Parsing an expression like

${(var)}

causes the following ParseException. It is a pathological pattern but was accepted before introducing lambda.

Caused by: javax.el.ELException: Error Parsing: ${(var)}
        at com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:213)
        at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:237)
        at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:295)
        at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:112)
        at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:916)
        at org.apache.jsp.test2_jsp._jspService(test2_jsp.java:96)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
        ... 31 more
Caused by: com.sun.el.parser.ParseException: Encountered "}" at line 1, column 10.
Was expecting:
    "->" ...

        at com.sun.el.parser.ELParser.generateParseException(ELParser.java:2963)
        at com.sun.el.parser.ELParser.jj_consume_token(ELParser.java:2845)
        at com.sun.el.parser.ELParser.LambdaExpression(ELParser.java:295)
        at com.sun.el.parser.ELParser.Assignment(ELParser.java:226)
        at com.sun.el.parser.ELParser.SemiColon(ELParser.java:181)
        at com.sun.el.parser.ELParser.Expression(ELParser.java:174)
        at com.sun.el.parser.ELParser.DynamicExpression(ELParser.java:146)
        at com.sun.el.parser.ELParser.CompositeExpression(ELParser.java:43)
        at com.sun.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:182)
        ... 39 more

The parser is trying to interpret it as LambdaParameters. Some other examples:

**Good**${var}
${-(var)}
${(3)*4}
**Bad**${(var)*4}
glassfishrobot commented 6 years ago
glassfishrobot commented 8 years ago

@glassfishrobot Commented Reported by onagano

glassfishrobot commented 8 years ago

@glassfishrobot Commented Was assigned to ren.zhijun.oracle

glassfishrobot commented 7 years ago

@glassfishrobot Commented This issue was imported from java.net JIRA UEL-44

markt-asf commented 4 years ago

Duplicated by #78 and now fixed.