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/04/26 00:03:00 UTC

[jira] [Comment Edited] (GROOVY-10597) Permit spread operator in static mode for varargs

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

Eric Milles edited comment on GROOVY-10597 at 4/26/22 12:02 AM:
----------------------------------------------------------------

You can combine + or an explicit call to plus with toArray. But yes that would be more verbose. 


was (Author: emilles):
You can combine + or an explicit call to plus. But yes that would be more verbose. 

> Permit spread operator in static mode for varargs
> -------------------------------------------------
>
>                 Key: GROOVY-10597
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10597
>             Project: Groovy
>          Issue Type: Improvement
>          Components: Static Type Checker
>    Affects Versions: 4.0.2
>            Reporter: Christopher Smith
>            Priority: Minor
>
> I have a varargs method that takes many parameters for inclusion into an output JSON array. I am needing to preprocess some of these parameters, and I tried to use the spread operator to deconstruct them inline. However, I'm receiving the error "The spread operator cannot be used" because the compiler can't determine arity.
> This is perfectly sensible, but in the specific case where the spread operator would be applied in a position where its values expand into a varargs, as long as the element type produced by the spread is a subtype of the declared varargs type, it would be helpful for the spread to succeed.
> Sample:
> {code:groovy}
> @CompileStatic
> class Groovy10597 {
>   static void output(int code, String... widgets) {
>     println "$code: ${Arrays.toString(widgets)}"
>   }
>   static List<String> createWidgets() {
>     ['w1', 'w2']
>   }
>   static void sample() {
>     output(42, 'w0', *createWidgets(), 'w3')
>   } 
> }
> {code}



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