package checkers.javari.quals; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import checkers.javari.JavariChecker; import checkers.quals.SubtypeOf; import checkers.quals.TypeQualifier; import static java.lang.annotation.ElementType.*; /** * Indicates that the annotated type behaves as the most restrictive of * {@link ReadOnly} and {@link Mutable}: only {@link Mutable} can be assigned * to it, and it can only be assigned to {@link ReadOnly}. * * <p> * * This annotation is part of the Javari language. * * @see JavariChecker * @checker.framework.manual #javari-checker Javari Checker */ @Documented @Retention(RetentionPolicy.RUNTIME) //@Target({FIELD, LOCAL_VARIABLE, METHOD, PARAMETER, TYPE}) @TypeQualifier @SubtypeOf(ReadOnly.class) public @interface QReadOnly { }