From 21e9c9b0c1acb28cc9c460dc385993639f630261 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Thu, 20 Aug 2015 12:36:38 +0300 Subject: [PATCH] package part indexing hack --- .../idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt index a4118eb2b62..9328a2f2ef7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/KotlinClsStubBuilder.kt @@ -21,7 +21,6 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.compiled.ClsStubBuilder import com.intellij.psi.impl.compiled.ClassFileStubBuilder import com.intellij.psi.stubs.PsiFileStub -import com.intellij.util.cls.ClsFormatException import com.intellij.util.indexing.FileContent import org.jetbrains.kotlin.idea.decompiler.isKotlinInternalCompiledFile import org.jetbrains.kotlin.idea.decompiler.textBuilder.DirectoryBasedClassFinder @@ -31,6 +30,7 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind +import org.jetbrains.kotlin.load.kotlin.header.isCompatibleSyntheticClassKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil @@ -75,6 +75,11 @@ public open class KotlinClsStubBuilder : ClsStubBuilder() { val context = components.createContext(classData.getNameResolver(), packageFqName) createTopLevelClassStub(classId, classData.getClassProto(), context) } + header.isCompatibleSyntheticClassKind() && header.syntheticClassKind == JvmAnnotationNames.KotlinSyntheticClass.Kind.PACKAGE_PART -> { + val packageData = JvmProtoBufUtil.readPackageDataFrom(annotationData) + val context = components.createContext(packageData.getNameResolver(), packageFqName) + createPackageFacadeFileStub(packageData.getPackageProto(), packageFqName, context) + } else -> throw IllegalStateException("Should have processed " + file.getPath() + " with header $header") } }