diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 421b62b8f9e..0bf9665cedd 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -253,8 +253,11 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { val implTypes = this.implementsList?.mapTypes().orEmpty() val extTypes = this.extendsList?.mapTypes().orEmpty() return JKClassImpl( - with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(name!!), JKInheritanceInfoImpl(extTypes + implTypes), - classKind + with(modifierMapper) { modifierList.toJK() }, + JKNameIdentifierImpl(name!!), + JKInheritanceInfoImpl(extTypes + implTypes), + classKind, + typeParameterList?.toJK() ?: JKTypeParameterListImpl() ).also { jkClassImpl -> jkClassImpl.declarationList = children.mapNotNull { ElementVisitor().apply { it.accept(this) }.resultElement as? JKDeclaration diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index ab7478b48fa..05bef3bad65 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -174,6 +174,7 @@ class NewCodeBuilder { printer.print(classKindString(klass.classKind)) builder.append(" ") printer.printWithNoIndent(klass.name.value) + klass.typeParameterList.accept(this) val primaryConstructor = klass.primaryConstructor() if (primaryConstructor != null && primaryConstructor.parameters.isNotEmpty()) { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ClassToObjectPromotionConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ClassToObjectPromotionConversion.kt index c23dcfa8cde..87371494621 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ClassToObjectPromotionConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ClassToObjectPromotionConversion.kt @@ -23,7 +23,13 @@ class ClassToObjectPromotionConversion : RecursiveApplicableConversionBase() { companion.invalidate() element.invalidate() return recurse( - JKClassImpl(element.modifierList, element.name, element.inheritance, JKClass.ClassKind.OBJECT) + JKClassImpl( + element.modifierList, + element.name, + element.inheritance, + JKClass.ClassKind.OBJECT, + element.typeParameterList + ) .apply { declarationList = companion.declarationList } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StaticsToCompanionExtractConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StaticsToCompanionExtractConversion.kt index be34e393abf..332eaeb29eb 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StaticsToCompanionExtractConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/StaticsToCompanionExtractConversion.kt @@ -48,7 +48,8 @@ class StaticsToCompanionExtractConversion : RecursiveApplicableConversionBase() ), JKNameIdentifierImpl(""), JKInheritanceInfoImpl(emptyList()), - JKClass.ClassKind.COMPANION + JKClass.ClassKind.COMPANION, + JKTypeParameterListImpl() ).also { element.declarationList += it } } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index 7c909dffcb2..1f43611068c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -43,7 +43,8 @@ class JKClassImpl( modifierList: JKModifierList, name: JKNameIdentifier, inheritance: JKInheritanceInfo, - override var classKind: JKClass.ClassKind + override var classKind: JKClass.ClassKind, + typeParameterList: JKTypeParameterList ) : JKClass, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitClass(this, data) @@ -51,6 +52,7 @@ class JKClassImpl( override var modifierList by child(modifierList) override var declarationList by children() override val inheritance by child(inheritance) + override var typeParameterList: JKTypeParameterList by child(typeParameterList) } class JKNameIdentifierImpl(override val value: String) : JKNameIdentifier, JKElementBase(), PsiOwner by PsiOwnerImpl() { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 0c0080e1b07..0939af78f82 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -45,7 +45,7 @@ interface JKFile : JKTreeElement, JKBranchElement { var declarationList: List } -interface JKClass : JKDeclaration, JKModifierListOwner, JKBranchElement { +interface JKClass : JKDeclaration, JKModifierListOwner, JKTypeParameterListOwner, JKBranchElement { val name: JKNameIdentifier val inheritance: JKInheritanceInfo