1 package jdk.incubator.code.internal;
2
3 import jdk.incubator.code.Op;
4
5 import java.lang.annotation.ElementType;
6 import java.lang.annotation.Retention;
7 import java.lang.annotation.RetentionPolicy;
8 import java.lang.annotation.Target;
9
10 /**
11 * An operation declaration annotation.
12 * <p>
13 * This annotation may be declared on a concrete class implementing an {@link Op operation} whose name is a constant
14 * that can be declared as this attribute's value.
15 * <p>
16 * Tooling can process declarations of this annotation to build a factory for constructing operations from their name.
17 */
18 @Retention(RetentionPolicy.RUNTIME)
19 @Target(ElementType.TYPE)
20 public @interface OpDeclaration {
21 /**
22 * {@return the operation name}
23 */
24 String value();
25 }