blob: eab7218e4f08746cb6bb998785853934e011323f [file] [log] [blame]
package assuper;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.List;
import org.checkerframework.dataflow.qual.Pure;
// This class has code that used to cause AsSuper to crash
@SuppressWarnings("all")
public class AsSuperCrashes {
// TODO: Value Checker crashes on this
/* void primitiveNarrowing() {
Byte b = 100;
Character c = 100;
Short s = 100;
byte bb = 100;
char cc = 100;
short ss = 100;
}
*/
// test anonymous classes
private void testAnonymous() {
new Object() {
public boolean equals(Object o) {
return true;
}
}.equals(null);
Date d = new Date() {};
}
private void apply(Field field) {
Class<?> type = field.getType();
type.getSuperclass().getName().equals("java.lang.Enum");
}
void arrayAsMethodReceiver(Object[] array) {
array.clone();
}
<T> T lowerBoundedWildcard(java.util.List<? super Iterable<?>> l) {
lowerBoundedWildcard(new java.util.ArrayList<Object>());
throw new Error();
}
// Test super() and this()
class Inner {
public Inner() {
super();
}
public Inner(int i) {
this();
}
}
public static <T extends Interface<? super T>> void foo2(T a, T b) {
a.compareTo(b);
}
public static <T extends Object & Interface<? super T>> void foo(T a, T b) {
a.compareTo(b);
}
interface Interface<F> {
void compareTo(F t);
}
public void m1(Class<?> c) {
Class<? extends I2> x = c.asSubclass(I2.class);
new WeakReference<Class<? extends I2>>(c.asSubclass(I2.class));
}
interface I2 {}
@Pure
void bar() {
bar();
}
public static <Z> void copy(List<? super Z> dest, List<? extends Z> src) {
dest.set(0, src.get(0));
}
public static <F, E extends F> void copy2(List<? super F> dest, List<E> src) {
dest.set(0, src.get(0));
}
}