diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 4d957fe7f1c..aa5f0beaf8d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -290,7 +290,8 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { }, JKNameIdentifierImpl(name), parameterList.parameters.map { it.toJK() }, - body?.toJK() ?: JKBodyStub + body?.toJK() ?: JKBodyStub, + typeParameterList?.toJK() ?: JKTypeParameterListImpl() ).also { it.psi = this symbolProvider.provideUniverseSymbol(this, it) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 663d06dcf73..bfc741c32f1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -266,12 +266,15 @@ class NewCodeBuilder { override fun visitKtFunction(ktFunction: JKKtFunction) { printer.printIndent() ktFunction.modifierList.accept(this) - printer.printWithNoIndent(" fun ", ktFunction.name.value, "(") + printer.printWithNoIndent(" fun ") + ktFunction.typeParameterList.accept(this) + printer.printWithNoIndent(ktFunction.name.value, "(") renderList(ktFunction.parameters) { it.accept(this) } printer.printWithNoIndent(")", ": ") ktFunction.returnType.accept(this) + renderExtraTypeParametersUpperBounds(ktFunction.typeParameterList) if (ktFunction.block !== JKBodyStub) { printer.block(multiline = ktFunction.block.statements.isNotEmpty()) { ktFunction.block.accept(this) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaMethodToKotlinFunctionConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaMethodToKotlinFunctionConversion.kt index a48ba247957..b4468369bfd 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaMethodToKotlinFunctionConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/JavaMethodToKotlinFunctionConversion.kt @@ -36,7 +36,8 @@ class JavaMethodToKotlinFunctionConversion : TransformerBasedConversion() { it.name, it.parameters, it.block, - it.modifierList + it.modifierList, + it.typeParameterList ) } else { it diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index a25b723d119..79717c2e875 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -38,7 +38,12 @@ class JKJavaFieldImpl(modifierList: JKModifierList, type: JKTypeElement, name: J } class JKJavaMethodImpl( - modifierList: JKModifierList, returnType: JKTypeElement, name: JKNameIdentifier, parameters: List, block: JKBlock + modifierList: JKModifierList, + returnType: JKTypeElement, + name: JKNameIdentifier, + parameters: List, + block: JKBlock, + typeParameterList: JKTypeParameterList ) : JKJavaMethod, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaMethod(this, data) @@ -47,7 +52,7 @@ class JKJavaMethodImpl( override var name: JKNameIdentifier by child(name) override var parameters: List by children(parameters) override var block: JKBlock by child(block) - + override var typeParameterList: JKTypeParameterList by child(typeParameterList) } class JKJavaLiteralExpressionImpl( diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt index 535497c8f82..a95f1596b9d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -48,7 +48,8 @@ class JKKtFunctionImpl( name: JKNameIdentifier, parameters: List, block: JKBlock, - modifierList: JKModifierList + modifierList: JKModifierList, + typeParameterList: JKTypeParameterList ) : JKBranchElementBase(), JKKtFunction { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitKtFunction(this, data) @@ -57,6 +58,7 @@ class JKKtFunctionImpl( override var parameters: List by children(parameters) override var block: JKBlock by child(block) override var modifierList: JKModifierList by child(modifierList) + override var typeParameterList: JKTypeParameterList by child(typeParameterList) } sealed class JKKtQualifierImpl : JKQualifier, JKElementBase() { @@ -166,7 +168,7 @@ class JKKtConstructorImpl( override var block: JKBlock by child(block) override var modifierList: JKModifierList by child(modifierList) override var delegationCall: JKExpression by child(delegationCall) - + override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl()) override fun accept(visitor: JKVisitor, data: D): R = visitor.visitKtConstructor(this, data) } @@ -184,6 +186,7 @@ class JKKtPrimaryConstructorImpl( override var block: JKBlock by child(block) override var modifierList: JKModifierList by child(modifierList) override var delegationCall: JKExpression by child(delegationCall) + override var typeParameterList: JKTypeParameterList by child(JKTypeParameterListImpl()) override fun accept(visitor: JKVisitor, data: D): R = visitor.visitKtPrimaryConstructor(this, data) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index fe5774def93..580a8e33de6 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -62,7 +62,7 @@ interface JKInheritanceInfo : JKTreeElement, JKBranchElement { val inherit: List } -interface JKMethod : JKDeclaration, JKModifierListOwner { +interface JKMethod : JKDeclaration, JKModifierListOwner, JKTypeParameterListOwner { val name: JKNameIdentifier var parameters: List val returnType: JKTypeElement