File: Issue511.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,104 kB
  • sloc: java: 145,916; xml: 839; sh: 518; makefile: 404; perl: 26
file content (31 lines) | stat: -rw-r--r-- 1,089 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Additional test case for issue #511:
// https://github.com/typetools/checker-framework/issues/511
class MyGeneric<T extends Number> {}

class MySuperClass {
    public void method(MyGeneric<? extends Object> x) {}
}

public class Issue511 extends MySuperClass {
    @Override
    public void method(MyGeneric<?> x) {
        super.method(x);
    }

    // public void method(MyGeneric<? extends Number> x) {}
    // On the above method, javac issues the following error:
    // Issue511.java:19: error: name clash: method(MyGeneric<? extends Number>) in Issue511 and
    // method(MyGeneric<? extends Object>) in MySuperClass have the same erasure, yet neither
    // overrides the other
    // public void method(MyGeneric<? extends Number> x) {}
    //    ^
    //            1 error

}

class Use {
    MyGeneric<? extends Object> wildCardExtendsObject = new MyGeneric<>();
    MyGeneric<? extends Number> wildCardExtendsNumber = wildCardExtendsObject;
    MyGeneric<?> wildCardNoBound = new MyGeneric<>();
    MyGeneric<? extends Number> wildCardExtendsNumber2 = wildCardNoBound;
}