You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2022/07/23 16:25:00 UTC

[jira] [Updated] (GROOVY-10502) NamedVariant: improve consistency of default value treatment

     [ 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:     (was: 5.0.0-alpha-1)

> 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, 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.10#820010)