Protect SubclassOptInRequired with opt-in marker

This commit is contained in:
Mikhail Glukhikh
2022-08-05 19:50:14 +02:00
committed by teamcity
parent 76aaecbdf0
commit 66e710704a
4 changed files with 30 additions and 3 deletions
+8
View File
@@ -1649,6 +1649,13 @@ public final annotation class ExperimentalStdlibApi : kotlin.Annotation {
/*∆*/ public constructor ExperimentalStdlibApi() /*∆*/ public constructor ExperimentalStdlibApi()
/*∆*/ } /*∆*/ }
/*∆*/ /*∆*/
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS})
@kotlin.annotation.Retention(value = AnnotationRetention.BINARY)
@kotlin.SinceKotlin(version = "1.8")
public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
public constructor ExperimentalSubclassOptIn()
}
@kotlin.RequiresOptIn(level = Level.WARNING) @kotlin.RequiresOptIn(level = Level.WARNING)
@kotlin.annotation.MustBeDocumented @kotlin.annotation.MustBeDocumented
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS})
@@ -2758,6 +2765,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS})
@kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY)
@kotlin.SinceKotlin(version = "1.8") @kotlin.SinceKotlin(version = "1.8")
@kotlin.ExperimentalSubclassOptIn
public final annotation class SubclassOptInRequired : kotlin.Annotation { public final annotation class SubclassOptInRequired : kotlin.Annotation {
public constructor SubclassOptInRequired(markerClass: kotlin.reflect.KClass<out kotlin.Annotation>) public constructor SubclassOptInRequired(markerClass: kotlin.reflect.KClass<out kotlin.Annotation>)
+8
View File
@@ -1485,6 +1485,13 @@ public final annotation class ExperimentalStdlibApi : kotlin.Annotation {
public constructor ExperimentalStdlibApi() public constructor ExperimentalStdlibApi()
} }
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS})
@kotlin.annotation.Retention(value = AnnotationRetention.BINARY)
@kotlin.SinceKotlin(version = "1.8")
public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
public constructor ExperimentalSubclassOptIn()
}
@kotlin.RequiresOptIn(level = Level.WARNING) @kotlin.RequiresOptIn(level = Level.WARNING)
@kotlin.annotation.MustBeDocumented @kotlin.annotation.MustBeDocumented
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS})
@@ -2392,6 +2399,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS})
@kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY)
@kotlin.SinceKotlin(version = "1.8") @kotlin.SinceKotlin(version = "1.8")
@kotlin.ExperimentalSubclassOptIn
public final annotation class SubclassOptInRequired : kotlin.Annotation { public final annotation class SubclassOptInRequired : kotlin.Annotation {
public constructor SubclassOptInRequired(markerClass: kotlin.reflect.KClass<out kotlin.Annotation>) public constructor SubclassOptInRequired(markerClass: kotlin.reflect.KClass<out kotlin.Annotation>)
@@ -5,8 +5,7 @@
package kotlin package kotlin
import kotlin.annotation.AnnotationRetention.BINARY import kotlin.annotation.AnnotationRetention.*
import kotlin.annotation.AnnotationRetention.SOURCE
import kotlin.annotation.AnnotationTarget.* import kotlin.annotation.AnnotationTarget.*
import kotlin.internal.RequireKotlin import kotlin.internal.RequireKotlin
import kotlin.internal.RequireKotlinVersionKind import kotlin.internal.RequireKotlinVersionKind
@@ -57,7 +56,15 @@ public annotation class OptIn(
) )
/** /**
* Forbids creation of subclasses/sub-interfaces from the annotated class/interface without explicit OptIn. * Opt-in marker annotation which allows to use [SubclassOptInRequired].
*/
@Target(CLASS)
@Retention(BINARY)
@SinceKotlin("1.8")
public annotation class ExperimentalSubclassOptIn
/**
* Forbids creation of subclasses/sub-interfaces from the annotated class/interface without explicit [OptIn].
* *
* This annotation is devoted to specific case when we want subclassing to be experimental. * This annotation is devoted to specific case when we want subclassing to be experimental.
* In this case we annotated the base class or interface with [SubclassOptInRequired]. * In this case we annotated the base class or interface with [SubclassOptInRequired].
@@ -76,6 +83,7 @@ public annotation class OptIn(
@Target(CLASS) @Target(CLASS)
@Retention(BINARY) @Retention(BINARY)
@SinceKotlin("1.8") @SinceKotlin("1.8")
@ExperimentalSubclassOptIn
public annotation class SubclassOptInRequired( public annotation class SubclassOptInRequired(
val markerClass: KClass<out Annotation> val markerClass: KClass<out Annotation>
) )
@@ -66,6 +66,9 @@ public abstract interface annotation class kotlin/ExperimentalMultiplatform : ja
public abstract interface annotation class kotlin/ExperimentalStdlibApi : java/lang/annotation/Annotation { public abstract interface annotation class kotlin/ExperimentalStdlibApi : java/lang/annotation/Annotation {
} }
public abstract interface annotation class kotlin/ExperimentalSubclassOptIn : java/lang/annotation/Annotation {
}
public abstract interface annotation class kotlin/ExperimentalUnsignedTypes : java/lang/annotation/Annotation { public abstract interface annotation class kotlin/ExperimentalUnsignedTypes : java/lang/annotation/Annotation {
} }