import testlib.wholeprograminference.qual.*;
public class MethodReturnTest {
static int getSibling1NotAnnotated() {
return (@Sibling1 int) 0;
}
static @Sibling1 int getSibling1() {
//:: error: (return.type.incompatible)
return getSibling1NotAnnotated();
}
public static boolean bool = false;
public static int lubTest() {
if (bool) {
return (@Sibling1 int) 0;
} else {
return (@Sibling2 int) 0;
}
}
public static @Parent int getParent() {
int x = lubTest();
//:: error: (return.type.incompatible)
return x;
}
class InnerClass {
int field = 0;
int getParent2() {
field = getParent();
return getParent();
}
void receivesSibling1(int i) {
//:: error: (argument.type.incompatible)
expectsSibling1(i);
}
void expectsSibling1(@Sibling1 int i) {}
void test() {
@Sibling1 int sib = (@Sibling1 int) 0;
receivesSibling1(sib);
}
}
}