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

Eric Milles commented on GROOVY-11781:
--------------------------------------

Before Groovy 5, static outer field references were written as direct field 
reads.  Groovy 5 uses the standard getProperty sequence and an inner class has 
a propertyMissing and staticPropertyMissing methods generated to try 
getProperty of the outer class.  This change gives better support for 
references in closures and some other cases.

The code snippet I have above shows what your GroovyMockMetaClass#getProperty 
could look like.  A very similar change should be applied to your setProperty 
as well.  These changes are backwards compatible, so you don't need to check 
the groovy version or anything special.

> static field access to outer class does not work properly anymore
> -----------------------------------------------------------------
>
>                 Key: GROOVY-11781
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11781
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 5.0.1
>            Reporter: Björn Kautler
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 5.0.2
>
>
> This is a regression in Groovy 5.
> Groovy 2.5, 3.0, and 4.0 it works fine.
> To reproduce:
>  * checkout my {{groovy5}} PR branch of 
> [https://github.com/spockframework/spock/pull/2213]
>  * go to 
> {{org.spockframework.smoke.mock.GroovyMockAbstractGlobalClass.AbstractClassA}}
>  * replace the three {{GroovyMockAbstractGlobalClass.NAME}} by just {{NAME}}
>  * execute {{./gradlew -Dvariant=5.0 -DjavaVersion=11 :spock-specs:test 
> --tests org.spockframework.smoke.mock.GroovyMockAbstractGlobalClass --info}}
> As a result you get an `IllegalArgumentException` with message `object is not 
> an instance of declaring class`.
> I'm not 100% sure whether this is a Groovy bug or Spock bug, but it works 
> fine up to and including Groovy 4.
> If this is not a Groovy bug but a Spock bug, I'd appreciate very much help in 
> how to resolve this on the Spock side.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to