diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index c65bc52c151..c2abd746cf6 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -220,7 +220,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { nullability ) } else { - JKUnresolvedClassType(this.presentableText, parameters, nullability) + JKUnresolvedClassType(this.rawType().canonicalText, parameters, nullability) } } is PsiArrayType -> JKJavaArrayTypeImpl(componentType.toJK(), nullability) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 9a094d62d1e..b732b335441 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -295,8 +295,8 @@ class NewCodeBuilder { printer.printlnWithNoIndent() } - override fun visitTypeElement(typeElement: JKTypeElement) { - val type = typeElement.type + + private fun renderType(type: JKType) { when (type) { is JKClassType -> (type.classReference as JKClassSymbol).fqName?.let { printer.printWithNoIndent(FqName(it).shortName().asString()) } @@ -310,6 +310,19 @@ class NewCodeBuilder { else -> { } } + if (type is JKParametrizedType && type.parameters.isNotEmpty()) { + printer.par(ANGLE) { + renderList(type.parameters) { + renderType(it) + } + } + } + } + + override fun visitTypeElement(typeElement: JKTypeElement) { + val type = typeElement.type + + renderType(type) } override fun visitBlock(block: JKBlock) { @@ -354,10 +367,6 @@ class NewCodeBuilder { body() this.printWithNoIndent(kind.close) } - } - - private enum class ParenthesisKind(val open: String, val close: String) { - ROUND("(", ")"), SQUARE("[", "]"), CURVED("{", "}"), CURVED_MULTILINE("{\n", "}\n"), INLINE_COMMENT("/*", "*/") override fun visitLambdaExpression(lambdaExpression: JKLambdaExpression) { printer.printWithNoIndent("{") @@ -387,6 +396,10 @@ class NewCodeBuilder { } } + private enum class ParenthesisKind(val open: String, val close: String) { + ROUND("(", ")"), SQUARE("[", "]"), CURVED("{", "}"), CURVED_MULTILINE("{\n", "}\n"), INLINE_COMMENT("/*", "*/"), ANGLE("<", ">") + } + fun printCodeOut(root: JKTreeElement): String { Visitor().also { root.accept(it) } return builder.toString() 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 d62fd405e35..2c93266b0a1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -179,9 +179,9 @@ class JKClassTypeImpl( class JKUnresolvedClassType( val name: String, - var parameters: List, + override var parameters: List, override val nullability: Nullability = Nullability.Default -) : JKType +) : JKParametrizedType class JKNullLiteral : JKLiteralExpression, JKElementBase() { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt index 50031d77446..b5224252072 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt @@ -50,10 +50,13 @@ interface JKType { val nullability: Nullability } -interface JKClassType : JKType { +interface JKParametrizedType : JKType { + val parameters: List +} + +interface JKClassType : JKParametrizedType { val classReference: JKSymbol? override val nullability: Nullability - val parameters: List } interface JKJavaPrimitiveType : JKType {