[ https://issues.apache.org/jira/browse/GROOVY-7714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-7714. ----------------------------- > Trait with static generic method and usage in different sub-project > ------------------------------------------------------------------- > > Key: GROOVY-7714 > URL: https://issues.apache.org/jira/browse/GROOVY-7714 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.5 > Reporter: Steinar Haugen > Priority: Major > Labels: trait, traits > Attachments: trait-bug.zip > > > Bumped into a compilation error and created a minimal project to reproduce. > It consists of a gradle project with two subprojects. The first subproject > contains a trait and an implementing class. The second subproject contains a > class that returns the implemening class. > See attached zip file for source code. > It consists of three source files: > {code:title=sub1/src/main/groovy/sub1/MyTrait.groovy} > package sub1 > trait MyTrait { > static <T extends MyTrait> T getMyTrait() {null} > } > {code} > {code:title=sub1/src/main/groovy/sub1/MyTraitImpl.groovy} > package sub1 > class MyTraitImpl implements MyTrait { > } > {code} > {code:title=sub2/src/main/groovy/sub2/Producer.groovy} > package sub2 > import sub1.MyTraitImpl > class Producer { > MyTraitImpl produce() { > return null > } > } > {code} > Building yields the following error message: > Execution failed for task ':sub2:compileGroovy'. > > BUG! exception in phase 'class generation' in source unit > > '/source/trait-bug/sub2/src/main/groovy/sub2/Producer.groovy' Type is null. > > Most probably you let a transform reuse existing ClassNodes with generics > > information, that is now used in a wrong context. > If the source code in sub2 is moved to sub1, it compiles without error. > If generics is removed from the method signature in MyTrait (i.e. changed to > something like "static MyTrait getMyTrait()") it compiles without error. -- This message was sent by Atlassian Jira (v8.20.10#820010)