And another thing which I don't understand and seems highly suspicious — do I
just miss something of importance, or is it a bug?
===
127 ocs /tmp> <q.groovy
class q {
static main(av) {
println "my MC is $this.metaClass"
}
}
128 ocs /tmp> /usr/local/groovy-3.0.4/bin/groovy q
Caught: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
q.main([Ljava/lang/String;)V @21: getfield
Reason:
Type '[Ljava/lang/String;' (current frame, stack[7]) is not assignable to
'q'
Current Frame:
bci: @21
flags: { }
locals: { '[Ljava/lang/String;',
'[Lorg/codehaus/groovy/runtime/callsite/CallSite;' }
stack: { 'org/codehaus/groovy/runtime/callsite/CallSite',
'java/lang/Class', uninitialized 10, uninitialized 10, '[Ljava/lang/Object;',
'[Ljava/lang/Object;', integer, '[Ljava/lang/String;' }
Bytecode:
0000000: b800 144c 2b12 2132 1202 bb00 2359 04bd
0000010: 0004 5903 2ab4 001c 5305 bd00 2559 0312
0000020: 2753 5904 1229 53b7 002c b900 3203 0057
0000030: b1
java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
q.main([Ljava/lang/String;)V @21: getfield
Reason:
Type '[Ljava/lang/String;' (current frame, stack[7]) is not assignable to
'q'
Current Frame:
bci: @21
flags: { }
locals: { '[Ljava/lang/String;',
'[Lorg/codehaus/groovy/runtime/callsite/CallSite;' }
stack: { 'org/codehaus/groovy/runtime/callsite/CallSite',
'java/lang/Class', uninitialized 10, uninitialized 10, '[Ljava/lang/Object;',
'[Ljava/lang/Object;', integer, '[Ljava/lang/String;' }
Bytecode:
0000000: b800 144c 2b12 2132 1202 bb00 2359 04bd
0000010: 0004 5903 2ab4 001c 5305 bd00 2559 0312
0000020: 2753 5904 1229 53b7 002c b900 3203 0057
0000030: b1
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
129 ocs /tmp>
===
> On 27 May 2020, at 23:42, [email protected] wrote:
>
> 484 ocs /tmp> <q.groovy
> class q {
> static main(av) {
> new Foo().test()
> }
> }
> class Foo extends Root { }
> class Root {
> private _objects=[]
> void test() {
> println "this is OK"
> _objects<<'hi'
> println "this crashes"
> 1.times { _objects<<it }
> }
> }
> 485 ocs /tmp> /usr/local/groovy-3.0.4/bin/groovy q
> this is OK
> this crashes
> Caught: groovy.lang.MissingPropertyException: No such property: _objects for
> class: Foo
> groovy.lang.MissingPropertyException: No such property: _objects for class:
> Foo
> at Root$_test_closure1.doCall(q.groovy:13)
> at Root.test(q.groovy:13)
> at Root$test.call(Unknown Source)
> at q.main(q.groovy:3)
> 486 ocs /tmp>
>