diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Annotations.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Annotations.kt index 3819e1209fe..02d2e3bd8d9 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Annotations.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Annotations.kt @@ -168,7 +168,8 @@ class BinaryJavaAnnotationVisitor( } override fun visitEnum(name: String?, desc: String, value: String) { - addArgument(PlainJavaEnumValueAnnotationArgument(name, context.mapDescToClassId(desc), value)) + val enumClassId = context.mapInternalNameToClassId(Type.getType(desc).internalName) + addArgument(PlainJavaEnumValueAnnotationArgument(name, enumClassId, value)) } override fun visit(name: String?, value: Any?) { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryClassSignatureParser.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryClassSignatureParser.kt index e69d0913ba0..caca65cef74 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryClassSignatureParser.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryClassSignatureParser.kt @@ -136,9 +136,9 @@ class BinaryClassSignatureParser { } signature.next() - val internedCanonicalName = canonicalNameInterner.intern(canonicalName.toString()) + val internalName = canonicalNameInterner.intern(canonicalName.toString().replace('.', '$')) return PlainJavaClassifierType( - { context.resolveByInternalName(internedCanonicalName) }, + { context.resolveByInternalName(internalName) }, argumentGroups.reversed().flattenTo(arrayListOf()).compact() ) } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt index cf322afacf6..789b272f38f 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/ClassifierResolutionContext.kt @@ -26,8 +26,6 @@ import org.jetbrains.kotlin.util.javaslang.ImmutableHashMap import org.jetbrains.kotlin.util.javaslang.ImmutableMap import org.jetbrains.kotlin.util.javaslang.getOrNull -import org.jetbrains.org.objectweb.asm.Type - typealias ClassIdToJavaClass = (ClassId) -> JavaClass? class ClassifierResolutionContext private constructor( @@ -63,19 +61,7 @@ class ClassifierResolutionContext private constructor( internal fun copyForMember() = ClassifierResolutionContext(classesByQName, typeParameters, innerClasses) - // See com.intellij.psi.impl.compiled.StubBuildingVisitor.createMapping(byte[]) internal fun mapInternalNameToClassId(internalName: String): ClassId { - if ('.' in internalName) { - val parts = internalName.split('.') - - val outerClass = mapInternalNameToClassId(parts[0]) - val nestedParts = parts.subList(1, parts.size) - - return nestedParts.fold(outerClass) { classId, part -> - classId.createNestedClassId(Name.identifier(part)) - } - } - if ('$' in internalName) { val innerClassInfo = innerClasses.getOrNull(internalName) if (innerClassInfo != null && Name.isValidIdentifier(innerClassInfo.simpleName)) { @@ -88,6 +74,4 @@ class ClassifierResolutionContext private constructor( } internal fun resolveByInternalName(c: String): Result = resolveClass(mapInternalNameToClassId(c)) - - internal fun mapDescToClassId(desc: String): ClassId = mapInternalNameToClassId(Type.getType(desc).internalName) }