[FIR] Map Class to KClass in java annotations

This commit is contained in:
Dmitriy Novozhilov
2020-07-23 15:57:34 +03:00
committed by Mikhail Glukhikh
parent 282a295d43
commit b63257345b
10 changed files with 58 additions and 40 deletions
@@ -34,6 +34,8 @@ object JavaToKotlinClassMap : PlatformToKotlinClassMap {
private val FUNCTION_N_CLASS_ID = ClassId.topLevel(FqName("kotlin.jvm.functions.FunctionN"))
val FUNCTION_N_FQ_NAME = FUNCTION_N_CLASS_ID.asSingleFqName()
private val K_FUNCTION_CLASS_ID = ClassId.topLevel(FqName("kotlin.reflect.KFunction"))
private val K_CLASS_CLASS_ID = ClassId.topLevel(FqName("kotlin.reflect.KClass"))
private val CLASS_CLASS_ID = classId(java.lang.Class::class.java)
private val javaToKotlin = HashMap<FqNameUnsafe, ClassId>()
private val kotlinToJava = HashMap<FqNameUnsafe, ClassId>()
@@ -123,6 +125,11 @@ object JavaToKotlinClassMap : PlatformToKotlinClassMap {
return javaToKotlin[fqName.toUnsafe()]
}
fun mapJavaToKotlinIncludingClassMapping(fqName: FqName): ClassId? {
if (fqName == CLASS_CLASS_ID.asSingleFqName()) return K_CLASS_CLASS_ID
return mapJavaToKotlin(fqName)
}
fun mapJavaToKotlin(fqName: FqName, builtIns: KotlinBuiltIns, functionTypeArity: Int? = null): ClassDescriptor? {
val kotlinClassId =
if (functionTypeArity != null && fqName == FUNCTION_N_FQ_NAME) KotlinBuiltIns.getFunctionClassId(functionTypeArity)