package org.checkerframework.checker.formatter.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;
import org.checkerframework.framework.qual.SubtypeOf;

/**
 * This annotation, attached to a {@link java.lang.String String} type, indicates that the string is
 * not a legal format string. Passing the string to {@link java.util.Formatter#format(String,
 * Object...) Formatter.format} or similar methods will lead to the exception message indicated in
 * the annotation's value.
 *
 * @checker_framework.manual #formatter-checker Format String Checker
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@SubtypeOf(UnknownFormat.class)
public @interface InvalidFormat {
  /**
   * Using a value of the annotated type as the first argument to {@link
   * java.util.Formatter#format(String, Object...) Formatter.format} or similar methods will lead to
   * this exception message.
   */
  String value();
}
