[ 
https://issues.apache.org/jira/browse/GROOVY-10597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Smith updated GROOVY-10597:
---------------------------------------
    Description: 
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}

  was:
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.


> 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)

Reply via email to