FIR Java: reuse StandardClassIds
This commit is contained in:
@@ -16,6 +16,7 @@ object StandardClassIds {
|
||||
|
||||
val Nothing = "Nothing".baseId()
|
||||
val Any = "Any".baseId()
|
||||
val Array = "Array".baseId()
|
||||
|
||||
val Boolean = "Boolean".baseId()
|
||||
val Char = "Char".baseId()
|
||||
@@ -30,4 +31,5 @@ object StandardClassIds {
|
||||
val Float = "Float".baseId()
|
||||
val Double = "Double".baseId()
|
||||
|
||||
fun byName(name: String) = name.baseId()
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.resolve.constructType
|
||||
import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols
|
||||
import org.jetbrains.kotlin.fir.service
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTagImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -98,13 +99,13 @@ internal fun JavaType?.toConeKotlinTypeWithNullability(session: FirSession, isNu
|
||||
null -> "Unit"
|
||||
else -> javaName.capitalize()
|
||||
}
|
||||
val classId = ClassId(FqName("kotlin"), FqName(kotlinPrimitiveName), false)
|
||||
val classId = StandardClassIds.byName(kotlinPrimitiveName)
|
||||
classId.toConeKotlinType(emptyArray(), isNullable)
|
||||
}
|
||||
is JavaArrayType -> {
|
||||
val componentType = componentType
|
||||
if (componentType !is JavaPrimitiveType) {
|
||||
val classId = ClassId(FqName("kotlin"), FqName("Array"), false)
|
||||
val classId = StandardClassIds.Array
|
||||
val argumentType = ConeFlexibleType(
|
||||
componentType.toConeKotlinTypeWithNullability(session, isNullable = false),
|
||||
componentType.toConeKotlinTypeWithNullability(session, isNullable = true)
|
||||
@@ -112,16 +113,16 @@ internal fun JavaType?.toConeKotlinTypeWithNullability(session: FirSession, isNu
|
||||
classId.toConeKotlinType(arrayOf(argumentType), isNullable)
|
||||
} else {
|
||||
val javaComponentName = componentType.type?.typeName?.asString()?.capitalize() ?: error("Array of voids")
|
||||
val classId = ClassId(FqName("kotlin"), FqName(javaComponentName + "Array"), false)
|
||||
val classId = StandardClassIds.byName(javaComponentName + "Array")
|
||||
classId.toConeKotlinType(emptyArray(), isNullable)
|
||||
}
|
||||
}
|
||||
is JavaWildcardType -> bound?.toNotNullConeKotlinType(session) ?: run {
|
||||
val classId = ClassId(FqName("kotlin"), FqName("Any"), false)
|
||||
val classId = StandardClassIds.Any
|
||||
classId.toConeKotlinType(emptyArray(), isNullable)
|
||||
}
|
||||
null -> {
|
||||
val classId = ClassId(FqName("kotlin"), FqName("Any"), false)
|
||||
val classId = StandardClassIds.Any
|
||||
classId.toConeKotlinType(emptyArray(), isNullable)
|
||||
}
|
||||
else -> error("Strange JavaType: ${this::class.java}")
|
||||
|
||||
Reference in New Issue
Block a user