[
https://issues.apache.org/jira/browse/GROOVY-10503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17550340#comment-17550340
]
Alexander Kriegisch edited comment on GROOVY-10503 at 6/6/22 8:16 AM:
----------------------------------------------------------------------
{quote}Can you try the snapshot here:
[https://groovy.jfrog.io/ui/native/libs-snapshot-local/org/codehaus/groovy/groovy/2.5.17-SNAPSHOT/]
This has ASM 9.2 but not the additional JDK constants.
{quote}
I tried Eclipse Batch 2.5.17-01, and it is not working, as expected, because
you left out the JDK constants from my PR. So like I said, this is not solving
the issue which triggered me to suggest the PR in the first place:
{code:none}
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.168 sec <<<
FAILURE! - in de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest
test(de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest) Time
elapsed: 0.079 sec <<< FAILURE!
org.codehaus.groovy.GroovyBugError: BUG! exception in phase 'semantic analysis'
in source unit 'script16545028826121044745165.groovy' Unsupported class file
major version 61
at
de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest.test(EmbeddedSpecRunnerTest.groovy:24)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major
version 61
at
de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest.test(EmbeddedSpecRunnerTest.groovy:24)
Results :
Failed tests:
EmbeddedSpecRunnerTest.test:24 BUG! exception in phase 'semantic analysis' in
source unit 'script16545028826121044745165.groovy' Unsupported class file major
version 61
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
{code}
Committing only half of the PR and then closing it does not help at all. I.e.,
I am back at square one, same issue, same error message in my Spock spec on JDK
16+.
was (Author: kriegaex):
{quote}Can you try the snapshot here:
https://groovy.jfrog.io/ui/native/libs-snapshot-local/org/codehaus/groovy/groovy/2.5.17-SNAPSHOT/
This has ASM 9.2 but not the additional JDK constants.{quote}
I tried Eclipse Batch 2.5.17-01, and it is not working, as expected, because
you left out the JDK constants from my PR. So like I said, this is not solving
the issue which triggered me to suggest the PR in the first place. Committing
only half of it and then closing it does not help at all.
{code:none}
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.168 sec <<<
FAILURE! - in de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest
test(de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest) Time
elapsed: 0.079 sec <<< FAILURE!
org.codehaus.groovy.GroovyBugError: BUG! exception in phase 'semantic analysis'
in source unit 'script16545028826121044745165.groovy' Unsupported class file
major version 61
at
de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest.test(EmbeddedSpecRunnerTest.groovy:24)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major
version 61
at
de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest.test(EmbeddedSpecRunnerTest.groovy:24)
Results :
Failed tests:
EmbeddedSpecRunnerTest.test:24 BUG! exception in phase 'semantic analysis' in
source unit 'script16545028826121044745165.groovy' Unsupported class file major
version 61
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
{code}
> Embed ASM 9.2 in Groovy 2.5.x
> -----------------------------
>
> Key: GROOVY-10503
> URL: https://issues.apache.org/jira/browse/GROOVY-10503
> Project: Groovy
> Issue Type: Improvement
> Components: Compiler
> Affects Versions: 2.5.15
> Reporter: Alexander Kriegisch
> Assignee: Paul King
> Priority: Major
> Fix For: 2.5.17
>
> Attachments: javadoc-screenshot.png
>
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> When compiling Groovy scripts in a Groovy project running under JDK 16+,
> there are error messages like:
> {code:groovy}
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
> failed:
> General error during class generation: Unsupported class file major version 61
> java.lang.IllegalArgumentException: Unsupported class file major version 61
> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196)
> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177)
> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163)
> at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284)
> at
> org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
> at
> org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
> at
> org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
> at
> org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
> at
> org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
> at
> org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57)
> at
> org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:44)
> at
> org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveNonArrayType(AsmReferenceResolver.java:79)
> at
> org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveType(AsmReferenceResolver.java:70)
> at
> org.codehaus.groovy.ast.decompiled.MemberSignatureParser.createMethodNode(MemberSignatureParser.java:57)
> at
> org.codehaus.groovy.ast.decompiled.DecompiledClassNode$2.get(DecompiledClassNode.java:234)
> at
> org.codehaus.groovy.ast.decompiled.DecompiledClassNode$2.get(DecompiledClassNode.java:231)
> at
> org.codehaus.groovy.ast.decompiled.DecompiledClassNode.createMethodNode(DecompiledClassNode.java:242)
> at
> org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitMembers(DecompiledClassNode.java:199)
> at
> org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getDeclaredField(DecompiledClassNode.java:116)
> at
> org.codehaus.groovy.classgen.Verifier.getMetaClassField(Verifier.java:195)
> at
> org.codehaus.groovy.classgen.Verifier.addGroovyObjectInterfaceAndMethods(Verifier.java:411)
> at org.codehaus.groovy.classgen.Verifier.visitClass(Verifier.java:246)
> at
> org.codehaus.groovy.control.CompilationUnit$18.call(CompilationUnit.java:811)
> at
> org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1084)
> at
> org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:640)
> at
> org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:618)
> at
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:595)
> at
> groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:401)
> at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:89)
> at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:341)
> at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:338)
> at
> org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:147)
> at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:336)
> at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:320)
> at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:262)
> at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:272)
> at groovy.lang.GroovyClassLoader$parseClass$0.call(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
> at
> spock.util.EmbeddedSpecCompiler.doCompile(EmbeddedSpecCompiler.groovy:101)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at
> org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
> at
> org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190)
> at
> org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:58)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
> at
> spock.util.EmbeddedSpecCompiler.compile(EmbeddedSpecCompiler.groovy:76)
> at spock.util.EmbeddedSpecCompiler$compile.call(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
> at spock.util.EmbeddedSpecRunner.run(EmbeddedSpecRunner.groovy:92)
> at spock.util.EmbeddedSpecRunner$run.call(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
> at
> de.scrum_master.gitter.spock.d20210706.EmbeddedSpecRunnerTest.$spock_feature_0_0(EmbeddedSpecRunnerTest.groovy:28)
> {code}
> * Even when setting system property {{groovy.target.bytecode}} to a value
> like {{1.8}} on the command line
> * and using code fully compatible with the target bytecode level,
> * and even though the used {{GroovyClassLoader}} has a
> {{CompilerConfiguration}} with the correct {{targetBytecode}} (I checked,
> printing it before calling the script compiler),
> errors like the above occur, probably because the compiler somehow needs to
> analyse/decompile JRE classes.
> If the embedded ASM version relocated to the {{groovyjarjarasm.asm}} package
> would be upgraded to the current ASM 9.2, I think the problem should go away
> while being fully backwards compatible. I am not asking for target 16 or 17
> compilation support (even though that should in theory be possible, even
> without supporting Java 16/17 source code features), only for the compiler
> being able to at least understand existing Java 16/17 byte code. I am
> assuming this to be trivial to implement and am expecting all existing tests
> to still pass, except maybe for some negative tests testing for the above
> error message, if you have any such tests.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)