[ https://issues.apache.org/jira/browse/GROOVY-8815?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Sun resolved GROOVY-8815. -------------------------------- Fix Version/s: 3.0.0-beta-4 Assignee: Eric Milles Resolution: Fixed The proposed PR was merged. Thanks! > Inconsistent class file - undefined type parameter for trait implementer > ------------------------------------------------------------------------ > > Key: GROOVY-8815 > URL: https://issues.apache.org/jira/browse/GROOVY-8815 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.15, 2.5.2 > Reporter: Eric Milles > Assignee: Eric Milles > Priority: Major > Fix For: 3.0.0-beta-4 > > Time Spent: 50m > Remaining Estimate: 0h > > When compiling the following classes, the Service class ends up with an > incomplete type parameter in it. This causes errors for the IDE: > "Inconsistent classfile encountered: The undefined type parameter T is > referenced from within Service" > {code} > import java.util.function.Consumer > import groovy.transform.CompileStatic > class Event<T> { > Event(String id, T payload) { > } > Event<T> setReplyTo(Object replyTo) { > } > } > @CompileStatic > trait Events { > def <E extends Event<?>> Registration<Object, Consumer<E>> on(Class key, > Closure consumer) { > } > } > interface Registration<K, V> { > } > class Service implements Events { > } > {code} > javap output for Events shows: > {code:java} > public abstract <E extends Event<?>> > Registration<java.lang.Object,java.util.function.Consumer<E>> > on(java.lang.Class, groovy.lang.Closure); > {code} > javap output for Service shows: > {code:java} > public <E extends Event<T>> Registration<java.lang.Object, > java.util.function.Consumer<E>> on(java.lang.Class, groovy.lang.Closure); > public <E extends Event<?>> Registration<java.lang.Object, > java.util.function.Consumer<E>> Eventstrait$super$on(java.lang.Class, > groovy.lang.Closure); > {code} > It is this "T" in the trait method that is not defined. I think it should be > "?" instead when looking at the original method's and the trait bridge > method's type parameters. -- This message was sent by Atlassian Jira (v8.3.2#803003)