159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage checkers.quals; 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.lang.annotation.Documented; 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport static java.lang.annotation.ElementType.*; 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.lang.annotation.Retention; 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.lang.annotation.RetentionPolicy; 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.lang.annotation.Target; 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/** 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Applied to a declaration of a package, type, method, variable, etc., 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * specifies that the given annotation should be the default. The default is 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * applied to all types within the declaration for which no other 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * annotation is explicitly written. 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If multiple DefaultQualifier annotations are in scope, the innermost one 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * takes precedence. 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * DefaultQualifier takes precedence over {@link DefaultQualifierInHierarchy}. 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * <p> 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If you wish to write multiple @DefaultQualifier annotations (for 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * unrelated type systems, or with different {@code locations} fields) at 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the same location, use {@link DefaultQualifiers}. 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @see DefaultLocation 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta@Documented 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta@Retention(RetentionPolicy.RUNTIME) 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta@Target({CONSTRUCTOR, METHOD, FIELD, LOCAL_VARIABLE, PARAMETER, TYPE}) 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic @interface DefaultQualifier { 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * The name of the default annotation. It may be a short name like 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * "NonNull", if an appropriate import statement exists. Otherwise, it 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * should be fully-qualified, like "checkers.nullness.quals.NonNull". 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * <p> 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * To prevent affecting other type systems, always specify an annotation 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * in your own type hierarchy. (For example, do not set 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * "checkers.quals.Unqualified" as the default.) 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta String value(); 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** @return the locations to which the annotation should be applied */ 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta DefaultLocation[] locations() default {DefaultLocation.ALL}; 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 45