KtDecompiledFile: hack to be able to navigate to builtIns on jvm

Which sometimes are loaded differently than they are rendered (see BuiltInClassesAreSerializableOnJvm)
This commit is contained in:
Pavel V. Talanov
2015-12-10 12:17:24 +03:00
parent b5568f9ace
commit 3f0d71411e
2 changed files with 35 additions and 18 deletions
@@ -68,18 +68,21 @@ class BuiltInClassesAreSerializableOnJvm(
else return listOf()
}
private fun isSerializableInJava(classFqName: FqName): Boolean {
val fqNameUnsafe = classFqName.toUnsafe()
if (fqNameUnsafe == KotlinBuiltIns.FQ_NAMES.array || KotlinBuiltIns.isPrimitiveArray(fqNameUnsafe)) {
return true
companion object {
fun isSerializableInJava(classFqName: FqName): Boolean {
val fqNameUnsafe = classFqName.toUnsafe()
if (fqNameUnsafe == KotlinBuiltIns.FQ_NAMES.array || KotlinBuiltIns.isPrimitiveArray(fqNameUnsafe)) {
return true
}
val javaClassId = JavaToKotlinClassMap.INSTANCE.mapKotlinToJava(fqNameUnsafe) ?: return false
val classViaReflection = try {
Class.forName(javaClassId.asSingleFqName().asString())
}
catch (e: ClassNotFoundException) {
return false
}
return Serializable::class.java.isAssignableFrom(classViaReflection)
}
val javaClassId = JavaToKotlinClassMap.INSTANCE.mapKotlinToJava(fqNameUnsafe) ?: return false
val classViaReflection = try {
Class.forName(javaClassId.asSingleFqName().asString())
}
catch (e: ClassNotFoundException) {
return false
}
return Serializable::class.java.isAssignableFrom(classViaReflection)
}
}