| 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 {} |