package part indexing hack
This commit is contained in:
+6
-1
@@ -21,7 +21,6 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import com.intellij.psi.compiled.ClsStubBuilder
|
import com.intellij.psi.compiled.ClsStubBuilder
|
||||||
import com.intellij.psi.impl.compiled.ClassFileStubBuilder
|
import com.intellij.psi.impl.compiled.ClassFileStubBuilder
|
||||||
import com.intellij.psi.stubs.PsiFileStub
|
import com.intellij.psi.stubs.PsiFileStub
|
||||||
import com.intellij.util.cls.ClsFormatException
|
|
||||||
import com.intellij.util.indexing.FileContent
|
import com.intellij.util.indexing.FileContent
|
||||||
import org.jetbrains.kotlin.idea.decompiler.isKotlinInternalCompiledFile
|
import org.jetbrains.kotlin.idea.decompiler.isKotlinInternalCompiledFile
|
||||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.DirectoryBasedClassFinder
|
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.KotlinBinaryClassCache
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
|
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.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.JetFile
|
import org.jetbrains.kotlin.psi.JetFile
|
||||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||||
@@ -75,6 +75,11 @@ public open class KotlinClsStubBuilder : ClsStubBuilder() {
|
|||||||
val context = components.createContext(classData.getNameResolver(), packageFqName)
|
val context = components.createContext(classData.getNameResolver(), packageFqName)
|
||||||
createTopLevelClassStub(classId, classData.getClassProto(), context)
|
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")
|
else -> throw IllegalStateException("Should have processed " + file.getPath() + " with header $header")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user