package safeds.lang

/**
 * The declaration should no longer be used.
 *
 * @param alternative What to use instead.
 * @param reason Why the declaration was deprecated.
 * @param sinceVersion When the declaration was deprecated.
 * @param removalVersion When the declaration will be removed.
 */
@Targets([
    AnnotationTarget.Annotation,
    AnnotationTarget.Attribute,
    AnnotationTarget.Class,
    AnnotationTarget.Enum,
    AnnotationTarget.EnumVariant,
    AnnotationTarget.Function,
    AnnotationTarget.Parameter,
    AnnotationTarget.Result,
    AnnotationTarget.Segment,
])
annotation Deprecated(
    alternative: String? = null,
    reason: String? = null,
    sinceVersion: String? = null,
    removalVersion: String? = null,
)

/**
 * The declaration might change without a major version bump.
 */
@Targets([
    AnnotationTarget.Annotation,
    AnnotationTarget.Attribute,
    AnnotationTarget.Class,
    AnnotationTarget.Enum,
    AnnotationTarget.EnumVariant,
    AnnotationTarget.Function,
    AnnotationTarget.Parameter,
    AnnotationTarget.Result,
    AnnotationTarget.Segment,
])
annotation Experimental
