File: TestInfer.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 (22 lines) | stat: -rw-r--r-- 716 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
// Test case for issue #238: https://github.com/typetools/checker-framework/issues/238

import java.util.ArrayList;
import java.util.List;
import org.checkerframework.checker.nullness.qual.UnknownKeyFor;

class TestInfer {
    <T extends Object> T getValue(List<T> l) {
        return l.get(0);
    }

    void bar(Object o) {}

    void foo() {
        List<@UnknownKeyFor ? extends Object> ls = new ArrayList<>();
        bar(getValue(ls)); // this fails, but just getValue(ls) is OK
        // casting is also OK, ie bar((Object)getValue(ls))
        // the constraint should be T<:Object, which should typecheck
        // since ls:List<? extends Object> unifies with List<T> where
        // T<:Object.
    }
}