class WithingBounds { interface I { } interface I1 { } void testE1() { class A { } class B extends A { } class ToCheckExtends { } ToCheckExtends pr; } void testERec1() { class A { } class B extends A { } class C{} class ToCheckExtends { } ToCheckExtends<? extends C> pr; ToCheckExtends> pr1; } void testE2() { class A { } class B { } class ToCheckExtends { } ToCheckExtends<? extends B> pr; } void testE22() { class B { } class A extends B { } class ToCheckExtends { } ToCheckExtends pr; } void testE23() { class A { } class ToCheckExtends { } ToCheckExtends pr; } void testE24() { final class A { } class ToCheckExtends { } ToCheckExtends<? extends I> pr; } void testE25() { class B { void foo() { this.bar(); } > void bar() { } } } void testE26() { class A{} class B { void foo() { this.bar(); } > void bar() { } } } //--------------------------------- void testE3() { class A { } class ToCheckExtends { } ToCheckExtends pr; } void testE4() { final class A { } class ToCheckExtends { } ToCheckExtends<? extends A> pr; } void testE5() { final class A implements I { } class ToCheckExtends { } ToCheckExtends pr; } interface AInterface { } void testE6() { class ToCheckExtends { } ToCheckExtends pr; } //----------------------------- void testS1() { class A { } class B extends A { } class ToCheckExtends { } ToCheckExtends pr; } void testS2() { class A { } class B { } class ToCheckExtends { } ToCheckExtends<? super B> pr; } void testS3() { class A { } class B extends A { } class ToCheckExtends { } ToCheckExtends<? super A> pr; } void testMisc() { class A {} class i {} final class ii extends i {} A pr4; AString> pr5; A pr51; A? extends String> pr52; A pr53; Ai> pr54; A pr55; A pr56; A pr57; A pr58; A? super i> pr59; A? extends A> pr510; Aii[]> pr511; A pr512; A pr30; Ai> pr3; A pr330; A pr2; A? super String> pr10; AA> pr31; Aii[]> pr32; AA> pr33; A pr6; Ai> pr6x1; A pr6x2; A pr6x3; AInteger> pr8; A? extends String> pr12; A pr13; A pr14; A pr13x3; A pr13x4; A pr19; A pr110; A pr11x0; A? super i> pr111; A pr15; Aii[]> pr16; AA> pr17; AA> pr18; A? super String> pr112; A' is not within its bound; should extend '? extends ii'">? super A> pr113; A pr701; AString> pr72; A pr73; Aii[]> pr74; A? extends String> pr75; A pr76; A pr77; A pr78; A pr79; A pr791; A pr713; A? super String> pr712; A? super i> pr710; Ai> pr70; A pr71; A pr711; A a1; AObject> a2; A a3; Ai[]> a4; Aint[]> a5; A a6; A a7; A a8; Aint[]> a9; A a10; A a11; Ai[]> a12; A a13; A a14; A a140; Ai[]> a141; Ai> a142; AString> a143; Ai[][]> a144; A a145; A a146; A a147; A? extends i> a148; A? extends String> a149; A a1410; A? extends i[][]> a1411; A a1412; A a1413; A? super i[]> a1414; A? super i> a1415; A? super String> a1416; A? super i[][]> a1417; A a15; A a150; Ai[]> a151; Ai> a152; AString> a153; Ai[][]> a154; A a155; A a156; A a157; A? extends i> a158; A? extends String> a159; A a1510; A? extends i[][]> a1511; A a1512; A a1513; A? super i[]> a1514; A? super i> a1515; A? super String> a1516; A? super i[][]> a1517; A a16; A a160; A a161; A a162; A< I1[], ? extends I[]> cl; } void testRawTypes() { class A> {} A a; A<String> a1; A<A> a2; AA>> a3; A a4; A<? super A> a5; A<A[]> a7; } }