Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-10597

STC: support spread arguments for varargs

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              emilles Eric Milles
              chrylis Christopher Smith
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: