blob: 003e3cdd53e214c008231fbdedf1baf2954a7326 [file] [log] [blame]
package org.checkerframework.checker.interning.qual;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Class declaration to indicate the class does not override {@code equals(Object)}, and therefore
* {@code a.equals(b)} and {@code a == b} behave identically.
*
* <p>A class may be annotated @UsesObjectEquals if neither it, nor any of its supertypes or
* subtypes, overrides {@code equals}. Therefore, it cannot be written on {@code Object} itself. It
* is most commonly written on a direct subclass of {@code Object}.
*
* @see org.checkerframework.checker.interning.InterningChecker
* @checker_framework.manual #interning-checker Interning Checker
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface UsesObjectEquals {}