[ https://issues.apache.org/jira/browse/GROOVY-9292?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles updated GROOVY-9292: -------------------------------- Description: Compilation fails when accessing a protected(via `thisObject`, `owner` and `delegate`)/package-private super class field from inside a closure: {code:java} new GroovyShell().with { evaluate ''' package a abstract class Abstract { protected String protectedField = 'field' } assert true ''' evaluate ''' package b @groovy.transform.CompileStatic class Concrete extends a.Abstract { String doThing() { 'something'.with { return owner.protectedField // `thisObject.protectedField`, `delegate.protectedField` fails too } } } assert true ''' evaluate 'assert new b.Concrete().doThing() == "field"' {code} was: Compilation fails when accessing a protected(via `thisObject`, `owner` and `delegate`)/package-private super class field from inside a closure: {code:java} new GroovyShell().with { evaluate ''' package a abstract class Abstract { protected String protectedField = 'field' // `@PackageScope` fails too abstract String doThing() } assert true ''' evaluate ''' package b @groovy.transform.CompileStatic class Concrete extends a.Abstract { @Override String doThing() { 'something'.with { return owner.protectedField // `thisObject.protectedField`, `delegate.protectedField` fails too } } } assert true ''' evaluate 'assert new b.Concrete().doThing() == "field"' {code} > Compilation error when accessing a protected super class field from a closure > using owner, delegate or thisObject qualifier (different package) > ----------------------------------------------------------------------------------------------------------------------------------------------- > > Key: GROOVY-9292 > URL: https://issues.apache.org/jira/browse/GROOVY-9292 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 2.5.8, 3.0.0-rc-1 > Reporter: Daniel Sun > Assignee: Daniel Sun > Priority: Major > > Compilation fails when accessing a protected(via `thisObject`, `owner` and > `delegate`)/package-private super class field from inside a closure: > {code:java} > new GroovyShell().with { > evaluate ''' > package a > > abstract class Abstract { > protected String protectedField = 'field' > } > assert true > ''' > evaluate ''' > package b > > @groovy.transform.CompileStatic > class Concrete extends a.Abstract { > String doThing() { > 'something'.with { > return owner.protectedField // `thisObject.protectedField`, > `delegate.protectedField` fails too > } > } > } > assert true > ''' > evaluate 'assert new b.Concrete().doThing() == "field"' > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)