[
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)