34 lines
1.1 KiB
Kotlin
34 lines
1.1 KiB
Kotlin
package dev.tilera.kotlin
|
|
|
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
import org.jetbrains.kotlin.descriptors.Modality
|
|
import org.jetbrains.kotlin.extensions.DeclarationAttributeAltererExtension
|
|
import org.jetbrains.kotlin.lexer.KtTokens
|
|
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
|
|
|
class AllopenExtension: DeclarationAttributeAltererExtension {
|
|
|
|
override fun refineDeclarationModality(
|
|
modifierListOwner: KtModifierListOwner,
|
|
declaration: DeclarationDescriptor?,
|
|
containingDeclaration: DeclarationDescriptor?,
|
|
currentModality: Modality,
|
|
isImplicitModality: Boolean
|
|
): Modality? {
|
|
if (currentModality != Modality.FINAL) {
|
|
return null
|
|
}
|
|
|
|
if (declaration is ClassDescriptor || containingDeclaration != null) {
|
|
return if (!isImplicitModality && modifierListOwner.hasModifier(KtTokens.FINAL_KEYWORD))
|
|
Modality.FINAL
|
|
else
|
|
Modality.OPEN
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
}
|