New J2K: Add conversion of some java modifiers to kotlin annotations

This commit is contained in:
Ilya Kirillov
2018-12-05 15:26:14 +03:00
committed by Ilya Kirillov
parent 0e6e0e6df1
commit 2633834741
2 changed files with 25 additions and 1 deletions
@@ -5,15 +5,35 @@
package org.jetbrains.kotlin.j2k.conversions
import org.jetbrains.kotlin.j2k.ConversionContext
import org.jetbrains.kotlin.j2k.jvmAnnotation
import org.jetbrains.kotlin.j2k.tree.*
class JavaModifiersConversion: RecursiveApplicableConversionBase() {
class JavaModifiersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
override fun applyToElement(element: JKTreeElement): JKTreeElement {
if (element is JKVisibilityOwner) {
if (element.visibility == Visibility.PACKAGE_PRIVATE) {
element.visibility = Visibility.INTERNAL
}
}
if (element is JKExtraModifiersOwner && element is JKAnnotationListOwner) {
if (ExtraModifier.VOLATILE in element.extraModifiers) {
element.extraModifiers -= ExtraModifier.VOLATILE
element.annotationList.annotations += jvmAnnotation("Volatile", context.symbolProvider)
}
if (ExtraModifier.TRANSIENT in element.extraModifiers) {
element.extraModifiers -= ExtraModifier.TRANSIENT
element.annotationList.annotations += jvmAnnotation("Transient", context.symbolProvider)
}
if (ExtraModifier.STRICTFP in element.extraModifiers) {
element.extraModifiers -= ExtraModifier.STRICTFP
element.annotationList.annotations += jvmAnnotation("Strictfp", context.symbolProvider)
}
if (ExtraModifier.SYNCHRONIZED in element.extraModifiers) {
element.extraModifiers -= ExtraModifier.SYNCHRONIZED
element.annotationList.annotations += jvmAnnotation("Synchronized", context.symbolProvider)
}
}
return recurse(element)
}
}
@@ -206,6 +206,10 @@ fun kotlinAssert(assertion: JKExpression, message: JKExpression?, symbolProvider
),
JKExpressionListImpl(listOfNotNull(assertion, message))
)
fun jvmAnnotation(name: String, symbolProvider: JKSymbolProvider) =
JKAnnotationImpl(
symbolProvider.provideByFqName("kotlin.annotation.AnnotationTarget.$name")
)
fun throwAnnotation(throws: List<JKType>, symbolProvider: JKSymbolProvider) =
JKAnnotationImpl(