You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2022/05/22 16:08:00 UTC

[jira] [Updated] (GROOVY-1092) Multidimensional arrays are broken

     [ https://issues.apache.org/jira/browse/GROOVY-1092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles updated GROOVY-1092:
--------------------------------
    Labels: ClassFormatError  (was: )

> Multidimensional arrays are broken
> ----------------------------------
>
>                 Key: GROOVY-1092
>                 URL: https://issues.apache.org/jira/browse/GROOVY-1092
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 1.0-JSR-3
>         Environment: Java 1.4.2, Windows XP
>            Reporter: Peter Eastman
>            Assignee: Jochen Theodorou
>            Priority: Critical
>              Labels: ClassFormatError
>
> Multidimensional arrays are completely broken.  If I try to create one using the standard syntax
> a = new Object[2][2];
> I get an error
> Script1.groovy: 1: Unknown type: ARRAY_DECLARATOR at line: 1 column: 15. File: Script1.groovy @ line 1, column 15.
> Nor does there seem to be any other syntax for creating a multidimensional array.  Of course, I can do it by using reflection:
> import java.lang.reflect.*;
> a = Array.newInstance(Object.class, (int []) [2, 2]);
> That successfully creates a multidimensional array, but as soon as I try to do anything with it, the parser dies.  For example, a simple reference to a.length produces the following exception:
> java.lang.ClassFormatError: gjdk/[Ljava/lang/Object;_GroovyReflectorArray (Illegal Class name "gjdk/[Ljava/lang/Object;_GroovyReflectorArray")
> 	at java.lang.ClassLoader.defineClass0(Native Method)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
> 	at groovy.lang.GroovyClassLoader.defineClass(GroovyClassLoader.java:481)
> 	at groovy.lang.MetaClassRegistry$3.run(MetaClassRegistry.java:169)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at groovy.lang.MetaClassRegistry.loadClass(MetaClassRegistry.java:167)
> 	at groovy.lang.MetaClass.loadReflectorClass(MetaClass.java:2309)
> 	at groovy.lang.MetaClass.loadReflector(MetaClass.java:2291)
> 	at groovy.lang.MetaClass.generateReflector(MetaClass.java:2241)
> 	at groovy.lang.MetaClass.checkInitialised(MetaClass.java:2188)
> 	at groovy.lang.MetaClassRegistry.getMetaClass(MetaClassRegistry.java:124)
> 	at org.codehaus.groovy.runtime.Invoker.getProperty(Invoker.java:638)
> 	at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:175)
> 	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:274)
> 	at Script1.run(Unknown Source)
> 	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:500)
> 	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:478)
> Passing the array as an argument to any method similarly produces an exception.  This makes Groovy completely incapable of invoking any method that takes a multidimensional array as an argument.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)