diff --git a/compiler/fir/plugins/allopen-plugin/src/org/jetbrains/kotlin/fir/allopen/AllOpenStatusTransformer.kt b/compiler/fir/plugins/allopen-plugin/src/org/jetbrains/kotlin/fir/allopen/AllOpenStatusTransformer.kt index 5edc52f686f..d39a00e7170 100644 --- a/compiler/fir/plugins/allopen-plugin/src/org/jetbrains/kotlin/fir/allopen/AllOpenStatusTransformer.kt +++ b/compiler/fir/plugins/allopen-plugin/src/org/jetbrains/kotlin/fir/allopen/AllOpenStatusTransformer.kt @@ -9,12 +9,22 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus +import org.jetbrains.kotlin.fir.extensions.AnnotationFqn import org.jetbrains.kotlin.fir.extensions.FirStatusTransformerExtension import org.jetbrains.kotlin.fir.extensions.transform +import org.jetbrains.kotlin.name.FqName class AllOpenStatusTransformer(session: FirSession) : FirStatusTransformerExtension(session) { override fun transformStatus(declaration: FirDeclaration, status: FirDeclarationStatus): FirDeclarationStatus { if (status.modality != null) return status return status.transform(modality = Modality.OPEN) } + + override val mode: Mode + get() = Mode.ALL_IN_ANNOTATED_ELEMENT + + override val annotations: Set = setOf(FqName.fromSegments(listOf("allopen", "Open"))) + + override val metaAnnotations: Set + get() = emptySet() } \ No newline at end of file diff --git a/compiler/fir/plugins/allopen-plugin/testData/simple.kt b/compiler/fir/plugins/allopen-plugin/testData/simple.kt index 937bd90c2bc..24cd76b2dbb 100644 --- a/compiler/fir/plugins/allopen-plugin/testData/simple.kt +++ b/compiler/fir/plugins/allopen-plugin/testData/simple.kt @@ -1,9 +1,21 @@ +// FILE: annotations.kt + +package allopen + +annotation class Open + +// FILE: main.kt + +import allopen.Open + +@Open class A { fun foo() { } } +@Open class B : A() { override fun foo() { diff --git a/compiler/fir/plugins/allopen-plugin/testData/simple.txt b/compiler/fir/plugins/allopen-plugin/testData/simple.txt index d210cb2d98e..d5486510959 100644 --- a/compiler/fir/plugins/allopen-plugin/testData/simple.txt +++ b/compiler/fir/plugins/allopen-plugin/testData/simple.txt @@ -1,5 +1,12 @@ -FILE: simple.kt - public open class A : R|kotlin/Any| { +FILE: annotations.kt + public final annotation class Open : R|kotlin/Annotation| { + public constructor(): R|allopen/Open| { + super() + } + + } +FILE: main.kt + @R|allopen/Open|() public open class A : R|kotlin/Any| { public constructor(): R|A| { super() } @@ -8,7 +15,7 @@ FILE: simple.kt } } - public open class B : R|A| { + @R|allopen/Open|() public open class B : R|A| { public constructor(): R|B| { super() }