1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
import org.checkerframework.checker.interning.qual.Interned;
import org.checkerframework.checker.interning.qual.InternedDistinct;
public class Distinct {
class Foo {}
Foo f1;
Foo f2;
@Interned Foo i1;
@Interned Foo i2;
@InternedDistinct Foo d1;
@InternedDistinct Foo d2;
public void testEquals() {
// :: error: not.interned
if (f1 == f2) {}
// :: error: not.interned
if (f1 == i2) {}
if (f1 == d2) {}
// :: error: not.interned
if (i1 == f2) {}
if (i1 == i2) {}
if (i1 == d2) {}
if (d1 == f2) {}
if (d1 == i2) {}
if (d1 == d2) {}
}
public void testAssignment1() {
f1 = f2;
}
public void testAssignment2() {
f1 = i2;
}
public void testAssignment3() {
f1 = d2;
}
public void testAssignment4() {
// :: error: assignment.type.incompatible
i1 = f2;
}
public void testAssignment5() {
i1 = i2;
}
public void testAssignment6() {
i1 = d2;
}
public void testAssignment7() {
// :: error: assignment.type.incompatible
d1 = f2;
}
public void testAssignment8() {
// :: error: assignment.type.incompatible
d1 = i2;
}
public void testAssignment9() {
d1 = d2;
}
}
|