groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul King (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (GROOVY-7926) Method that returns void in a Trait with generics produces questionable byte code
Date Sun, 11 Sep 2016 22:11:20 GMT

     [ 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)

Mime
View raw message