test/tools/javac/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.java

changeset 2402
b45fd486977d
parent 2397
d1005694e384
parent 2401
8ee530e741d1
child 2403
a550336d045f
child 2406
372fd7283bf0
child 2462
3cb08f680986
     1.1 --- a/test/tools/javac/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.java	Wed May 28 02:28:07 2014 -0700
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,182 +0,0 @@
     1.4 -/*
     1.5 - * @test /nodynamiccopyright/
     1.6 - * @bug 8030741
     1.7 - * @summary Inference: implement eager resolution of return types, consistent with JDK-8028800
     1.8 - * @compile/fail/ref=EagerReturnTypeResolutionTestb.out -XDrawDiagnostics EagerReturnTypeResolutionTestb.java
     1.9 - * @author Dan Smith
    1.10 - */
    1.11 -
    1.12 -import java.util.List;
    1.13 -
    1.14 -public class EagerReturnTypeResolutionTestb {
    1.15 -    interface I<S> {}
    1.16 -    interface J<S> extends I<S> {}
    1.17 -    interface K extends I<String> {}
    1.18 -    interface L<S> extends I {}
    1.19 -
    1.20 -    <T> T lower(List<? extends T> l) { return null; }
    1.21 -    <T> T lower2(List<? extends T> l1, List<? extends T> l2) { return null; }
    1.22 -
    1.23 -    <T> T upper(List<? super T> l) { return null; }
    1.24 -    <T> T upper2(List<? super T> l1, List<? super T> l2) { return null; }
    1.25 -
    1.26 -    <T> T eq(List<T> l) { return null; }
    1.27 -    <T> T eq2(List<T> l1, List<T> l2) { return null; }
    1.28 -
    1.29 -    <X> void takeI(I<X> i) {}
    1.30 -    void takeIString(I<String> i) {}
    1.31 -    I<String> iStringField;
    1.32 -
    1.33 -    void takeLong(long arg) {}
    1.34 -    long longField;
    1.35 -
    1.36 -    void testSimpleCaptureOK(List<I<?>> i1) {
    1.37 -        takeI(lower(i1)); // ok*
    1.38 -        takeI(eq(i1)); // ok*
    1.39 -        takeI(upper(i1)); // ok, no capture
    1.40 -        takeIString(upper(i1)); // ok
    1.41 -        iStringField = upper(i1); // ok
    1.42 -    }
    1.43 -
    1.44 -    void testSimpleCaptureKO(List<I<?>> i1) {
    1.45 -        takeIString(lower(i1)); // ERROR
    1.46 -        takeIString(eq(i1)); // ERROR
    1.47 -        iStringField = lower(i1); // ERROR
    1.48 -        iStringField = eq(i1); // ERROR
    1.49 -    }
    1.50 -
    1.51 -    void testMultiCaptureOK(List<I<String>> i1, List<I<Integer>> i2, List<I<?>> i3,
    1.52 -                          List<J<String>> j1, List<J<Integer>> j2, List<K> k1) {
    1.53 -        /* Lines marked with JDK-8029002 should be uncommented once this bug is
    1.54 -         * fixed
    1.55 -         */
    1.56 -        takeI(lower2(i1, i2)); // ok*
    1.57 -        takeI(lower2(i1, i3)); // ok*
    1.58 -        takeI(upper2(i1, i3)); // ok, no capture*  JDK-8029002
    1.59 -
    1.60 -        takeIString(upper2(i1, i3)); // ok, no capture
    1.61 -        iStringField = upper2(i1, i3); // ok, no capture
    1.62 -
    1.63 -        takeI(lower2(j1, j2)); // ok*
    1.64 -        takeI(lower2(j1, k1)); // ok, no capture
    1.65 -        takeI(upper2(j1, k1)); // ok, no capture*  JDK-8029002
    1.66 -
    1.67 -        takeIString(lower2(j1, k1)); // ok, no capture
    1.68 -        takeIString(upper2(j1, k1)); // ok, no capture
    1.69 -
    1.70 -        iStringField = lower2(j1, k1); // ok, no capture
    1.71 -        iStringField = upper2(j1, k1); // ok, no capture
    1.72 -        takeI(lower2(j2, k1)); // ok*
    1.73 -    }
    1.74 -
    1.75 -    void testMultiCaptureKO(List<I<String>> i1, List<I<Integer>> i2, List<I<?>> i3,
    1.76 -                          List<J<String>> j1, List<J<Integer>> j2, List<K> k1) {
    1.77 -        takeI(eq2(i1, i2)); // ERROR, bad bounds
    1.78 -        takeI(upper2(i1, i2)); // ERROR, bad bounds
    1.79 -
    1.80 -        takeIString(lower2(i1, i2)); // ERROR
    1.81 -        takeIString(eq2(i1, i2)); // ERROR, bad bounds
    1.82 -        takeIString(upper2(i1, i2)); // ERROR, bad bounds
    1.83 -
    1.84 -        iStringField = lower2(i1, i2); // ERROR
    1.85 -        iStringField = eq2(i1, i2); // ERROR, bad bounds
    1.86 -        iStringField = upper2(i1, i2); // ERROR, bad bounds
    1.87 -
    1.88 -        takeI(eq2(i1, i3)); // ERROR, bad bounds
    1.89 -        takeIString(lower2(i1, i3)); // ERROR
    1.90 -        takeIString(eq2(i1, i3)); // ERROR, bad bounds
    1.91 -
    1.92 -        iStringField = lower2(i1, i3); // ERROR
    1.93 -        iStringField = eq2(i1, i3); // ERROR, bad bounds
    1.94 -        takeI(eq2(j1, j2)); // ERROR, bad bounds
    1.95 -        takeI(upper2(j1, j2)); // ERROR, bad bounds
    1.96 -
    1.97 -        takeIString(lower2(j1, j2)); // ERROR
    1.98 -        takeIString(eq2(j1, j2)); // ERROR, bad bounds
    1.99 -        takeIString(upper2(j1, j2)); // ERROR, bad bounds
   1.100 -
   1.101 -        iStringField = lower2(j1, j2); // ERROR
   1.102 -        iStringField = eq2(j1, j2); // ERROR, bad bounds
   1.103 -        iStringField = upper2(j1, j2); // ERROR, bad bounds
   1.104 -
   1.105 -        takeI(eq2(j1, k1)); // ERROR, bad bounds
   1.106 -        takeIString(eq2(j1, k1)); // ERROR, bad bounds
   1.107 -        iStringField = eq2(j1, k1); // ERROR, bad bounds
   1.108 -        takeI(eq2(j2, k1)); // ERROR, bad bounds
   1.109 -        takeI(upper2(j2, k1)); // ERROR, bad bounds; actual: no error, see JDK-8037474
   1.110 -
   1.111 -        takeIString(lower2(j2, k1)); // ERROR
   1.112 -        takeIString(eq2(j2, k1)); // ERROR, bad bounds
   1.113 -        takeIString(upper2(j2, k1)); // ERROR, bad bounds
   1.114 -
   1.115 -        iStringField = lower2(j2, k1); // ERROR
   1.116 -        iStringField = eq2(j2, k1); // ERROR, bad bounds
   1.117 -        iStringField = upper2(j2, k1); // ERROR, bad bounds
   1.118 -    }
   1.119 -
   1.120 -    void testRawOK(List<I> i1, List<J> j1, List<L<String>> l1) {
   1.121 -        takeI(lower(i1)); // ok, unchecked
   1.122 -        takeI(eq(i1)); // ok, unchecked
   1.123 -        takeI(upper(i1)); // ok, no capture, not unchecked
   1.124 -
   1.125 -        takeIString(lower(i1)); // ok, unchecked
   1.126 -        takeIString(eq(i1)); // ok, unchecked
   1.127 -        takeIString(upper(i1)); // ok, no capture, not unchecked
   1.128 -
   1.129 -        iStringField = lower(i1); // ok, unchecked
   1.130 -        iStringField = eq(i1); // ok, unchecked
   1.131 -        iStringField = upper(i1); // ok, no capture, not unchecked
   1.132 -
   1.133 -        takeI(lower(j1)); // ok, unchecked
   1.134 -        takeI(eq(j1)); // ok, unchecked
   1.135 -        takeI(upper(j1)); // bad bounds? -- spec is unclear
   1.136 -
   1.137 -        takeIString(lower(j1)); // ok, unchecked
   1.138 -        takeIString(eq(j1)); // ok, unchecked
   1.139 -        takeIString(upper(j1)); // bad bounds? -- spec is unclear
   1.140 -
   1.141 -        iStringField = lower(j1); // ok, unchecked
   1.142 -        iStringField = eq(j1); // ok, unchecked
   1.143 -        iStringField = upper(j1); // bad bounds? -- spec is unclear
   1.144 -
   1.145 -        takeI(lower(l1)); // ok, unchecked
   1.146 -        takeI(eq(l1)); // ok, unchecked
   1.147 -        takeI(upper(l1)); // bad bounds? -- spec is unclear
   1.148 -
   1.149 -        takeIString(lower(l1)); // ok, unchecked
   1.150 -        takeIString(eq(l1)); // ok, unchecked
   1.151 -        takeIString(upper(l1)); // bad bounds? -- spec is unclear
   1.152 -
   1.153 -        iStringField = lower(l1); // ok, unchecked
   1.154 -        iStringField = eq(l1); // ok, unchecked
   1.155 -        iStringField = upper(l1); // bad bounds? -- spec is unclear
   1.156 -    }
   1.157 -
   1.158 -    void testPrimOK(List<Integer> i1, List<Long> l1, List<Double> d1) {
   1.159 -        takeLong(lower(i1)); // ok
   1.160 -        takeLong(eq(i1)); // ok
   1.161 -        takeLong(upper(i1)); // ok*
   1.162 -
   1.163 -        longField = lower(i1); // ok
   1.164 -        longField = eq(i1); // ok
   1.165 -        longField = upper(i1); // ok*
   1.166 -
   1.167 -        takeLong(lower(l1)); // ok
   1.168 -        takeLong(eq(l1)); // ok
   1.169 -        takeLong(upper(l1)); // ok
   1.170 -
   1.171 -        longField = lower(l1); // ok
   1.172 -        longField = eq(l1); // ok
   1.173 -        longField = upper(l1); // ok
   1.174 -    }
   1.175 -
   1.176 -    void testPrimKO(List<Integer> i1, List<Long> l1, List<Double> d1) {
   1.177 -        takeLong(lower(d1)); // ERROR
   1.178 -        takeLong(eq(d1)); // ERROR
   1.179 -        takeLong(upper(d1)); // ERROR
   1.180 -
   1.181 -        longField = lower(d1); // ERROR
   1.182 -        longField = eq(d1); // ERROR
   1.183 -        longField = upper(d1); // ERROR
   1.184 -    }
   1.185 -}

mercurial