[FIR-PLUGIN] Fix allopen plugin due to previous commits

This commit is contained in:
Dmitriy Novozhilov
2020-05-07 12:09:38 +03:00
parent ab831179e2
commit 8ecd3d8efe
3 changed files with 32 additions and 3 deletions
@@ -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<AnnotationFqn> = setOf(FqName.fromSegments(listOf("allopen", "Open")))
override val metaAnnotations: Set<AnnotationFqn>
get() = emptySet()
}
+12
View File
@@ -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() {
+10 -3
View File
@@ -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<R|kotlin/Any|>()
}
}
FILE: main.kt
@R|allopen/Open|() public open class A : R|kotlin/Any| {
public constructor(): R|A| {
super<R|kotlin/Any|>()
}
@@ -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<R|A|>()
}