package org.jmlspecs.openjml.jmldoc;
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;
/**
* A Java annotation used to indicate the subjective quality of a JML
* specification. These annotations are included in generated documentation and
* are stored in classfiles.
*
* @author Joseph Kiniry
*/
@Retention(RetentionPolicy.CLASS)
@Documented
public @interface Quality {
/**
* Specifications range in quality from POOR to EXCELLENT. If a specification
* has not yet been written at all, then it is MISSING.
*
* @author Joseph Kiniry
*/
public enum SpecQuality {
// A specification does not exist and has never been written.
MISSING,
// The specification exists, but is...
/** ... very poor. */
POOR,
/** ... just ok. */
OK,
/** ... quite good and usable in several tools. */
GOOD,
/** ... very good and essentially complete. */
EXCELLENT
}
SpecQuality quality() default SpecQuality.MISSING;
String author() default "";
String changed() default "";
}