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 2022/02/03 22:48:00 UTC
[jira] [Closed] (GROOVY-10194) "PermittedSubclasses requires ASM9" when importing enum on Java 17
[ https://issues.apache.org/jira/browse/GROOVY-10194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-10194.
------------------------------
> "PermittedSubclasses requires ASM9" when importing enum on Java 17
> ------------------------------------------------------------------
>
> Key: GROOVY-10194
> URL: https://issues.apache.org/jira/browse/GROOVY-10194
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 3.0.8
> Reporter: Peter Burka
> Assignee: Paul King
> Priority: Major
> Fix For: 3.0.9
>
>
> Java 17 (at least as of EA31) is now emitting "PermittedSubclasses" attributes for certain enum classes. When groovyc 3.0.8 encounters these, it crashes with an UnsupportedOperationException.
> h1. Test case:
> h2. {{AnEnum.java}}
> {code:java}
> public enum AnEnum
> {
> ONE() {
> @Override
> public String digit() {
> return "1";
> }
> };
> public abstract String digit();
> }
> {code}
> h2. {{Foo.groovy}}
> {code:groovy}
> import AnEnum
> {code}
> h2. Compile them...
> {code}
> $ jdk-17/bin/javac AnEnum.java
> $ JAVA_HOME=jdk-17 groovy-3.0.8/bin/groovyc Foo.groovy
> >>> a serious error occurred: BUG! exception in phase 'semantic analysis' in source unit 'Foo.groovy' PermittedSubclasses requires ASM9
> >>> stacktrace:
> BUG! exception in phase 'semantic analysis' in source unit 'Foo.groovy' PermittedSubclasses requires ASM9
> at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:905)
> at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627)
> at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:610)
> at org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:311)
> at org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:240)
> at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompile(FileSystemCompiler.java:165)
> at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompileWithErrorHandling(FileSystemCompiler.java:205)
> at org.codehaus.groovy.tools.FileSystemCompiler.main(FileSystemCompiler.java:189)
> 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.tools.GroovyStarter.rootLoader(GroovyStarter.java:111)
> at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
> Caused by: java.lang.UnsupportedOperationException: PermittedSubclasses requires ASM9
> at groovyjarjarasm.asm.ClassVisitor.visitPermittedSubclass(ClassVisitor.java:266)
> at groovyjarjarasm.asm.ClassReader.accept(ClassReader.java:683)
> at groovyjarjarasm.asm.ClassReader.accept(ClassReader.java:401)
> 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.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:869)
> at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:505)
> at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1430)
> at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:261)
> at org.codehaus.groovy.control.CompilationUnit.lambda$new$16(CompilationUnit.java:738)
> at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901)
> ... 13 more
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)