[ https://issues.apache.org/jira/browse/GROOVY-10197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17397974#comment-17397974 ]
Ivan Kuznetsov commented on GROOVY-10197: ----------------------------------------- This is very similar to GROOVY-9524 > java.lang.VerifyError using property inside enum's constant > ----------------------------------------------------------- > > Key: GROOVY-10197 > URL: https://issues.apache.org/jira/browse/GROOVY-10197 > Project: Groovy > Issue Type: Bug > Affects Versions: 3.0.8 > Reporter: Ivan Kuznetsov > Priority: Major > > I'm facing with this strange error after script compiles successfully but > fails to load using groovy 3.0.8: > {noformat} > java.lang.VerifyError: Bad type on operand stack > Exception Details: > Location: > E$1.<init>(Ljava/lang/String;ILjava/util/LinkedHashMap;)V @50: > invokevirtual > Reason: > Type 'E$1' (current frame, stack[0]) is not assignable to > 'groovy/lang/Closure' > Current Frame: > bci: @50 > flags: { } > locals: { 'E$1', 'java/lang/String', integer, 'java/util/LinkedHashMap', > integer } > stack: { 'E$1' } > Bytecode: > 0000000: 2a2b 1c2d 01b7 0012 0436 0415 042a 5fb5 > 0000010: 0014 1504 572d c700 0704 a700 0403 9900 > 0000020: 13bb 0016 5912 18b7 001b c000 1dbf 0000 > 0000030: bf2a b600 23c0 0004 c000 2512 26b6 002a > 0000040: 9900 1a2d 1226 b900 3002 003a 0519 05b8 > 0000050: 0036 2a5f b500 1419 0557 2a2d b800 3c01 > 0000060: 57b1 > Stackmap Table: > full_frame(@29,{Object[#2],Object[#69],Integer,Object[#37],Integer},{}) > same_locals_1_stack_item_frame(@30,Integer) > full_frame(@46,{},{Object[#29]}) > full_frame(@49,{Object[#2],Object[#69],Integer,Object[#37],Integer},{}) > same_frame(@90) > same_frame(@97) at E.<clinit>(ideaGroovyConsole.groovy) > at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native > Method) > at > java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1155) > at > java.base/jdk.internal.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:42) > at > java.base/jdk.internal.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:186) > at > java.base/java.lang.reflect.Field.acquireFieldAccessor(Field.java:1126) > at java.base/java.lang.reflect.Field.getFieldAccessor(Field.java:1107) > at java.base/java.lang.reflect.Field.get(Field.java:419) > at > org.codehaus.groovy.reflection.CachedField.getProperty(CachedField.java:68) > at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1900) > at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3874) > at > org.codehaus.groovy.runtime.callsite.ClassMetaClassGetPropertySite.getProperty(ClassMetaClassGetPropertySite.java:50) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:329) > at ideaGroovyConsole.run(ideaGroovyConsole.groovy:110) {noformat} > Here is the reproducing script: > {code:java} > @CompileStatic > enum E { > E1{ > // int value = 1 > int getValue() { 1 } > } > int getValue() { -1 } > } > {code} > If you use an overriding method, all is working fine. But replacing method > with local field causes an error above. I think it is > {{@CompileStatic}}-specific error, because without this annotation both > versions are loaded successfully. -- This message was sent by Atlassian Jira (v8.3.4#803005)