New J2K: Add JvmOverloads annotation when merging methods

This commit is contained in:
Ilya Kirillov
2018-12-24 20:29:28 +03:00
committed by Ilya Kirillov
parent e232d70b52
commit 6e1adf9b6f
7 changed files with 17 additions and 5 deletions
@@ -38,10 +38,10 @@ object ConversionsRunner {
+EnumClassConversion()
+ArrayInitializerConversion(context)
+TryStatementConversion(context)
+DefaultArgumentsConversion(context)
+ConstructorConversion(context)
+ImplicitInitializerConversion(context)
+ParameterModificationInMethodCallsConversion(context)
+DefaultArgumentsConversion(context)
+PrintlnConversion(context)
+BlockToRunConversion(context)
+JetbrainsNullableAnnotationsConverter(context)
@@ -703,6 +703,8 @@ class NewCodeBuilder {
}
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) {
ktPrimaryConstructor.annotationList.accept(this)
printer.printWithNoIndent(" ")
renderModifiersList(ktPrimaryConstructor)
printer.printWithNoIndent(" constructor ")
if (ktPrimaryConstructor.parameters.isNotEmpty()) {
@@ -23,6 +23,7 @@ class ConstructorConversion(private val context: ConversionContext) : RecursiveA
element.parameters,
element.block,
delegationCall,
element.annotationList,
element.extraModifiers,
element.visibility,
element.modality
@@ -6,6 +6,7 @@
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.impl.JKFieldAccessExpressionImpl
import org.jetbrains.kotlin.j2k.tree.impl.JKUniverseMethodSymbol
@@ -35,7 +36,7 @@ class DefaultArgumentsConversion(private val context: ConversionContext) : Recur
// TODO: Filter by annotations, visibility, modality, modifiers like synchronized
if (calledMethod.visibility != method.visibility) continue@checkMethod
for (i in method.parameters.indices) {
val parameter = method.parameters[i]
val targetParameter = calledMethod.parameters[i]
@@ -67,7 +68,11 @@ class DefaultArgumentsConversion(private val context: ConversionContext) : Recur
parameter.initializer = remapParameterSymbol(defaultValue) as JKExpression
}
if (calledMethod.visibility == Visibility.PUBLIC &&
!calledMethod.annotationList.annotations.any { it.classSymbol.fqName == "kotlin.annotation.AnnotationTarget.JvmOverloads" }
) {
calledMethod.annotationList.annotations += jvmAnnotation("JvmOverloads", context.symbolProvider)
}
element.classBody.declarations -= method
}
@@ -20,6 +20,7 @@ class InsertDefaultPrimaryConstructorConversion(private val context: ConversionC
JKNameIdentifierImpl(element.name.value),
emptyList(),
JKStubExpressionImpl(),
JKAnnotationListImpl(),
emptyList(),
Visibility.PUBLIC,
Modality.FINAL
@@ -49,6 +49,7 @@ class PrimaryConstructorDetectConversion(private val context: ConversionContext)
primaryConstructorCandidate.name,
primaryConstructorCandidate.parameters,
primaryConstructorCandidate.delegationCall,
primaryConstructorCandidate.annotationList,
primaryConstructorCandidate.extraModifiers,
primaryConstructorCandidate.visibility,
primaryConstructorCandidate.modality
@@ -167,6 +167,7 @@ class JKKtConstructorImpl(
parameters: List<JKParameter>,
block: JKBlock,
delegationCall: JKExpression,
annotationList: JKAnnotationList,
override var extraModifiers: List<ExtraModifier>,
override var visibility: Visibility,
override var modality: Modality
@@ -178,7 +179,7 @@ class JKKtConstructorImpl(
override var block: JKBlock by child(block)
override var delegationCall: JKExpression by child(delegationCall)
override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl())
override var annotationList: JKAnnotationList by child(JKAnnotationListImpl())
override var annotationList: JKAnnotationList by child(annotationList)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtConstructor(this, data)
}
@@ -187,6 +188,7 @@ class JKKtPrimaryConstructorImpl(
name: JKNameIdentifier,
parameters: List<JKParameter>,
delegationCall: JKExpression,
annotationList: JKAnnotationList,
override var extraModifiers: List<ExtraModifier>,
override var visibility: Visibility,
override var modality: Modality
@@ -198,7 +200,7 @@ class JKKtPrimaryConstructorImpl(
override var block: JKBlock by child(JKBodyStub)
override var delegationCall: JKExpression by child(delegationCall)
override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl())
override var annotationList: JKAnnotationList by child(JKAnnotationListImpl())
override var annotationList: JKAnnotationList by child(annotationList)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtPrimaryConstructor(this, data)
}