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


    
    

  



Reply via email to