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)