New J2K: Get rid of JKUnresolvedClassType and use JKClassType(JKUnresolvedClassSymbol) instead

This commit is contained in:
Ilya Kirillov
2018-12-24 12:02:47 +03:00
committed by Ilya Kirillov
parent 325eec2454
commit 71b194d0d6
5 changed files with 7 additions and 21 deletions
@@ -866,9 +866,6 @@ private inline fun JKDelegationConstructorCall.isCallOfConstructorOf(type: JKTyp
val symbol = type.classReference as? JKClassSymbol ?: return false
this.identifier.name == symbol.name && this.identifier.declaredIn == symbol
}
is JKUnresolvedClassType -> {
this.identifier.name == type.name
}
else -> false
}
}
@@ -34,7 +34,7 @@ class ImplicitInitializerConversion(private val context: ConversionContext) : Re
val fieldType = element.type.type
val newInitializer = when (fieldType) {
is JKClassType, is JKUnresolvedClassType -> JKNullLiteral()
is JKClassType -> JKNullLiteral()
is JKJavaPrimitiveType -> createPrimitiveTypeInitializer(fieldType)
else -> null
}
@@ -8,10 +8,7 @@ package org.jetbrains.kotlin.j2k.conversions
import org.jetbrains.kotlin.j2k.ConversionContext
import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.j2k.tree.*
import org.jetbrains.kotlin.j2k.tree.impl.JKJavaMethodImpl
import org.jetbrains.kotlin.j2k.tree.impl.JKJavaVoidType
import org.jetbrains.kotlin.j2k.tree.impl.JKTypeElementImpl
import org.jetbrains.kotlin.j2k.tree.impl.JKUnresolvedClassType
import org.jetbrains.kotlin.j2k.tree.impl.*
class JavaStandartMethodsConversion(private val context: ConversionContext) : RecursiveApplicableConversionBase() {
override fun applyToElement(element: JKTreeElement): JKTreeElement {
@@ -23,7 +20,10 @@ class JavaStandartMethodsConversion(private val context: ConversionContext) : Re
if (fixCloneMethod(declaration)) {
element.inheritance.implements +=
JKTypeElementImpl(
JKUnresolvedClassType("Cloneable", emptyList(), Nullability.NotNull)
JKClassTypeImpl(
JKUnresolvedClassSymbol("Cloneable"),
emptyList(), Nullability.NotNull
)
)
continue
}
@@ -193,12 +193,6 @@ object JKNoTypeImpl: JKNoType {
class JKStarProjectionTypeImpl : JKStarProjectionType
class JKUnresolvedClassType(
val name: String,
override val parameters: List<JKType>,
override val nullability: Nullability = Nullability.Default
) : JKParametrizedType
fun JKType.fqName(): String =
when (this) {
is JKClassType -> {
@@ -209,14 +203,10 @@ fun JKType.fqName(): String =
else -> TODO(target.toString())
}
}
is JKUnresolvedClassType -> name
is JKJavaPrimitiveType -> jvmPrimitiveType.name
else -> TODO(toString())
}
fun JKType.equalsByName(other: JKType) = fqName() == other.fqName()
class JKNullLiteral : JKLiteralExpression, JKElementBase(), PsiOwner by PsiOwnerImpl() {
override val literal: String
get() = "null"
@@ -68,7 +68,7 @@ fun PsiType.toJK(symbolProvider: JKSymbolProvider, nullability: Nullability = Nu
val parameters = parameters.map { it.toJK(symbolProvider, nullability) }
when (target) {
null ->
JKUnresolvedClassType(rawType().canonicalText, parameters, nullability)
JKClassTypeImpl(JKUnresolvedClassSymbol(rawType().canonicalText), parameters, nullability)
is PsiTypeParameter ->
JKTypeParameterTypeImpl(target.name!!)
else -> {
@@ -157,7 +157,6 @@ inline fun <reified T : JKType> T.updateNullability(newNullability: Nullability)
else when (this) {
is JKTypeParameterTypeImpl -> JKTypeParameterTypeImpl(name, newNullability)
is JKClassTypeImpl -> JKClassTypeImpl(classReference, parameters, newNullability)
is JKUnresolvedClassType -> JKUnresolvedClassType(name, parameters, newNullability)
is JKNoType -> this
is JKJavaVoidType -> this
is JKJavaPrimitiveType -> this