blob: c8c0756f1099491968b53a45dc914d8f837d61f8 [file] [log] [blame]
package org.checkerframework.checker.units.qual;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Specify the class that knows how to handle the meta-annotated unit when put in relation (plus,
* multiply, ...) with another unit. That class is a subtype of interface {@link
* org.checkerframework.checker.units.UnitsRelations}.
*
* @see org.checkerframework.checker.units.UnitsRelations
* @checker_framework.manual #units-checker Units Checker
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface UnitsRelations {
/**
* Returns the subclass of {@link org.checkerframework.checker.units.UnitsRelations} to use.
*
* @return the subclass of {@link org.checkerframework.checker.units.UnitsRelations} to use
*/
// The more precise type is Class<? extends org.checkerframework.checker.units.UnitsRelations>,
// but org.checkerframework.checker.units.UnitsRelations is not in checker-qual.jar, nor can
// it be since it uses AnnotatedTypeMirrors. So this declaration uses a less precise type, and
// UnitsAnnotatedTypeFactory checks that the argument implements
// org.checkerframework.checker.units.UnitsRelations.
Class<?> value();
}