Special crafting of ClassId when implClassName is nested DefaultImpls

This commit is contained in:
Ilya Gorbunov
2015-10-20 20:02:44 +03:00
parent 2a7a6688d0
commit 16d56355c3
@@ -18,8 +18,10 @@ package org.jetbrains.kotlin.load.kotlin
import com.google.protobuf.MessageLite import com.google.protobuf.MessageLite
import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.* import org.jetbrains.kotlin.serialization.deserialization.*
@@ -198,7 +200,12 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
if (implClassName != null) { if (implClassName != null) {
// TODO: store accurate name for nested traits // TODO: store accurate name for nested traits
return kotlinClassFinder.findKotlinClass(ClassId(classId.packageFqName, implClassName)) val implClassId =
if (implClassName.asString().endsWith(JvmAbi.DEFAULT_IMPLS_SUFFIX))
ClassId(classId.packageFqName, FqName(implClassName.asString().replace(JvmAbi.DEFAULT_IMPLS_SUFFIX, "." + JvmAbi.DEFAULT_IMPLS_CLASS_NAME)), false)
else
ClassId(classId.packageFqName, implClassName)
return kotlinClassFinder.findKotlinClass(implClassId)
} }
if (isStaticFieldInOuter && classId.isNestedClass) { if (isStaticFieldInOuter && classId.isNestedClass) {