blob: d22af287aec11d5b08ec87be74e43cb7d9102604 [file] [log] [blame]
package org.checkerframework.framework.testchecker.defaulting;
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;
import org.checkerframework.framework.qual.DefaultFor;
import org.checkerframework.framework.qual.DefaultQualifierInHierarchy;
import org.checkerframework.framework.qual.SubtypeOf;
import org.checkerframework.framework.qual.TypeUseLocation;
public class LowerBoundQual {
@DefaultQualifierInHierarchy
@Documented
@Retention(RetentionPolicy.RUNTIME)
@SubtypeOf({})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public static @interface LbTop {}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@SubtypeOf(LbTop.class)
@DefaultFor(TypeUseLocation.IMPLICIT_LOWER_BOUND)
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public static @interface LbImplicit {}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@SubtypeOf(LbTop.class)
@DefaultFor(TypeUseLocation.EXPLICIT_LOWER_BOUND)
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public static @interface LbExplicit {}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@SubtypeOf({LbImplicit.class, LbExplicit.class})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public static @interface LbBottom {}
}