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)

Reply via email to