Will do. What do we think about the required strictness of the RHS list literal matching the LHS array type ? Should this be required to be more 1:1 than in the "as" case ?E.g. shallint[][][] aaa3 = 1still be valid ? Cheers,mg
-------- Ursprüngliche Nachricht --------Von: Paul King <[email protected]> Datum: 30.04.18 05:18 (GMT+01:00) An: [email protected] Betreff: Re: [Poll] About supporting Java-like array 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 <[email protected]> wrote: Hi Daniel, I did a quick check and it works with dynamic Groovy, but is rejected under static compilation: @Test @Ignore void 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
