Add assertions to prohibit creating LazyJavaClassDescriptor by KtLightClass
Diagnosing KT-12966
This commit is contained in:
+4
@@ -61,6 +61,10 @@ class LazyJavaClassDescriptor(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
c.components.javaResolverCache.recordClass(jClass, this)
|
c.components.javaResolverCache.recordClass(jClass, this)
|
||||||
|
|
||||||
|
assert(jClass.lightClassOriginKind == null) {
|
||||||
|
"Creating LazyJavaClassDescriptor for light class $jClass"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val kind = when {
|
private val kind = when {
|
||||||
|
|||||||
+11
@@ -64,6 +64,17 @@ class LazyJavaPackageScope(
|
|||||||
is KotlinClassLookupResult.SyntheticClass -> null
|
is KotlinClassLookupResult.SyntheticClass -> null
|
||||||
is KotlinClassLookupResult.NotFound -> {
|
is KotlinClassLookupResult.NotFound -> {
|
||||||
val javaClass = request.javaClass ?: c.components.finder.findClass(classId)
|
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 ->
|
javaClass?.let { it ->
|
||||||
LazyJavaClassDescriptor(c, ownerDescriptor, it)
|
LazyJavaClassDescriptor(c, ownerDescriptor, it)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user