[ 
https://issues.apache.org/jira/browse/GROOVY-11706?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18000565#comment-18000565
 ] 

Xiaotian Ma commented on GROOVY-11706:
--------------------------------------

[~blackdrag] Thanks a lot for your help! Actually the CLI Compiler is working 
good but the Compiler loaded from my classloader is not working.
!screenshot-1.png! 
I am using classloader to compile some classes with these two annotaion 
classes, but I recieved the following error:
{code:java}
startup failed:
/tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation 
@org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER
 @ line 3, column 50.
   ik05i</*@NotNull*/ T0 extends @NotNull O
                                 ^

/tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation 
@org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER
 @ line 3, column 91.
   ject, /*@NotNull*/ T1 extends @NotNull O
                                 ^

/tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation 
@org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER
 @ line 3, column 132.
   ject, /*@NotNull*/ T2 extends @NotNull O
                                 ^

/tmp/0078a4007b6693f4/0078a400af6f717f/QHf0.groovy: 11: Annotation 
@org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER
 @ line 11, column 86.
   4 extends /*@NotNull*/ Object>@NotNull T
                                 ^

4 errors
{code}
That's very confused for me.
The following is the full code: (Actually I am developing a fuzzing tool to do 
a differential testing, so I need load two different version of Groovy compiler)

{code:java}
// FILE: Afik05i.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface Afik05i</*@NotNull*/ T0 extends @NotNull Object, /*@NotNull*/ 
T1 extends @NotNull Object, /*@NotNull*/ T2 extends @NotNull Object> {
    public abstract @Nullable T0 k77OuG(/*@NotNull*/ Object unE1QEP);
    public abstract /*@NotNull*/ Object f5N(@Nullable T2 fskP);
}

// FILE: D8HLBB.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class D8HLBB extends Object  {
    public /*@NotNull*/ D8HLBB vRkIOB(/*@NotNull*/ D8HLBB tWLGEIFu, 
/*@NotNull*/ D8HLBB cCtb) {
        throw new RuntimeException();
    }
    public <T3 extends /*@NotNull*/ Object, T4 extends /*@NotNull*/ Object, T5 
extends /*@NotNull*/ Object>/*@NotNull*/ Afik05i</*@NotNull*/ Void, 
/*@NotNull*/ Void, /*@NotNull*/ Object> bbZRuLGZ(@NotNull T5 qav, /*@NotNull*/ 
Afik05i</*@NotNull*/ D8HLBB, /*@NotNull*/ Object, /*@NotNull*/ Void> iMF40) {
        throw new RuntimeException();
    }
    public /*@NotNull*/ Afik05i</*@NotNull*/ Void, /*@NotNull*/ Object, 
/*@NotNull*/ D8HLBB> pF8NLCd() {
        throw new RuntimeException();
    }
}

// FILE: Uxw.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface Uxw {
    public abstract /*@Nullable*/ D8HLBB bx0gL3IW();
    public abstract /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu);
}

// FILE: AbcDQcm.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface AbcDQcm extends Uxw, Afik05i<Uxw, D8HLBB, Void> {
    public abstract /*@Nullable*/ Afik05i<Uxw, Uxw, Uxw> ydXR(/*@Nullable*/ 
D8HLBB mrjPpP, /*@NotNull*/ Uxw hPcMB8O, /*@NotNull*/ Afik05i</*@NotNull*/ 
Void, /*@NotNull*/ Object, /*@NotNull*/ D8HLBB> ch3Df4sx);
    public abstract /*@Nullable*/ D8HLBB v20h(/*@NotNull*/ AbcDQcm nMpU7C, 
/*@NotNull*/ D8HLBB qAGwAjal);
    public default /*@Nullable*/ D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    public default /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
    public default @Nullable Uxw k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public default /*@NotNull*/ Object f5N(@Nullable Void fskP) {
        throw new RuntimeException();
    }
}

// FILE: FTElbomP.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class FTElbomP extends Object  {
    public final <T6 extends /*@NotNull*/ Object, T7 extends /*@NotNull*/ 
Object, T8 extends /*@NotNull*/ Object>/*@NotNull*/ Object 
jHyAhWPc(/*@NotNull*/ FTElbomP uPm, @Nullable T7 pPRmkri) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ FTElbomP n4A0LgP(/*@Nullable*/ Object z0aXf) {
        throw new RuntimeException();
    }
}

// FILE: FCcz.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class FCcz</*@NotNull*/ T9 extends @NotNull Object> extends Object 
implements Afik05i<D8HLBB, Object, Object>, Uxw {
    public /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) {
        throw new RuntimeException();
    }
    public final <T10 extends /*@NotNull*/ Object, T11 extends /*@NotNull*/ 
Object, T12 extends /*@NotNull*/ Object>/*@Nullable*/ Object 
xUgmrN(/*@NotNull*/ FTElbomP vcl0yFa) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ FTElbomP v0YMc() {
        throw new RuntimeException();
    }
    public @Nullable D8HLBB k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public /*@NotNull*/ Object f5N(@Nullable Object fskP) {
        throw new RuntimeException();
    }
    public final /*@Nullable*/ D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    public /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
}

// FILE: IPbD33Gd.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class IPbD33Gd extends FTElbomP implements Uxw, Afik05i<AbcDQcm, 
IPbD33Gd, AbcDQcm> {
    public /*@NotNull*/ AbcDQcm iea(/*@Nullable*/ Afik05i<IPbD33Gd, Uxw, 
FTElbomP> ai3kd, /*@Nullable*/ FCcz<AbcDQcm> o8LNY) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ IPbD33Gd h9SHvhKU(/*@NotNull*/ D8HLBB cEhgcX, 
/*@NotNull*/ Object zX5Vl) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ void eO48() {
        throw new RuntimeException();
    }
    public /*@Nullable*/ D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
    public @Nullable AbcDQcm k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public /*@NotNull*/ Object f5N(@Nullable AbcDQcm fskP) {
        throw new RuntimeException();
    }
    // stub
    /*
    public final <T6 extends @NotNull Object, T7 extends @NotNull Object, T8 
extends @NotNull Object>@NotNull Object jHyAhWPc(@NotNull FTElbomP uPm, 
@Nullable T7 pPRmkri) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @NotNull FTElbomP n4A0LgP(@Nullable Object z0aXf) {
        throw new RuntimeException();
    }
    */
}

// FILE: SdI44pvC.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public abstract class SdI44pvC extends FCcz<AbcDQcm>  {
    public /*@NotNull*/ AbcDQcm aIBVNHo(/*@NotNull*/ D8HLBB lRqk, /*@Nullable*/ 
Afik05i<SdI44pvC, SdI44pvC, AbcDQcm> aZU) {
        throw new RuntimeException();
    }
    // stub
    /*
    public final <T10 extends @NotNull Object, T11 extends @NotNull Object, T12 
extends @NotNull Object>@Nullable Object xUgmrN(@NotNull FTElbomP vcl0yFa) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @NotNull FTElbomP v0YMc() {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @Nullable D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    */
    public final /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) {
        throw new RuntimeException();
    }
    public abstract @Nullable D8HLBB k77OuG(/*@NotNull*/ Object unE1QEP);
    // stub
    /*
    public @NotNull Object f5N(@Nullable Object fskP) {
        throw new RuntimeException();
    }
    */
    public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
}

// FILE: XZfDDfcw.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class XZfDDfcw extends Object implements Afik05i<Void, FTElbomP, 
D8HLBB>, Uxw {
    public final /*@NotNull*/ AbcDQcm pobFBuTw() {
        throw new RuntimeException();
    }
    public /*@Nullable*/ AbcDQcm me7Y5o(/*@Nullable*/ FCcz<AbcDQcm> tAP3TV, 
/*@Nullable*/ D8HLBB hMayq) {
        throw new RuntimeException();
    }
    public /*@NotNull*/ FTElbomP awYhECi(/*@NotNull*/ FCcz</*@NotNull*/ 
AbcDQcm> fBm, /*@NotNull*/ Object vwv) {
        throw new RuntimeException();
    }
    public @Nullable Void k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ Object f5N(@Nullable D8HLBB fskP) {
        throw new RuntimeException();
    }
    public /*@Nullable*/ D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    public /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
}

// FILE: FpyD.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface FpyD {
    public abstract <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ 
Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ 
Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F);
    public abstract /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ 
IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ 
Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5);
}

// FILE: WH5hX.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class WH5hX extends XZfDDfcw implements FpyD, Uxw, Afik05i<Void, 
FTElbomP, D8HLBB> {
    public <T15 extends /*@NotNull*/ Object>/*@Nullable*/ FpyD 
qRduv(/*@Nullable*/ FTElbomP o1Y, /*@NotNull*/ IPbD33Gd feX3, /*@Nullable*/ 
FpyD z88Eh4) {
        throw new RuntimeException();
    }
    public <T16 extends /*@NotNull*/ Object>@NotNull T16 rHDMC(/*@Nullable*/ 
FCcz<IPbD33Gd> mYQ2F, /*@Nullable*/ AbcDQcm iZWaX) {
        throw new RuntimeException();
    }
    public <T17 extends /*@NotNull*/ Object, T18 extends /*@NotNull*/ Object, 
T19 extends /*@NotNull*/ Object>/*@Nullable*/ XZfDDfcw vBXRj(@NotNull T18 
ilNGy) {
        throw new RuntimeException();
    }
    public <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ 
Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ 
Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F) {
        throw new RuntimeException();
    }
    public final /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ 
IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ 
Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5) {
        throw new RuntimeException();
    }
    // stub
    /*
    public final @NotNull Object f5N(@Nullable D8HLBB fskP) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @NotNull AbcDQcm pobFBuTw() {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public @Nullable D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public @NotNull D8HLBB thHin(@NotNull Uxw hZu) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public @Nullable Void k77OuG(@NotNull Object unE1QEP) {
        throw new RuntimeException();
    }
    */
    public final /*@Nullable*/ AbcDQcm me7Y5o(/*@Nullable*/ FCcz<AbcDQcm> 
tAP3TV, /*@Nullable*/ D8HLBB hMayq) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ FTElbomP awYhECi(/*@NotNull*/ FCcz</*@NotNull*/ 
AbcDQcm> fBm, /*@NotNull*/ Object vwv) {
        throw new RuntimeException();
    }
}

// FILE: YGxQ1.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class YGxQ1</*@NotNull*/ T20 extends @NotNull Object> extends 
Object implements Afik05i<Void, FpyD, Void> {
    public /*@NotNull*/ FTElbomP qMzET() {
        throw new RuntimeException();
    }
    public final @Nullable Void k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ Object f5N(@Nullable Void fskP) {
        throw new RuntimeException();
    }
}

// FILE: QHf0.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface QHf0 extends Afik05i<AbcDQcm, Uxw, Object>, FpyD, Uxw {
    public abstract <T21 extends /*@NotNull*/ Object>/*@NotNull*/ AbcDQcm 
zFgJuUf2();
    public default @Nullable AbcDQcm k77OuG(/*@NotNull*/ Object unE1QEP) {
        throw new RuntimeException();
    }
    public default /*@NotNull*/ Object f5N(@Nullable Object fskP) {
        throw new RuntimeException();
    }
    public default <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ 
Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ 
Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F) {
        throw new RuntimeException();
    }
    public default /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ 
IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ 
Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5) {
        throw new RuntimeException();
    }
    public default /*@Nullable*/ D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    public default /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
}

// FILE: W5MT.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class W5MT extends FCcz<SdI44pvC> implements Afik05i<D8HLBB, 
Object, Object> {
    public final <T22 extends /*@NotNull*/ Object, T23 extends /*@NotNull*/ 
Object>/*@Nullable*/ FpyD c9drZAvF(/*@NotNull*/ FpyD msWskin, /*@NotNull*/ Uxw 
wxiSQ) {
        throw new RuntimeException();
    }
    // stub
    /*
    public final <T10 extends @NotNull Object, T11 extends @NotNull Object, T12 
extends @NotNull Object>@Nullable Object xUgmrN(@NotNull FTElbomP vcl0yFa) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @NotNull FTElbomP v0YMc() {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @Nullable D8HLBB bx0gL3IW() {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public @Nullable D8HLBB k77OuG(@NotNull Object unE1QEP) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public @NotNull Object f5N(@Nullable Object fskP) {
        throw new RuntimeException();
    }
    */
    public final /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) {
        throw new RuntimeException();
    }
    public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) {
        throw new RuntimeException();
    }
}

// FILE: YYMMAZVX.groovy
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class YYMMAZVX extends FTElbomP  {
    public /*@NotNull*/ WH5hX it2roqG6() {
        throw new RuntimeException();
    }
    // stub
    /*
    public final <T6 extends @NotNull Object, T7 extends @NotNull Object, T8 
extends @NotNull Object>@NotNull Object jHyAhWPc(@NotNull FTElbomP uPm, 
@Nullable T7 pPRmkri) {
        throw new RuntimeException();
    }
    */
    // stub
    /*
    public final @NotNull FTElbomP n4A0LgP(@Nullable Object z0aXf) {
        throw new RuntimeException();
    }
    */
}

// FILE: JavaTopLevelContainer.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class JavaTopLevelContainer {
}
// FILE: NotNull.java
package org.jetbrains.annotations;

import java.lang.annotation.*;

// org.jetbrains.annotations used in the compiler is version 13, whose @NotNull 
does not support the TYPE_USE target (version 15 does).
// We're using our own @org.jetbrains.annotations.NotNull for testing purposes.
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, 
ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE})
public @interface NotNull {
}
// FILE: Nullable.java
package org.jetbrains.annotations;

import java.lang.annotation.*;

// org.jetbrains.annotations used in the compiler is version 13, whose 
@Nullable does not support the TYPE_USE target (version 15 does).
// We're using our own @org.jetbrains.annotations.Nullable for testing purposes.
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, 
ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE})
public @interface Nullable {
}

{code}


> How to run Groovy compiler via class loader without altering thread context 
> classloader?
> ----------------------------------------------------------------------------------------
>
>                 Key: GROOVY-11706
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11706
>             Project: Groovy
>          Issue Type: Question
>          Components: Compiler
>            Reporter: Xiaotian Ma
>            Priority: Major
>         Attachments: screenshot-1.png
>
>
> When using direct reflection access to the main method of the 
> FileSystemCompiler class, some transformer classes do not seem to load 
> correctly. (The error is: Could not find class for Transformation Processor 
> org.codehaus.groovy.transform.trait.TraitASTTransformation declared by 
> groovy.transform.Trait)
> My original requirement was to use code instead of accessing multiple Groovy 
> compilers simultaneously from the command line. Since different versions 
> cannot coexist, I need to use classLoader to isolate them.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to