Prohibit Array::class, require type arguments for reified parameters

This commit is contained in:
Alexander Udalov
2015-04-08 16:35:39 +03:00
parent a0d2b00287
commit 6182b3ff5c
17 changed files with 137 additions and 39 deletions
@@ -34,6 +34,8 @@ import org.jetbrains.kotlin.types.TypeUtils
import kotlin.reflect.KotlinReflectionInternalError
object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
private val kotlinArrayClassId = KotlinBuiltIns.getInstance().getArray().classId
private val kotlinFqNameToJvmDesc = linkedMapOf<FqName, String>()
private val kotlinFqNameToJvmDescNullable = linkedMapOf<FqName, String>()
private val jvmDescToKotlinClassId = linkedMapOf<String, ClassId>()
@@ -110,6 +112,10 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
}
fun mapJvmClassToKotlinClassId(klass: Class<*>): ClassId {
if (klass.isArray() && !klass.getComponentType().isPrimitive()) {
return kotlinArrayClassId
}
return jvmDescToKotlinClassId[klass.desc] ?: klass.classId
}