org.checkerframework.dataflow.qual.Impure Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of checker-qual-android Show documentation
Show all versions of checker-qual-android Show documentation
Checker Qual Android is the set of annotations (qualifiers) and supporting classes
used by the Checker Framework to type check Java source code.
The checker-qual-android artifact is identical to the checker-qual
artifact, except that in checker-qual-android annotations have classfile
retention. The default Android Gradle plugin retains types annotated with
runtime annotations in the main dex, but strips out class-retention
annotations.
Please
see artifact:
org.checkerframework:checker
The newest version!
package org.checkerframework.dataflow.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;
/**
* {@code Impure} is a method annotation that means the method might have side effects and/or might
* be nondeterministic. Conceptually, it completes the "lattice" of purity annotations by serving as
* a top element. That is, any {@code @}{@link Pure} method can be treated as {@code @}{@link
* SideEffectFree} or {@code @}{@link Deterministic}, and any {@code @}{@link SideEffectFree} or
* {@code @}{@link Deterministic} method can be treated as {@code @Impure}.
*
* This annotation should not be written by a programmer, because leaving a method unannotated is
* equivalent to writing this annotation.
*
*
The purpose of this annotation is for use by tools. A tool may distinguish between unannotated
* methods (that the tool has not yet examined) and {@code @Impure} methods (that the tool has
* determined to be neither {@code @SideEffectFree} nor {@code @Deterministic}).
*
* @checker_framework.manual #type-refinement-purity Side effects, determinism, purity, and
* flow-sensitive analysis
*/
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
public @interface Impure {}