Lambda Spec: Support capture when a nested invocation returns an inference variable

XMLWordPrintable

    • Verified

      abstract class A2<T>{
         abstract <S> S pick(S x, S y);
         abstract <S1> void m(A2<S1> a)

         void test(A2<Integer> y, A2<Long> x){
              m(pick(x, y));
         }
      }

      Even though the return type of 'pick' is not wildcard-parameterized, for certain instantiations it can be. The greedy inference strategy of JLS 7 would then perform capture on the instantiated return type before performing inference for 'm'. The Lambda Spec instead skips capture (see 18.5.2) and produces an error.

            Assignee:
            Dan Smith
            Reporter:
            Dan Smith
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: