I’ve created https://issues.apache.org/jira/browse/GROOVY-8495 <https://issues.apache.org/jira/browse/GROOVY-8495> to track this.
— Daniil Ovchinnikov Software Developer JetBrains jetbrains.com “Drive to develop” > On 6 Mar 2018, at 18:39, Daniil Ovchinnikov > <daniil.ovchinni...@jetbrains.com> wrote: > > Is there any reason why implementations of GroovyObject methods which are > injected into Groovy classes are marked with ACC_SYNTHETIC? > > This causes all sorts of confusion: > > class GroovyClass {} > > class JavaClass extends GroovyClass {} // compiles ok > > class JavaClass extends GroovyClass implements GroovyObject {} // error: > JavaClass is not abstract and does not override abstract method > setMetaClass(MetaClass) in GroovyObject > > class JavaClass extends GroovyClass { > @Override > public Object getProperty(String propertyName) { > return super.getProperty(propertyName); // error: cannot find symbol: > method getProperty(String) > } > } > > class JavaClass { > void usage() { > new GroovyClass().getProperty("a”); // error: cannot find symbol: > method getProperty(String) > } > } > > This happens because javac ignores ACC_SYNTHETIC members as if they don’t > even exist. > > — > > Daniil Ovchinnikov > Software Developer > JetBrains > jetbrains.com > “Drive to develop” >