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 2020/07/24 12:07:00 UTC

[jira] [Commented] (GROOVY-9655) Groovy 3.0.5 regression with the "with" keyword

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

Eric Milles commented on GROOVY-9655:
-------------------------------------

You can add "owner." or "this." to the variable for expected resolution.

The variable expression "BOOKING" is written as a getProperty against the closure.  In this case, you have a map as the closure's delegate, which answers for all property names, so the owner is never checked.

This may seem like a regression, but "with" implements a resolve strategy of delegate first, so this new behavior is more correct.  If the map delegate was altered (maybe inside with) to throw MissingPropertyException when a key is not present, the resolve strategy would continue onwards to the enclosing type.

> Groovy 3.0.5 regression with the "with" keyword
> -----------------------------------------------
>
>                 Key: GROOVY-9655
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9655
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 3.0.5, 2.5.13
>            Reporter: Henrik
>            Assignee: Eric Milles
>            Priority: Critical
>              Labels: regression
>
> Since GROOVY-7701 was the only issue relating to {{with}} in Groovy 3.0.5, I think that fix might have broken behaviour in Spock (using 2.0-M3):
> This works in 3.0.4:
> {code:java}
> static BOOKING = 123
> def 'get stuff'() {
>   given:
>   def stuff = [ booking: 123 ]
>   expect:
>     with(stuff) {
>       booking == BOOKING
>     }
>  }
> {code}
> But fails in 3.0.5 with:
> {code:java}
> Condition not satisfied:
> booking == BOOKING
> |       |  |
> 123     |  null
>         false
> {code}
>  



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