New J2K: Deal with unresolved class types

This commit is contained in:
Simon Ogorodnik
2018-05-30 18:41:29 +03:00
committed by Ilya Kirillov
parent c53f56629e
commit d718fae6d9
2 changed files with 19 additions and 4 deletions
@@ -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")
@@ -142,6 +142,13 @@ class JKClassTypeImpl(
override val nullability: Nullability = Nullability.Default
) : JKClassType
class JKUnresolvedClassType(
var parameters: List<JKType>,
override val nullability: Nullability = Nullability.Default
) : JKType
class JKNullLiteral : JKLiteralExpression, JKElementBase() {
override val literal: String
get() = "null"