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
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.j2k.ConversionContext
|
||||||
|
import org.jetbrains.kotlin.j2k.jvmAnnotation
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
|
|
||||||
class JavaModifiersConversion: RecursiveApplicableConversionBase() {
|
class JavaModifiersConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||||
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
if (element is JKVisibilityOwner) {
|
if (element is JKVisibilityOwner) {
|
||||||
if (element.visibility == Visibility.PACKAGE_PRIVATE) {
|
if (element.visibility == Visibility.PACKAGE_PRIVATE) {
|
||||||
element.visibility = Visibility.INTERNAL
|
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)
|
return recurse(element)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,6 +206,10 @@ fun kotlinAssert(assertion: JKExpression, message: JKExpression?, symbolProvider
|
|||||||
),
|
),
|
||||||
JKExpressionListImpl(listOfNotNull(assertion, message))
|
JKExpressionListImpl(listOfNotNull(assertion, message))
|
||||||
)
|
)
|
||||||
|
fun jvmAnnotation(name: String, symbolProvider: JKSymbolProvider) =
|
||||||
|
JKAnnotationImpl(
|
||||||
|
symbolProvider.provideByFqName("kotlin.annotation.AnnotationTarget.$name")
|
||||||
|
)
|
||||||
|
|
||||||
fun throwAnnotation(throws: List<JKType>, symbolProvider: JKSymbolProvider) =
|
fun throwAnnotation(throws: List<JKType>, symbolProvider: JKSymbolProvider) =
|
||||||
JKAnnotationImpl(
|
JKAnnotationImpl(
|
||||||
|
|||||||
Reference in New Issue
Block a user