blob: f99285559844d51f1c0bf3799bcf725097fe2253 [file] [log] [blame]
import java.lang.ref.WeakReference;
public class Ternary<F> {
void m1(boolean b) {
String s = b ? new String("foo") : null;
}
void m2(boolean b) {
String s = b ? null : new String("foo");
}
@SuppressWarnings("nullness") // Don't want to depend on @Nullable
String m3(boolean b) {
return b ? new String("foo") : null;
}
void m4(boolean b) {
String[] s = b ? new String[] {""} : null;
}
void m5(boolean b) {
Object o = new Object();
String s = b ? (String) o : null;
}
void m6(boolean b) {
String p = "x*(((";
String s = b ? p : null;
}
class Generic<T extends Object> {
void cond(boolean b, T p1, T p2) {
p1 = b ? p1 : p2;
}
}
void array(boolean b) {
String[] s = b ? new String[] {""} : null;
}
void generic(boolean b, Generic<String> p) {
Generic<String> s = b ? p : null;
}
void primarray(boolean b) {
long[] result = b ? null : new long[10];
}
void vars() {
// String and Integer generate an intersection type.
String c = null;
Integer m = null;
Object s = (m != null) ? m : c;
}
void vars2() {
// String and Integer generate an intersection type.
String c = null;
Integer m = null;
Object s = (m != null) ? m : c;
}
public void test(MyWeakRef<? extends F> existingRef) {
@SuppressWarnings("nulltest.redundant")
F existing = existingRef == null ? null : existingRef.get();
}
private static final class MyWeakRef<L> extends WeakReference<L> {
public MyWeakRef(L referent) {
super(referent);
}
}
}