Annotation Type IgnoreInWholeProgramInference


  • @Documented
    @Retention(RUNTIME)
    @Target({ANNOTATION_TYPE,FIELD})
    public @interface IgnoreInWholeProgramInference
    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 @Inject is meta-annotated with @IgnoreInWholeProgramInference:
    @IgnoreInWholeProgramInference
    @interface Inject {}
    then no type qualifier will be inferred for any field annotated by @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 @IgnoreInWholeProgramInference include @Inject, @Singleton, and @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

    See the Checker Framework Manual:
    Whole-program inference ignores some code