groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: [Poll] About supporting Java-like array
Date Mon, 30 Apr 2018 03:18:18 GMT
That sounds like a limitation we'd like to remove when using
@CompileStatic. Want to create a Jira?

Cheers, Paul.

On Mon, Apr 30, 2018 at 12:39 PM, MG <mgbiz@arscreat.com> wrote:

> Hi Daniel,
>
> I did a quick check and it works with dynamic Groovy, but is rejected
> under static compilation:
>
> @Test@Ignorevoid arrayFromListLiteral() {
>   int[] a0 = [1,2,3]
>   int[][] aa0 = [[1,2,3],[4,5,6]]
>   int[][][] aaa0 = [[[1],[2],[3]],[[4],[5],[6]]]
>   int[][][] aaa1 = [[1,2,3],[4,5,6]]
>   int[][][] aaa2 = [1,2,3,4,5,6]
>   int[][][] aaa3 = 1  println "a0=$a0"  println "aa0=$aa0"  println "aaa0=$aaa0"  println
"aaa1=$aaa1"  println "aaa2=$aaa2"  println "aaa3=$aaa3"  assert a0 instanceof int[]
>   assert aa0 instanceof int[][]
>   assert aaa0 instanceof int[][][]
>   assert aaa1 instanceof int[][][]
>   assert aaa2 instanceof int[][][]
>   assert aaa3 instanceof int[][][]
> }
>
> gives:
>
> a0=[1, 2, 3]
> aa0=[[1, 2, 3], [4, 5, 6]]
> aaa0=[[[1], [2], [3]], [[4], [5], [6]]]
> aaa1=[[[1], [2], [3]], [[4], [5], [6]]]
> aaa2=[[[1]], [[2]], [[3]], [[4]], [[5]], [[6]]]
> aaa3=[[[1]]]
>
>
> with @CompileStatic the compiler gives:
>
> Error:(37, 19) Groovyc: [Static type checking] - Cannot assign value of
> type java.util.List <java.lang.Integer> into array of type int[][]
> Error:(38, 22) Groovyc: [Static type checking] - Cannot assign value of
> type java.util.List <java.util.List> into array of type int[][][]
> Error:(39, 22) Groovyc: [Static type checking] - Cannot assign value of
> type java.util.List <java.lang.Integer> into array of type int[][][]
> Error:(40, 22) Groovyc: [Static type checking] - Cannot assign value of
> type int into array of type int[][][]
> Error:(41, 22) Groovyc: [Static type checking] - Cannot assign value of
> type int to variable of type int[][][]
>
> and one has to do
>
> int[][] aa0 = [[1,2,3],[4,5,6]] as int[][]
>
> etc
>
> Cheers,
> mg
>
>
>
>
> On 30.04.2018 02:02, Daniel Sun wrote:
>
> Hi mg,
>
>      As far as I remember, two dimensional array like`int[][] a = [[1, 2,
> 3], [4, 5, 6]]` will go wrong in the Groovy style.
>
> Cheers,
> Daniel.Sun
>
>
>
>
> --
> Sent from: http://groovy.329449.n5.nabble.com/Groovy-Users-f329450.html
>
>
>

Mime
View raw message