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
|
import testlib.wholeprograminference.qual.*;
public class PublicFieldTest {
public static int field1; // parent
public static int field2; // sib2
public PublicFieldTest() {
field1 = getSibling1();
}
void testPublicInference() {
// :: error: (argument.type.incompatible)
expectsSibling2(field2);
// :: error: (argument.type.incompatible)
expectsParent(field1);
// :: error: (argument.type.incompatible)
expectsParent(field2);
}
void expectsBottom(@WholeProgramInferenceBottom int t) {}
void expectsSibling1(@Sibling1 int t) {}
void expectsSibling2(@Sibling2 int t) {}
void expectsTop(@Top int t) {}
void expectsParent(@Parent int t) {}
@Sibling1 int getSibling1() {
return (@Sibling1 int) 0;
}
}
class AnotherClass {
int innerField;
public AnotherClass() {
PublicFieldTest.field1 = getSibling2();
PublicFieldTest.field2 = getSibling2();
innerField = getSibling2();
}
void innerFieldTest() {
// :: error: (argument.type.incompatible)
expectsSibling2(innerField);
}
@WholeProgramInferenceBottom int getBottom() {
return (@WholeProgramInferenceBottom int) 0;
}
@Top int getTop() {
return (@Top int) 0;
}
@Sibling2 int getSibling2() {
return (@Sibling2 int) 0;
}
void expectsSibling2(@Sibling2 int t) {}
}
|