blob: 68846dd6d6e966c6b1dd03923ec0df609df789a1 [file] [log] [blame]
// Test for Issue 289:
// https://github.com/typetools/checker-framework/issues/289
import java.util.ArrayList;
import java.util.List;
import org.checkerframework.checker.nullness.qual.*;
public class Issue289 {
void simple() {
List<Object> lo = new ArrayList<>();
List<String> ls = new ArrayList<>();
List<@Nullable Object> lno = new ArrayList<>();
List<@Nullable String> lns = new ArrayList<>();
List<List<String>> lls = new ArrayList<>();
lls.add(new ArrayList<>());
// TODO: add a similar test that uses method type variables.
}
// TODO: work on more complex examples:
class Upper<U1> {}
class Middle<M1, M2> extends Upper<M2> {}
class Lower1<L1> extends Middle<L1, @Nullable String> {}
class Lower2<L1> extends Middle<L1, @NonNull String> {}
void complex() {
Upper<@Nullable String> uns = new Lower1<>();
// :: error: (assignment)
Upper<String> us = new Lower1<>();
// :: error: (assignment)
uns = new Lower2<>();
us = new Lower2<>();
}
}