[ 
https://issues.apache.org/jira/browse/GROOVY-11492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18133639#comment-18133639
 ] 

ASF GitHub Bot commented on GROOVY-11492:
-----------------------------------------

daniellansun commented on PR #3054:
URL: https://github.com/apache/groovy/pull/3054#issuecomment-6473194077

   @eric-milles Thanks for the follow-up.
   
   **2.** Agreed — getting `Object[] a = { {} }` off the NPE path is the 
important win. Remaining mismatched-dimension / multi-expression nested cases 
can be separate tickets rather than blockers for this PR.
   
   **3.** If the new caret lines up with the other similar recovery messages, 
I’m fine leaving the negative tests as updated.
   
   **4.** Thanks for writing the list — I’ll follow that thread.
   
   **1** is still my main merge concern: `Closure[] a = { println('x') }` (and 
similar non-command-chain Runnable/Callable bodies) running at initialisation 
and storing `null` is a silent behaviour change. COMPATIBILITY covers the 
empty-`{}` promotion flip, but not that eager-eval case. Until the list settles 
A vs B, I’d still like either a compile-time diagnostic for Closure/SAM leaves, 
or path B (array reading except empty/singleton when the leaf is Closure/SAM, 
and possibly Object), plus tests for `{}` / `{ it }` / `{ -> }` / `{ { } }` / 
`Runnable[]` / `Object[]` / `@CompileStatic`.
   
   **5.** Happy with the terse form in the docs; a short explicit rule on the 
differences/syntax pages for when a non-empty `{…}` body is an array vs a 
closure (and how to spell the old promotion) would still help.
   
   Happy to re-review quickly once the list direction is clear, or if you push 
diagnostics / B.




> Java compatibility: array initializers without "new Type[]"
> -----------------------------------------------------------
>
>                 Key: GROOVY-11492
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11492
>             Project: Groovy
>          Issue Type: Improvement
>          Components: parser-antlr4
>            Reporter: Eric Milles
>            Assignee: Eric Milles
>            Priority: Major
>              Labels: arrays
>
> There are a few cases where bare array initializers are not yet supported:
> # {{int[][] array = \{ \{1,2\}, \{3,4\} \};}}
> # {{@Target(\{ ElementType.FIELD, ElementType.METHOD \})}}
> # {code:groovy}@interface A {
>   String[] strings() default {}
> }
> {code}
> These were implemented as part of [1] but the PR was closed.  It may be worth 
> looking back over what was done and re-implementing one or more of these 
> cases.  It was noted that {{Closure[] array = \{\};}} is one of the edge 
> cases that leads to ambiguity.
> [1] https://github.com/apache/groovy/pull/691



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to