blob: f9ef370b5914a634ebe647ea365045fc4b3f60d3 [file] [log] [blame]
package org.checkerframework.framework.qual;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* This annotation is for comments related to the Checker Framework.
*
* <p>Using {@code @CFComment} makes it easy to find Checker-Framework-related comments, and to copy
* those comments from one version of a codebase to another (using the Annotation File Utilities).
*
* <p>Here is an example:
*
* <pre><code>
* {@literal @}CFComment("interning: factory methods guarantee that all elements are interned")
* public class MyClass {
* {@literal @}CFComment({"nullness: non-null return type is more specific than in superclass",
* "signedness: comment related to Signedness type system"})
* public String myMethod() { ... }
* }
* </code></pre>
*
* <p>As a matter of style, programmers should use this annotation on the most deeply nested element
* to which the comment applies (e.g., local variable rather than method, and method rather than
* class).
*
* @checker_framework.manual #library-tips-dont-change-the-code Don't change the code
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
public @interface CFComment {
/**
* Comments about Checker Framework annotations. The text is not interpreted by the Checker
* Framework.
*
* <p>If you prefix each comment by the name of the type system, the comments are easier to
* understand and search for.
*/
String[] value();
}