commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmitri Blinov (Jira)" <j...@apache.org>
Subject [jira] [Commented] (JEXL-316) Operator ?? has very low priority
Date Wed, 09 Oct 2019 11:04:00 GMT

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

Dmitri Blinov commented on JEXL-316:
------------------------------------

As an example of '?:' and '??' having different results *now* we could consider the following
tests:
{code:java}
{} ?? 3
{code}
and
{code:java}
{} ?: 3
{code}

> Operator ?? has very low priority
> ---------------------------------
>
>                 Key: JEXL-316
>                 URL: https://issues.apache.org/jira/browse/JEXL-316
>             Project: Commons JEXL
>          Issue Type: Bug
>    Affects Versions: 3.1
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>            Priority: Major
>             Fix For: 3.2
>
>
> In current version of JEXL the script
> {code:java}
> 10??0 + 200 {code}
> evaluates to 10, which is counterintuitive. It requires to always use parantheses after
{{\\??}}. The operator {{??}} should have higer priority. It is the same problem as with current
version of freemarker, but they promise to fix it in the next major release.
> The suggestion is to set priority of operator {{??}} to be between {{UnaryExpression()}}
and {{ValueExpression()}}
> {code}
> void ConditionalExpression() #void : {}
> {
>   ConditionalOrExpression()
>   (
>     <QMARK> Expression() <COLON> Expression() #TernaryNode(3)
>   |
>     <ELVIS> Expression() #TernaryNode(2)
>   )?
> }
> ...
> void UnaryExpression() #void : {}
> {
>     <minus> UnaryExpression() #UnaryMinusNode(1)
>   |
>     <plus> UnaryExpression() #UnaryPlusNode(1)
>   |
>     <tilda> UnaryExpression() #BitwiseComplNode(1)
>   |
>     (<not>|<NOT>) UnaryExpression() #NotNode(1)
>   |
>     <EMPTY> UnaryExpression() #EmptyFunction(1)
>   |
>     <SIZE> UnaryExpression() #SizeFunction(1)
>   |
>     NullpExpression()
> }
> void NullpExpression() #void : {}
> {
>     ValueExpression()
>     (
>        <NULLP> ValueExpression() #NullpNode(2)
>     )*
> }
> {code}



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

Mime
View raw message