Skip to content

Commit ad9025a

Browse files
BlondeHexSpace Team
authored and
Space Team
committed
[k1/K2]: Mark @SubclassOptInRequired as an experimental
At the moment, SubclassOptInRequired is marked with the ExperimentalSubclassOptIn annotation. However, it does not work as expected due to a missing opt-in error. To use SubclassOptInRequired, an explicit opt-in is necessary because SubclassOptInRequired is an unstable feature now. ^KT-64739
1 parent 882dc18 commit ad9025a

30 files changed

+63
-5
lines changed

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/testData/builtIns/kotlin.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|j
601601

602602
}
603603

604-
@R|kotlin/annotation/Target|(allowedTargets = <implicitArrayOf>(R|kotlin/annotation/AnnotationTarget.CLASS|)) @R|kotlin/annotation/Retention|(value = R|kotlin/annotation/AnnotationRetention.BINARY|) @R|kotlin/SinceKotlin|(version = String(1.8)) public final annotation class ExperimentalSubclassOptIn : R|kotlin/Annotation| {
604+
@R|kotlin/annotation/Target|(allowedTargets = <implicitArrayOf>(R|kotlin/annotation/AnnotationTarget.CLASS|)) @R|kotlin/annotation/Retention|(value = R|kotlin/annotation/AnnotationRetention.BINARY|) @R|kotlin/SinceKotlin|(version = String(1.8)) @R|kotlin/RequiresOptIn|() public final annotation class ExperimentalSubclassOptIn : R|kotlin/Annotation| {
605605
public constructor(): R|kotlin/ExperimentalSubclassOptIn|
606606

607607
}

compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.fir.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
FILE: ClassIdDiagnosticRendering.kt
2+
@FILE:R|kotlin/OptIn|(markerClass = vararg(<getClass>(Q|kotlin/ExperimentalSubclassOptIn|)))
23
package a.b.c
34

45
@R|kotlin/RequiresOptIn|() public final annotation class Marker : R|kotlin/Annotation| {

compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// WITH_EXTENDED_CHECKERS
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
package a.b.c
45

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/testData/builtin-classes/default/kotlin.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E> {
347347
/*primary*/ public constructor ExperimentalStdlibApi()
348348
}
349349

350-
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
350+
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") @kotlin.RequiresOptIn public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
351351
/*primary*/ public constructor ExperimentalSubclassOptIn()
352352
}
353353

compiler/testData/builtin-classes/java6/kotlin.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, jav
362362
/*primary*/ public constructor ExperimentalStdlibApi()
363363
}
364364

365-
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
365+
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") @kotlin.RequiresOptIn public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
366366
/*primary*/ public constructor ExperimentalSubclassOptIn()
367367
}
368368

compiler/testData/builtin-classes/java8/kotlin.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, jav
364364
/*primary*/ public constructor ExperimentalStdlibApi()
365365
}
366366

367-
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
367+
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") @kotlin.RequiresOptIn public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
368368
/*primary*/ public constructor ExperimentalSubclassOptIn()
369369
}
370370

compiler/testData/builtin-classes/newMethods/kotlin.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, jav
362362
/*primary*/ public constructor ExperimentalStdlibApi()
363363
}
364364

365-
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
365+
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.SinceKotlin(version = "1.8") @kotlin.RequiresOptIn public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
366366
/*primary*/ public constructor ExperimentalSubclassOptIn()
367367
}
368368

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/CorrectApplicability.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// FIR_IDENTICAL
2+
3+
@RequiresOptIn
4+
annotation class ApiMarker
5+
6+
@<!OPT_IN_USAGE_ERROR!>SubclassOptInRequired<!>(ApiMarker::class)
7+
open class OpenKlass

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/IncorrectApplicability.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/InheritingByLocalClassifiers.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/InheritingDifferentOptInLevels.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/InnerAndNestedClasses.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class Api

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/InnerClasses.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class Boom

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/NestedClasses.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class Boom

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/NotApiMarkerAsArgument.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
annotation class DummyAnnotation
45

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/Typealias.fir.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:OptIn(ExperimentalSubclassOptIn::class)
2+
13
@RequiresOptIn
24
annotation class ApiMarker
35

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/Typealias.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:OptIn(ExperimentalSubclassOptIn::class)
2+
13
@RequiresOptIn
24
annotation class ApiMarker
35

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/UsageOptInIsNotImplied.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/WithAbstractClasses.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/WithInheritanceByDelegation.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/WithInterfaces.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/testData/diagnostics/testsWithStdLib/annotations/subclassOptInRequired/WithOpenClasses.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// FIR_IDENTICAL
2+
@file:OptIn(ExperimentalSubclassOptIn::class)
23

34
@RequiresOptIn
45
annotation class ApiMarker

compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libraries/stdlib/api/js/kotlin.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1599,6 +1599,7 @@ public final annotation class ExperimentalStdlibApi : kotlin.Annotation {
15991599
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS})
16001600
@kotlin.annotation.Retention(value = AnnotationRetention.BINARY)
16011601
@kotlin.SinceKotlin(version = "1.8")
1602+
@kotlin.RequiresOptIn
16021603
public final annotation class ExperimentalSubclassOptIn : kotlin.Annotation {
16031604
public constructor ExperimentalSubclassOptIn()
16041605
}

libraries/stdlib/src/kotlin/annotations/OptIn.kt

+1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public annotation class OptIn(
144144
@Target(CLASS)
145145
@Retention(BINARY)
146146
@SinceKotlin("1.8")
147+
@RequiresOptIn
147148
public annotation class ExperimentalSubclassOptIn
148149

149150
/**

0 commit comments

Comments
 (0)