package org.checkerframework.framework.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;

/**
 * Indicates that the annotated qualifier is the default qualifier in the qualifier hierarchy: it
 * applies if the programmer writes no explicit qualifier and no other default has been specified
 * for the location.
 *
 * <p>Other defaults can be specified for a checker via the {@link DefaultFor} meta-annotation,
 * which takes precedence over {@code DefaultQualifierInHierarchy}, or via {@link
 * org.checkerframework.framework.type.GenericAnnotatedTypeFactory#addCheckedCodeDefaults(org.checkerframework.framework.util.defaults.QualifierDefaults)}.
 *
 * <p>The {@link DefaultQualifier} annotation, which targets Java code elements, takes precedence
 * over {@code DefaultQualifierInHierarchy}.
 *
 * <p>Each type qualifier hierarchy may have at most one qualifier marked as {@code
 * DefaultQualifierInHierarchy}.
 *
 * @checker_framework.manual #effective-qualifier The effective qualifier on a type (defaults and
 *     inference)
 * @see org.checkerframework.framework.qual.DefaultQualifier
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface DefaultQualifierInHierarchy {}
