Reflection: support Java anonymous/local classes
Local classes and anonymous objects are normal classes and kotlin-reflect can load all declarations and modifiers from them, and support calling members, exactly in the same way as it does for normal non-local classes. #KT-41373 In Progress
This commit is contained in:
committed by
Space Team
parent
1e031d9fb8
commit
d833b732c9
@@ -51,8 +51,13 @@ internal class KClassImpl<T : Any>(
|
||||
val moduleData = data.value.moduleData
|
||||
|
||||
val descriptor =
|
||||
if (classId.isLocal) moduleData.deserialization.deserializeClass(classId)
|
||||
else moduleData.module.findClassAcrossModuleDependencies(classId)
|
||||
if (classId.isLocal && jClass.isAnnotationPresent(Metadata::class.java)) {
|
||||
// If it's a Kotlin local class or anonymous object, deserialize its metadata directly because it cannot be found via
|
||||
// `module.findClassAcrossModuleDependencies`.
|
||||
moduleData.deserialization.deserializeClass(classId)
|
||||
} else {
|
||||
moduleData.module.findClassAcrossModuleDependencies(classId)
|
||||
}
|
||||
|
||||
descriptor ?: reportUnresolvedClass()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user