package org.checkerframework.common.util.report.qual; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Report all calls of a method that has this annotation, including calls of methods that override * this method. Note that calls through a supertype, where the method is not annotated, cannot be * reported. * * <p>For example, assume three classes A, B, and C, that each implement/override a method m and A * <: B <: C. Assume that B.m is annotated as ReportCall. Calls of A.m and B.m will then be * reported, but calls of C.m will not be reported, even though the C reference might point to a B * object. Therefore, add the ReportCall annotation high enough in the subtype hierarchy. */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface ReportCall {}