All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.checkerframework.framework.qual.IgnoreInWholeProgramInference Maven / Gradle / Ivy

There is a newer version: 3.0.0-alpha-3
Show newest version
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;

/**
 * This annotation can be used two ways:
 *
 * 

1. As a meta-annotation indicating that an annotation type prevents whole-program inference. * For example, if the definition of {@code @Inject} is meta-annotated with * {@code @IgnoreInWholeProgramInference}:
* {@code @IgnoreInWholeProgramInference}
* {@code @interface Inject {}}
* then no type qualifier will be inferred for any field annotated by {@code @Inject}. * *

This is appropriate for fields that are set reflectively, so there are no calls in client code * that type inference can learn from. Examples of qualifiers that should be meta-annotated with * {@code @IgnoreInWholeProgramInference} include {@code @Inject}, {@code @Singleton}, * and {@code @Option}. * *

2. As a field annotation indicating that no type qualifier will be inferred for the field it * annotates. * *

See * org.checkerframework.common.wholeprograminference.WholeProgramInferenceScenes#updateFromFieldAssignment * * @checker_framework.manual #whole-program-inference-ignores-some-code Whole-program inference * ignores some code */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD}) public @interface IgnoreInWholeProgramInference {}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy