Skip to content

Commit 252b8ec

Browse files
committed
Add assertions to prohibit creating LazyJavaClassDescriptor by KtLightClass
Diagnosing KT-12966
1 parent 30892e0 commit 252b8ec

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ class LazyJavaClassDescriptor(
6161

6262
init {
6363
c.components.javaResolverCache.recordClass(jClass, this)
64+
65+
assert(jClass.lightClassOriginKind == null) {
66+
"Creating LazyJavaClassDescriptor for light class $jClass"
67+
}
6468
}
6569

6670
private val kind = when {

core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,17 @@ class LazyJavaPackageScope(
6464
is KotlinClassLookupResult.SyntheticClass -> null
6565
is KotlinClassLookupResult.NotFound -> {
6666
val javaClass = request.javaClass ?: c.components.finder.findClass(classId)
67+
68+
if (javaClass?.lightClassOriginKind == LightClassOriginKind.BINARY) {
69+
throw IllegalStateException(
70+
"Couldn't find kotlin binary class for light class created by kotlin binary file\n" +
71+
"JavaClass: $javaClass\n" +
72+
"ClassId: $classId\n" +
73+
"findKotlinClass(JavaClass) = ${c.components.kotlinClassFinder.findKotlinClass(javaClass)}\n" +
74+
"findKotlinClass(ClassId) = ${c.components.kotlinClassFinder.findKotlinClass(classId)}\n"
75+
)
76+
}
77+
6778
javaClass?.let { it ->
6879
LazyJavaClassDescriptor(c, ownerDescriptor, it)
6980
}

0 commit comments

Comments
 (0)