New J2K: Add JvmOverloads annotation when merging methods
This commit is contained in:
committed by
Ilya Kirillov
parent
e232d70b52
commit
6e1adf9b6f
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user