diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index b3baafcf62a..afb4ffebdf7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -493,6 +493,8 @@ class NewCodeBuilder { is JKContextType -> return is JKStarProjectionType -> printer.printWithNoIndent("*") + is JKTypeParameterType -> + printer.printWithNoIndent(type.name) is JKVarianceTypeParameterType -> { when (type.variance) { JKVarianceTypeParameterType.Variance.IN -> printer.printWithNoIndent("in ") 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 5871df1b2f1..6a5c518df59 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -458,3 +458,13 @@ class JKTypeParameterImpl(name: JKNameIdentifier, upperBounds: List by children(upperBounds) override fun accept(visitor: JKVisitor, data: D): R = visitor.visitTypeParameter(this, data) } + +class JKVarianceTypeParameterTypeImpl( + override val variance: JKVarianceTypeParameterType.Variance, + override val boundType: JKType +) : JKVarianceTypeParameterType + +class JKTypeParameterTypeImpl( + override val name: String, + override val nullability: Nullability = Nullability.Default +) : JKTypeParameterType \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt index 80626e0e156..04274b6a3f6 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/markers.kt @@ -71,6 +71,10 @@ interface JKVarianceTypeParameterType : JKType { } } +interface JKTypeParameterType : JKType { + val name: String +} + interface JKNoType : JKType interface JKParametrizedType : JKType { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt index b9f830583ee..b3fc5267c51 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt @@ -55,14 +55,18 @@ fun PsiType.toJK(symbolProvider: JKSymbolProvider, nullability: Nullability = Nu is PsiClassType -> { val target = resolve() val parameters = parameters.map { it.toJK(symbolProvider, nullability) } - if (target != null) { - JKClassTypeImpl( - target.let { symbolProvider.provideDirectSymbol(it) as JKClassSymbol }, - parameters, - nullability - ) - } else { - JKUnresolvedClassType(this.rawType().canonicalText, parameters, nullability) + when (target) { + null -> + JKUnresolvedClassType(rawType().canonicalText, parameters, nullability) + is PsiTypeParameter -> + JKTypeParameterTypeImpl(target.name!!) + else -> { + JKClassTypeImpl( + target.let { symbolProvider.provideDirectSymbol(it) as JKClassSymbol }, + parameters, + nullability + ) + } } } is PsiArrayType -> JKJavaArrayTypeImpl(componentType.toJK(symbolProvider, nullability), nullability)