[
https://issues.apache.org/jira/browse/GROOVY-7926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King reassigned GROOVY-7926:
---------------------------------
Assignee: Paul King
> Method that returns void in a Trait with generics produces questionable byte
> code
> ---------------------------------------------------------------------------------
>
> Key: GROOVY-7926
> URL: https://issues.apache.org/jira/browse/GROOVY-7926
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.4.7
> Reporter: Graeme Rocher
> Assignee: Paul King
>
> Given the following trait:
> {code}
> trait MyTrait<D> {
> void delete() {
> // no-op
> }
> }
> class MyImpl implements MyTrait<MyImpl> {
> }
> {code}
> The delete method produces byte code that when decompiled looks like:
> {code}
> public void delete() {
> CallSite[] var1 = $getCallSiteArray();
> void var10000 = (void)var1[1].call(Helper.class, this);
> }
> {code}
> As you can see "void" is used as a type of a variable. This results in the
> following exception on the IBM JVM (it works fine in Oracle and OpenJDK):
> {code}
> Caused by: java.lang.NoClassDefFoundError: void
> at it.dedagroup.Test.delete(Test.groovy)
> at org.grails.datastore.gorm.GormEntity$delete$0.call(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
> {code}
> Since the issue occurs only in IBM JVM it could be argued that this is a
> problem with that JVM, however the byte code produced does seem suspicious to
> me as "void" cannot be used as a type of a local variable. Thoughts?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)