You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (JIRA)" <ji...@apache.org> on 2017/05/02 02:04:19 UTC
[jira] [Closed] (GROOVY-7443) instantiating a class withTraits does
not use the classloader of the trait
[ https://issues.apache.org/jira/browse/GROOVY-7443?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-7443.
-----------------------------
> 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.3.7, 2.4.3
> Environment: jvm 1.7, MaxOSX
> Reporter: Marc Hadfield
> Assignee: Paul King
> Labels: class-generation, traits
> Fix For: 2.5.0-alpha-1
>
> Attachments: GroovyTraitsClassloaderTest.groovy
>
>
> this fails:
> def aWithB = new ClassA().withTraits(traitB)
> when traitB is not from the classloader of class A.
> full example code:
> {code:Java}
> 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.15#6346)