New J2K: Deal with unresolved class types
This commit is contained in:
committed by
Ilya Kirillov
parent
c53f56629e
commit
d718fae6d9
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user