[
https://issues.apache.org/jira/browse/GROOVY-10502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-10502:
---------------------------------
Fix Version/s: 3.0.10
> 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
> Assignee: Paul King
> Priority: Major
> Labels: named-parameters
> Fix For: 3.0.10, 5.0.0-alpha-1, 4.0.1
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> 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)