import org.checkerframework.common.util.report.qual.*;
class CallOverrides {
class A {
void m() {}
}
class B extends A {
@ReportCall
void m() {}
}
class C extends B {}
void test() {
C c = new C();
//:: error: (methodcall)
c.m();
B b = c;
//:: error: (methodcall)
b.m();
A a = c;
// This call is not reported, because we statically
// don't know that one of the subtypes has the ReportCall
// annotation.
a.m();
}
}