Annotation Interface InvisibleQualifier


@Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) public @interface InvisibleQualifier
A meta-annotation indicating that an annotation is a type qualifier that should not be shown in output. @InvisibleQualifier should only be written on a qualifier that is also meta-annotated with @DefaultQualifierInHierarchy.

By default, the Checker Framework's error messages show every annotation, including inferred and default ones (which far outnumber the ones explicitly written by the programmer). Being explicit helps users understand the effective annotations, which the Checker Framework operates upon. However, the output can be verbose, and it can show annotations that a user should not write. For example, a Format String Checker warning message might contain "@UnknownCompilerMessageKey Map<@CompilerMessageKey String, @UnknownCompilerMessageKey String>".

When an annotation is meta-annotated with @InvisibleQualifier, then the Checker Framework does not print the given qualifier when printing types. For the above example, the Format String Checker prints "Map<@CompilerMessageKey String, String>".

If a user runs the Checker Framework with command-line argument -AprintAllQualifiers, then invisible qualifiers are output.