[ https://issues.apache.org/jira/browse/GROOVY-7909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles updated GROOVY-7909: -------------------------------- Language: groovy > Calling parents method from trait using Parent.super.method() fail depending > on trait declaration order > ------------------------------------------------------------------------------------------------------- > > Key: GROOVY-7909 > URL: https://issues.apache.org/jira/browse/GROOVY-7909 > Project: Groovy > Issue Type: Bug > Components: Compiler > Affects Versions: 2.4.7 > Environment: Grails 3.1.9 > Reporter: Sébastien Collin > Assignee: Paul King > Priority: Critical > Labels: traits > Fix For: 2.4.10 > > > I'm using trait for multiple inheritance and I faced an issue when compiling > my project (using Grails 3.1.9, so with the gradle task CompileGroovy). > My traits are sharing a common method ({{def method()}}) and I'm referencing > parent's version through ParentClassName.super.method() > I'm seeing this error: > {quote} > > BUG! exception in phase 'semantic analysis' in source unit 'xxx.groovy' > > ClassNode#getTypeClass for YYY is called before the type class is set > {quote} > When testing different cases it seems that this problem appears because > classes are not compiled in the right order. > For example, a script with > {code} > trait Three implements One, Two { > def postMake() { > One.super.postMake() > Two.super.postMake() > println "Three" > } > } > trait One { > def postMake() { println "One"} > } > trait Two { > def postMake() { println "Two"} > } > class Four implements Three { > def make() { > Three.super.postMake() > println "All done?" > } > } > Four f = new Four() > f.make() > {code} > will fail, whereas putting Three method after One and Two will succeed. > Beside, keeping this trait's declaration order but changing method names to > be unique (and removing {{XXX.super}}) will compile and execute correctly. > I hope I'm clear enough... -- This message was sent by Atlassian Jira (v8.20.10#820010)