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()
|
+EnumClassConversion()
|
||||||
+ArrayInitializerConversion(context)
|
+ArrayInitializerConversion(context)
|
||||||
+TryStatementConversion(context)
|
+TryStatementConversion(context)
|
||||||
|
+DefaultArgumentsConversion(context)
|
||||||
+ConstructorConversion(context)
|
+ConstructorConversion(context)
|
||||||
+ImplicitInitializerConversion(context)
|
+ImplicitInitializerConversion(context)
|
||||||
+ParameterModificationInMethodCallsConversion(context)
|
+ParameterModificationInMethodCallsConversion(context)
|
||||||
+DefaultArgumentsConversion(context)
|
|
||||||
+PrintlnConversion(context)
|
+PrintlnConversion(context)
|
||||||
+BlockToRunConversion(context)
|
+BlockToRunConversion(context)
|
||||||
+JetbrainsNullableAnnotationsConverter(context)
|
+JetbrainsNullableAnnotationsConverter(context)
|
||||||
|
|||||||
@@ -703,6 +703,8 @@ class NewCodeBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) {
|
override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor) {
|
||||||
|
ktPrimaryConstructor.annotationList.accept(this)
|
||||||
|
printer.printWithNoIndent(" ")
|
||||||
renderModifiersList(ktPrimaryConstructor)
|
renderModifiersList(ktPrimaryConstructor)
|
||||||
printer.printWithNoIndent(" constructor ")
|
printer.printWithNoIndent(" constructor ")
|
||||||
if (ktPrimaryConstructor.parameters.isNotEmpty()) {
|
if (ktPrimaryConstructor.parameters.isNotEmpty()) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class ConstructorConversion(private val context: ConversionContext) : RecursiveA
|
|||||||
element.parameters,
|
element.parameters,
|
||||||
element.block,
|
element.block,
|
||||||
delegationCall,
|
delegationCall,
|
||||||
|
element.annotationList,
|
||||||
element.extraModifiers,
|
element.extraModifiers,
|
||||||
element.visibility,
|
element.visibility,
|
||||||
element.modality
|
element.modality
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.j2k.conversions
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ConversionContext
|
import org.jetbrains.kotlin.j2k.ConversionContext
|
||||||
|
import org.jetbrains.kotlin.j2k.jvmAnnotation
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldAccessExpressionImpl
|
import org.jetbrains.kotlin.j2k.tree.impl.JKFieldAccessExpressionImpl
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKUniverseMethodSymbol
|
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
|
// TODO: Filter by annotations, visibility, modality, modifiers like synchronized
|
||||||
|
if (calledMethod.visibility != method.visibility) continue@checkMethod
|
||||||
for (i in method.parameters.indices) {
|
for (i in method.parameters.indices) {
|
||||||
val parameter = method.parameters[i]
|
val parameter = method.parameters[i]
|
||||||
val targetParameter = calledMethod.parameters[i]
|
val targetParameter = calledMethod.parameters[i]
|
||||||
@@ -67,7 +68,11 @@ class DefaultArgumentsConversion(private val context: ConversionContext) : Recur
|
|||||||
|
|
||||||
parameter.initializer = remapParameterSymbol(defaultValue) as JKExpression
|
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
|
element.classBody.declarations -= method
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -20,6 +20,7 @@ class InsertDefaultPrimaryConstructorConversion(private val context: ConversionC
|
|||||||
JKNameIdentifierImpl(element.name.value),
|
JKNameIdentifierImpl(element.name.value),
|
||||||
emptyList(),
|
emptyList(),
|
||||||
JKStubExpressionImpl(),
|
JKStubExpressionImpl(),
|
||||||
|
JKAnnotationListImpl(),
|
||||||
emptyList(),
|
emptyList(),
|
||||||
Visibility.PUBLIC,
|
Visibility.PUBLIC,
|
||||||
Modality.FINAL
|
Modality.FINAL
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class PrimaryConstructorDetectConversion(private val context: ConversionContext)
|
|||||||
primaryConstructorCandidate.name,
|
primaryConstructorCandidate.name,
|
||||||
primaryConstructorCandidate.parameters,
|
primaryConstructorCandidate.parameters,
|
||||||
primaryConstructorCandidate.delegationCall,
|
primaryConstructorCandidate.delegationCall,
|
||||||
|
primaryConstructorCandidate.annotationList,
|
||||||
primaryConstructorCandidate.extraModifiers,
|
primaryConstructorCandidate.extraModifiers,
|
||||||
primaryConstructorCandidate.visibility,
|
primaryConstructorCandidate.visibility,
|
||||||
primaryConstructorCandidate.modality
|
primaryConstructorCandidate.modality
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ class JKKtConstructorImpl(
|
|||||||
parameters: List<JKParameter>,
|
parameters: List<JKParameter>,
|
||||||
block: JKBlock,
|
block: JKBlock,
|
||||||
delegationCall: JKExpression,
|
delegationCall: JKExpression,
|
||||||
|
annotationList: JKAnnotationList,
|
||||||
override var extraModifiers: List<ExtraModifier>,
|
override var extraModifiers: List<ExtraModifier>,
|
||||||
override var visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override var modality: Modality
|
override var modality: Modality
|
||||||
@@ -178,7 +179,7 @@ class JKKtConstructorImpl(
|
|||||||
override var block: JKBlock by child(block)
|
override var block: JKBlock by child(block)
|
||||||
override var delegationCall: JKExpression by child(delegationCall)
|
override var delegationCall: JKExpression by child(delegationCall)
|
||||||
override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl())
|
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)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtConstructor(this, data)
|
||||||
}
|
}
|
||||||
@@ -187,6 +188,7 @@ class JKKtPrimaryConstructorImpl(
|
|||||||
name: JKNameIdentifier,
|
name: JKNameIdentifier,
|
||||||
parameters: List<JKParameter>,
|
parameters: List<JKParameter>,
|
||||||
delegationCall: JKExpression,
|
delegationCall: JKExpression,
|
||||||
|
annotationList: JKAnnotationList,
|
||||||
override var extraModifiers: List<ExtraModifier>,
|
override var extraModifiers: List<ExtraModifier>,
|
||||||
override var visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override var modality: Modality
|
override var modality: Modality
|
||||||
@@ -198,7 +200,7 @@ class JKKtPrimaryConstructorImpl(
|
|||||||
override var block: JKBlock by child(JKBodyStub)
|
override var block: JKBlock by child(JKBodyStub)
|
||||||
override var delegationCall: JKExpression by child(delegationCall)
|
override var delegationCall: JKExpression by child(delegationCall)
|
||||||
override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl())
|
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)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtPrimaryConstructor(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user