| package nullness.generics; |
| |
| // see also framework/tests/all-systems/WildcardSuper2 |
| |
| import java.util.List; |
| import org.checkerframework.checker.nullness.qual.NonNull; |
| |
| interface ToOverride<T> { |
| // For nullness this should default to type @NonNull List<? [ extends @Nullable Object |
| // super @NonNull T ]> |
| public abstract int transform(List<? super T> function); |
| } |
| |
| public class WildcardOverride implements ToOverride<Object> { |
| // invalid because the overriden method takes @Nullable args and this one doesn't |
| @Override |
| // :: error: (override.param) |
| public int transform(List<Object> function) { |
| return 0; |
| } |
| } |
| |
| interface ToOverride2<T> { |
| // For nullness this should be typed as |
| // @NonNull List<? [ extends @NonNull Object super T [ extends @Nullable super @NonNull ]> |
| // :: error: (bound) |
| public abstract int transform(List<@NonNull ? super T> function); |
| } |
| |
| class WildcardOverride2 implements ToOverride2<Object> { |
| // valid because the overriden method takes ONLY @NonNull args and this one takes @NonNull args |
| // as well |
| @Override |
| public int transform(List<Object> function) { |
| return 0; |
| } |
| } |