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