New J2K: Add conversion of some java modifiers to kotlin annotations
This commit is contained in:
committed by
Ilya Kirillov
parent
0e6e0e6df1
commit
2633834741
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user