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 {
|
fun PsiType.toJK(): JKType {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is PsiClassType -> JKClassTypeImpl(
|
is PsiClassType -> {
|
||||||
resolve()?.let { symbolProvider.provideSymbol(it) as? JKClassSymbol }!!,
|
val target = resolve()
|
||||||
parameters.map { it.toJK() }
|
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 PsiArrayType -> JKJavaArrayTypeImpl(componentType.toJK())
|
||||||
is PsiPrimitiveType -> JKJavaPrimitiveTypeImpl.KEYWORD_TO_INSTANCE[presentableText]
|
is PsiPrimitiveType -> JKJavaPrimitiveTypeImpl.KEYWORD_TO_INSTANCE[presentableText]
|
||||||
?: error("Invalid primitive type $presentableText")
|
?: error("Invalid primitive type $presentableText")
|
||||||
|
|||||||
@@ -142,6 +142,13 @@ class JKClassTypeImpl(
|
|||||||
override val nullability: Nullability = Nullability.Default
|
override val nullability: Nullability = Nullability.Default
|
||||||
) : JKClassType
|
) : JKClassType
|
||||||
|
|
||||||
|
|
||||||
|
class JKUnresolvedClassType(
|
||||||
|
var parameters: List<JKType>,
|
||||||
|
override val nullability: Nullability = Nullability.Default
|
||||||
|
) : JKType
|
||||||
|
|
||||||
|
|
||||||
class JKNullLiteral : JKLiteralExpression, JKElementBase() {
|
class JKNullLiteral : JKLiteralExpression, JKElementBase() {
|
||||||
override val literal: String
|
override val literal: String
|
||||||
get() = "null"
|
get() = "null"
|
||||||
|
|||||||
Reference in New Issue
Block a user