[ https://issues.apache.org/jira/browse/GROOVY-8385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16302475#comment-16302475 ]
Jochen Theodorou commented on GROOVY-8385: ------------------------------------------ since there was some hesitation to use my general solution I made now a more special one and only fixed the attribute access with @. You should now b able to do this.@x in a subclass and get access to the field in the super class, if the field is protected or public. This is independent of static compilation. > CompileStatic: Improved method call/property access Java compatibility for > Minecraft Forge obfuscation support > -------------------------------------------------------------------------------------------------------------- > > Key: GROOVY-8385 > URL: https://issues.apache.org/jira/browse/GROOVY-8385 > Project: Groovy > Issue Type: Improvement > Components: bytecode > Reporter: mgroovy > Priority: Minor > Labels: Forge, Java, JavaCompatibility, Minecraft, Modding > > * Even with @CompileStatic the Groovy compiler creates bytecode for method > calls / property access which is dynamic in nature. > * This means that e.g. Minecraft Forge's obfuscator does not pick up the > calls in the generated bytecode, which means they do not get obfuscated, > which in turn makes the code fail when executed in Minecraft. > * This effectively makes it nearly impossible to write Minecraft mods with > Groovy, which in turn is a wasted opportunity to get people involved with > Groovy early on. > * Possible approaches to improve the situation: > ## Improve on a fundamental level: According to [~paulk] only a few calls are > required to be done dynamically for Groovy functionality to work as expected > under @CompileStatic. > *** The problem seems to be that it could be hard to be a 100% sure no edge > case is overlooked, as to not break @CompileStatic in situations where e.g. > no 100% Java-call-compatibility is needed. > ## Improve through newly introduced @CompileStatic parameters > *** => Static method call / property access bytecode is generated for method > code / all class methods repectively (with possible exceptions for the know > cases mentioned above). > ## Improve through newly introduced @ObfuscationJavaCompatibility annotation > that can be put on a method or class > *** behavior same as for @CompileStatic parameters above -- This message was sent by Atlassian JIRA (v6.4.14#64029)