blob: 3d0f02730328d34081bff15a5192cab7bc7c5111 [file] [log] [blame]
// Test case for issue #1572 and issue #1330
// https://github.com/typetools/checker-framework/issues/1572
// https://github.com/typetools/checker-framework/issues/1330
// @skip-test until the issues are fixed
import org.checkerframework.checker.nullness.qual.*;
public class ThreadLocalTest2 {
private static int unwrap(final ThreadLocal<Integer> tl) {
return tl.get().intValue();
}
private static void wrap(final ThreadLocal<Integer> tl, final int value) {
tl.set(Integer.valueOf(value));
}
private static ThreadLocal<Integer> consumed_chars =
new ThreadLocal<Integer>() {
@Override
protected Integer initialValue() {
return Integer.valueOf(0);
}
};
class MyThreadLocalNN extends ThreadLocal<@NonNull Integer> {
@Override
protected Integer initialValue() {
return new Integer(0);
}
}
class MyThreadLocalNnIncorrectOverride extends ThreadLocal<@NonNull Integer> {
@Override
// :: error: (override.return)
protected @Nullable Integer initialValue() {
return null;
}
}
// :: error: (method.not.overridden)
class MyThreadLocalNnNoOverride extends ThreadLocal<@NonNull Integer> {}
class MyThreadLocalNble extends ThreadLocal<@Nullable Integer> {
@Override
protected @Nullable Integer initialValue() {
return null;
}
}
class MyThreadLocalNbleStrongerOverride extends ThreadLocal<@Nullable Integer> {
@Override
protected @NonNull Integer initialValue() {
return new Integer(0);
}
}
class MyThreadLocalNbleNoOverride extends ThreadLocal<@Nullable Integer> {}
void foo() {
// :: error: (type.argument)
new ThreadLocal<@NonNull Object>();
// :: error: (type.argument)
new InheritableThreadLocal<@NonNull Object>();
new ThreadLocal<@Nullable Object>();
new InheritableThreadLocal<@Nullable Object>();
new MyThreadLocalNN();
}
}