1 /*
   2  * @test
   3  * @bug 8031744
   4  * @compile TestTypeAnnotatedParameterizedParameter.java
   5  */
   6 import java.lang.annotation.*;
   7 import java.util.List;
   8 
   9 public class TestTypeAnnotatedParameterizedParameter<E> {
  10     @Target(ElementType.TYPE_USE)
  11     public @interface TA {}
  12 
  13     public static <M> void m(TestTypeAnnotatedParameterizedParameter<? extends @TA M> param) { }
  14 
  15     public <Z> void m2(Z z1, Z z2) {
  16         Z z0 = z1;
  17         z1 = z2;
  18         z2 = z0;
  19     }
  20 
  21     public <Z> void m3(@TA Z z1, Z z2) {
  22         Z z0 = z1;
  23         z1 = z2;
  24         z2 = z0;
  25     }
  26 
  27     public <Z> void m4(Z z1, @TA Z z2) {
  28         Z z0 = z1;
  29         z1 = z2;
  30         z2 = z0;
  31     }
  32     public <Z> void m5(List<? extends Z> z1, List<? extends Z> z2) {
  33         z1 = z2;
  34         z2 = z1;
  35     }
  36 
  37     public <Z> void m6(List<? extends @TA Z> z1, List<? extends Z> z2) {
  38         z1 = z2;
  39         z2 = z1;
  40     }
  41 
  42     public <Z> void m65(Z z1, @TA Z z2) {
  43         z1 = z2;
  44         z2 = z1;
  45     }
  46 
  47     public <Z> void m7(List<? extends Z> z1, List<? extends @TA Z> z2) {
  48         z1 = z2;
  49         z2 = z1;
  50     }
  51 
  52     public <Z> void m8(List<@TA ? extends Z> z1, List<? extends Z> z2) {
  53         z1 = z2;
  54         z2 = z1;
  55     }
  56 
  57     public <Z> void m9(List<? extends Z> z1, List<@TA ? extends Z> z2) {
  58         z1 = z2;
  59         z2 = z1;
  60     }
  61 
  62     public <Z> void m10(List<? extends List<? extends @TA Z>> z1, List<? extends List<? extends Z>> z2) {
  63         z1 = z2;
  64         z2 = z1;
  65     }
  66 
  67     public <Z> void m11(List<? extends List<? extends Z>> z1, List<? extends List<? extends @TA Z>> z2) {
  68         z1 = z2;
  69         z2 = z1;
  70     }
  71 }