Skip to main content

[el-spec issues] [JIRA] Commented: (EL_SPEC-2) Backwards Compatibility Issue with Binary Operator "+"

  • From: "dougd (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [el-spec issues] [JIRA] Commented: (EL_SPEC-2) Backwards Compatibility Issue with Binary Operator "+"
  • Date: Fri, 27 Apr 2012 18:11:09 +0000 (GMT+00:00)
  • Auto-submitted: auto-generated


    [ 
http://java.net/jira/browse/EL_SPEC-2?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=338670#action_338670
 ] 

dougd commented on EL_SPEC-2:
-----------------------------

Maybe we can do something like this.

1.7.1 Binary operators - A {+,-,*} B
■ If the operator is a +, and either A or B is a String:
   ■ If A or B is a Float, Double, or String containing ., e, or E:
                ■ If A or B is BigInteger, coerce both A and B to BigDecimal 
and apply operator.
                ■ Otherwise, coerce both A and B to Double and apply operator
   ■ Otherwise + is a string concatenation operator.
■ If A and B are null, return (Long)0
■ If A or B is a BigDecimal, coerce both to BigDecimal and then:
■ If operator is +, return A.add(B)
■ If operator is -, return A.subtract(B)
■ If operator is *, return A.multiply(B)
■ If A or B is a Float, Double, or String containing ., e, or E:
■ If A or B is BigInteger, coerce both to BigInteger and then:
■ If operator is +, return A.add(B)
■ If operator is -, return A.subtract(B)
■ If operator is *, return A.multiply(B)
■ Otherwise coerce both A and B to Long and apply operator
■ If operator results in exception, error

> Backwards Compatibility Issue with Binary Operator "+"
> ------------------------------------------------------
>
>                 Key: EL_SPEC-2
>                 URL: http://java.net/jira/browse/EL_SPEC-2
>             Project: el-spec
>          Issue Type: Bug
>         Environment: N/A
>            Reporter: dougd
>
> In section 1.7.1 Binary Operators of the Expression Language Specification 
> Version 3.0, there has been an additional Rule added that causes a 
> Backwards compatibility issue.
> From version 3.0 of the specification its states the following:
> 1.7.1 Binary operators - A {+,-,*} B
> ■ If the operator is a +, and either A or B is a String, then + is a string 
> concatenation  <---- This is the newly added Rule.
> operator.
> ■ If A and B are null, return (Long)0
> ■ If A or B is a BigDecimal, coerce both to BigDecimal and then:
> ■ If operator is +, return A.add(B)
> ■ If operator is -, return A.subtract(B)
> ■ If operator is *, return A.multiply(B)
> ■ If A or B is a Float, Double, or String containing ., e, or E:      
> <---------- This Rule never gets reached now !!!!!
> ■ If A or B is BigInteger, coerce both A and B to BigDecimal and apply 
> operator.
> ■ Otherwise, coerce both A and B to Double and apply operator 
> ■ If A or B is BigInteger, coerce both to BigInteger and then:
> ■ If operator is +, return A.add(B)
> ■ If operator is -, return A.subtract(B)
> ■ If operator is *, return A.multiply(B)
> ■ Otherwise coerce both A and B to Long and apply operator
> ■ If operator results in exception, error
>       The problem with the newly added rule at the top of the order is that 
> they " If A or B is a Float, Double, or String containing ., e, or E:" 
> Never gets a chance to be parsed.  This breaks backwards compatibility. 
>       
>       
>       
>       
>       
>       

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira




[el-spec issues] [JIRA] Created: (EL_SPEC-2) Backwards Compatibility Issue with Binary Operator "+"

dougd (JIRA) 04/27/2012

[el-spec issues] [JIRA] Commented: (EL_SPEC-2) Backwards Compatibility Issue with Binary Operator "+"

dougd (JIRA) 04/27/2012

[el-spec issues] [JIRA] Issue Comment Edited: (EL_SPEC-2) Backwards Compatibility Issue with Binary Operator "+"

dougd (JIRA) 04/27/2012
 
 
Close
loading
Please Confirm
Close