[
https://issues.apache.org/jira/browse/GROOVY-11359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17837281#comment-17837281
]
Adrien Guichard commented on GROOVY-11359:
------------------------------------------
FYI, After applying other modifications:
{noformat}
ClassNode retClassNode0 = ClassHelper.make(GetMethodReturn)
ClassNode retClassNode3 = new GenericsType(ClassHelper.make(GetMethodReturn,
false), [ClassHelper.make(methodNode.returnType.typeClass)] as ClassNode[],
null).type
ClassNode retClassNodeNoGenerics =
ClassHelper.make(ClassHelper.make(GetMethodReturn, false).typeClass, false)
ReturnStatement code = new ReturnStatement(
new CastExpression(retClassNode0,
new ConstructorCallExpression(
retClassNodeNoGenerics,
new ArgumentListExpression([
new StaticMethodCallExpression(
classNode,
"getMethod",
new ArgumentListExpression(
[new
ConstantExpression(methodNode.name)] as List<Expression>
)),
new MethodCallExpression(
new VariableExpression('this'),
methodNode.name,
[] as ArgumentListExpression),
] as List<Expression>)
)
)
)
// cast something
new MethodNode(
methodName,
MethodNode.ACC_PUBLIC,
retClassNode0,
[] as Parameter[],
[] as ClassNode[],
code
)
{noformat}
I do obtain the following message:
{noformat}
A transform used a generics containing ClassNode ast.type.GetMethodReturn <T
extends java.lang.Object> for the method public ast.type.GetMethodReturn
getTruc_() { ... } directly. You are not supposed to do this. Please create a
new ClassNode referring to the old ClassNode and use the new ClassNode instead
of the old one. Otherwise the compiler will create wrong descriptors and a
potential NullPointerException in TypeResolver in the OpenJDK. If this is not
your own doing, please report this bug to the writer of the transform.
{noformat}
I do not know if it is a progress.
> ASTTransformation cause "General error during instruction selection"
> --------------------------------------------------------------------
>
> Key: GROOVY-11359
> URL: https://issues.apache.org/jira/browse/GROOVY-11359
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 3.0.21
> Environment: $ java -fullversion
> openjdk full version "17.0.10+7"
> $ uname -a
> Linux auoHome 6.6.26-1-MANJARO #1 SMP PREEMPT_DYNAMIC Wed Apr 10 20:11:08 UTC
> 2024 x86_64 GNU/Linux
> Reporter: Adrien Guichard
> Priority: Major
> Fix For: 3.0.11
>
> Attachments: testcase-asttransform-ko.tar.gz
>
>
> When assembling the *Grails* project, I do obtain the following stacktrace:
> java.lang.ArrayIndexOutOfBoundsException: size==0
> at
> org.codehaus.groovy.classgen.asm.OperandStack.ensureStackNotEmpty(OperandStack.java:279)
> at
> org.codehaus.groovy.classgen.asm.OperandStack.replace(OperandStack.java:271)
> at
> org.codehaus.groovy.classgen.AsmClassGenerator.visitCastExpression(AsmClassGenerator.java:815)
> at org.codehaus.groovy.ast.expr.CastExpression.visit(CastExpression.java:90)
> at
> org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:615)
> [. . .]
> Tell me if you need a more complete stacktrace. I try to work around this
> bug, changing the AST, without success. The error looks the same {*}each
> time{*}.
> To reproduce:
> $ tar xvfz testcase-asttransform-ko.tar.gz
> $ cd groovyInfra
> $ ./gradlew publishMavenPublicationToMavenLocal
> $ cd ..
> $ cd t620g
> $ ./gradlew assemble
> => BROKEN HERE
> Thanks for your help !
--
This message was sent by Atlassian Jira
(v8.20.10#820010)