FIR Java: reuse StandardClassIds

This commit is contained in:
Mikhail Glukhikh
2019-03-26 12:38:25 +03:00
parent a0fa9e6b48
commit 4213a4c7e2
2 changed files with 8 additions and 5 deletions
@@ -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}")