package org.checkerframework.checker.signature.qual;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import org.checkerframework.framework.qual.ImplicitFor;
import org.checkerframework.framework.qual.SubtypeOf;
/**
* Represents a {@link BinaryName binary name} as defined in the <a
* href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-13.html#jls-13.1">Java Language
* Specification, section 13.1</a>, but only for a non-array type.
*
* <p>Example: package.package2.Class$Inner Example: Class
*
* @checker_framework.manual #signature-checker Signature Checker
*/
@SubtypeOf({BinaryName.class, ClassGetName.class})
@ImplicitFor(
stringPatterns = "^[A-Za-z_][A-Za-z_0-9]*(\\.[A-Za-z_][A-Za-z_0-9]*)*(\\$[A-Za-z_0-9]+)*$"
)
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface BinaryNameForNonArray {}