diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaModifiersConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaModifiersConversion.kt index d00420decc5..64a0260c609 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaModifiersConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaModifiersConversion.kt @@ -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) } } \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/expressions.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/expressions.kt index b5c01cb1dd0..f157d86dc53 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/expressions.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/expressions.kt @@ -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, symbolProvider: JKSymbolProvider) = JKAnnotationImpl(