Add assertions to prohibit creating LazyJavaClassDescriptor by KtLightClass

Diagnosing KT-12966
This commit is contained in:
Pavel V. Talanov
2016-07-28 17:04:47 +03:00
parent 30892e0154
commit 252b8ec6db
2 changed files with 15 additions and 0 deletions
@@ -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 {
@@ -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)
}