[ 
https://issues.apache.org/jira/browse/GROOVY-10502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King updated GROOVY-10502:
-------------------------------
    Description: 
When adjusting NamedVariant to cater for its use (under the covers) for 
records, a few anomalies were introduced. The first is fixed in GROOVY-10497. 
This one covers a left over case for null.
For this method:
{code:groovy}
def x(int one, int two = 42) { "$one $two" }
{code}
Calling any of the following will fail with a MissingMethodException:
{code:groovy}
x(null)
x(null, 3)
x(3, null)
{code}
When NamedVariant is applied, e.g.
{code:groovy}
@groovy.transform.NamedVariant
def m(int one, int two = 42) { "$one $two" }
{code}
Then all of the following succeed:
{code:groovy}
m(one:null) // 0 42
m(one:null, two:null) // 0 42
m(one:32, two:null) // 32 42
m(one:null, two:52) // 0 52
{code}
When null is encountered, we supply either the explicit or implicit default 
value. The purpose of this issue is to revert the behavior of this edge case to 
more traditional behavior, so the previous calls would all give a 
MissingMethodException.


  was:
When adjusting NamedVariant to cater for its use (under the covers) for 
records, a few anomalies were introduced. The first is fixed in GROOVY-10497. 
This one covers a left over case for null.
For this method:
{code:groovy}
def x(int one, int two = 42) { "$one $two" }
{code}
Calling any of the following will fail with a MissingMethodException:
{code:groovy}
x(null)
x(null, 3)
x(3, null)
{code}
When NamedVariant is applied, e.g.
{code:groovy}
@groovy.transform.NamedVariant
def m(int one, int two = 42) { "$one $two" }
{code}
Then all of the following succeed:
{code:groovy}
m(one:null) // 0 42
m(one:null, two:null) // 0 42
m(one:32, two:null) // 32 42
m(one:null, two:52) // 0 52
{code}
When null is encountered, we supply either the explicit or implicit default 
value.



> NamedVariant: improve consistency of default value treatment
> ------------------------------------------------------------
>
>                 Key: GROOVY-10502
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10502
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 4.0.0
>            Reporter: Paul King
>            Priority: Major
>              Labels: named-parameters
>
> When adjusting NamedVariant to cater for its use (under the covers) for 
> records, a few anomalies were introduced. The first is fixed in GROOVY-10497. 
> This one covers a left over case for null.
> For this method:
> {code:groovy}
> def x(int one, int two = 42) { "$one $two" }
> {code}
> Calling any of the following will fail with a MissingMethodException:
> {code:groovy}
> x(null)
> x(null, 3)
> x(3, null)
> {code}
> When NamedVariant is applied, e.g.
> {code:groovy}
> @groovy.transform.NamedVariant
> def m(int one, int two = 42) { "$one $two" }
> {code}
> Then all of the following succeed:
> {code:groovy}
> m(one:null) // 0 42
> m(one:null, two:null) // 0 42
> m(one:32, two:null) // 32 42
> m(one:null, two:52) // 0 52
> {code}
> When null is encountered, we supply either the explicit or implicit default 
> value. The purpose of this issue is to revert the behavior of this edge case 
> to more traditional behavior, so the previous calls would all give a 
> MissingMethodException.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to