diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index e3ab22da417..8240a98b598 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -200,10 +200,18 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { fun PsiType.toJK(): JKType { return when (this) { - is PsiClassType -> JKClassTypeImpl( - resolve()?.let { symbolProvider.provideSymbol(it) as? JKClassSymbol }!!, - parameters.map { it.toJK() } - ) + is PsiClassType -> { + val target = resolve() + val parameters = parameters.map { it.toJK() } + if (target != null) { + JKClassTypeImpl( + target.let { symbolProvider.provideSymbol(it) as JKClassSymbol }, + parameters + ) + } else { + JKUnresolvedClassType(parameters) + } + } is PsiArrayType -> JKJavaArrayTypeImpl(componentType.toJK()) is PsiPrimitiveType -> JKJavaPrimitiveTypeImpl.KEYWORD_TO_INSTANCE[presentableText] ?: error("Invalid primitive type $presentableText") 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 1123fc42af8..beec0d8debe 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -142,6 +142,13 @@ class JKClassTypeImpl( override val nullability: Nullability = Nullability.Default ) : JKClassType + +class JKUnresolvedClassType( + var parameters: List, + override val nullability: Nullability = Nullability.Default +) : JKType + + class JKNullLiteral : JKLiteralExpression, JKElementBase() { override val literal: String get() = "null"