blob: 152b9467c472d3980f2f9106109f263886a2a028 [file] [log] [blame]
import org.checkerframework.checker.nullness.qual.*;
class Param<T extends @NonNull Object> {
// Field f needs to be set, because the upper bound is @Initialized
// :: error: (initialization.field.uninitialized)
T f;
void foo() {
// Valid, because upper bound is @Initialized @NonNull
f.toString();
}
}
// :: error: (type.argument)
class Invalid<S extends Param<@Nullable Object>> {
void bar(S s) {
s.foo();
}
// :: error: (type.argument)
<M extends Param<@Nullable Object>> void foobar(M p) {}
}
interface ParamI<T extends @NonNull Object> {}
class Invalid2<
S extends
Number &
// :: error: (type.argument)
ParamI<@Nullable Object>> {}
class Invalid3 {
<
M extends
Number &
// :: error: (type.argument)
ParamI<@Nullable Object>>
void foobar(M p) {}
}