Marc Hadfield created GROOVY-7443: ------------------------------------- Summary: instantiating a class withTraits does not use the classloader of the trait Key: GROOVY-7443 URL: https://issues.apache.org/jira/browse/GROOVY-7443 Project: Groovy Issue Type: Bug Components: groovy-runtime Affects Versions: 2.4.3, 2.3.7 Environment: jvm 1.7, MaxOSX Reporter: Marc Hadfield
this fails: def aWithB = new ClassA().withTraits(traitB) when traitB is not from the system classloader. full example code: <code> package groovy.lang.traits import org.codehaus.groovy.control.CompilerConfiguration; class GroovyTraitsClassloaderTest { static class ClassA { } static trait TraitA { def aMethod() { println "traitA method" } } static main(args) { def aWithA = new ClassA().withTraits(TraitA) aWithA.aMethod() GroovyClassLoader gcl = new GroovyClassLoader(Thread.currentThread().getContextClassLoader()); Class classB = gcl.parseClass("""\ class ClassB {} """) Class traitB = gcl.parseClass("""\ trait TraitB { def bMethod() { println "traitB method" } } """) //ok def bWithA = classB.newInstance().withTraits(TraitA) //ok def bWithB = classB.newInstance().withTraits(traitB) bWithB.bMethod() //fails def aWithB = new ClassA().withTraits(traitB) aWithB.bMethod() } } </code> -- This message was sent by Atlassian JIRA (v6.3.4#6332)