Add assertions to prohibit creating LazyJavaClassDescriptor by KtLightClass
Diagnosing KT-12966
This commit is contained in:
+4
@@ -61,6 +61,10 @@ class LazyJavaClassDescriptor(
|
||||
|
||||
init {
|
||||
c.components.javaResolverCache.recordClass(jClass, this)
|
||||
|
||||
assert(jClass.lightClassOriginKind == null) {
|
||||
"Creating LazyJavaClassDescriptor for light class $jClass"
|
||||
}
|
||||
}
|
||||
|
||||
private val kind = when {
|
||||
|
||||
+11
@@ -64,6 +64,17 @@ class LazyJavaPackageScope(
|
||||
is KotlinClassLookupResult.SyntheticClass -> null
|
||||
is KotlinClassLookupResult.NotFound -> {
|
||||
val javaClass = request.javaClass ?: c.components.finder.findClass(classId)
|
||||
|
||||
if (javaClass?.lightClassOriginKind == LightClassOriginKind.BINARY) {
|
||||
throw IllegalStateException(
|
||||
"Couldn't find kotlin binary class for light class created by kotlin binary file\n" +
|
||||
"JavaClass: $javaClass\n" +
|
||||
"ClassId: $classId\n" +
|
||||
"findKotlinClass(JavaClass) = ${c.components.kotlinClassFinder.findKotlinClass(javaClass)}\n" +
|
||||
"findKotlinClass(ClassId) = ${c.components.kotlinClassFinder.findKotlinClass(classId)}\n"
|
||||
)
|
||||
}
|
||||
|
||||
javaClass?.let { it ->
|
||||
LazyJavaClassDescriptor(c, ownerDescriptor, it)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user