Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
4.0.2
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:
@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') } }
Attachments
Issue Links
- relates to
-
GROOVY-11448 General error during canonicalization when having closure with default args
- Resolved
-
GROOVY-11060 SC internal error when spreading inside list literal
- Closed
-
GROOVY-10599 STC: support spread operator for list literals
- Closed
- links to