KotlinBinaryClassCache: restore missing fixes after merge to Kotlin repo
- Avoid lookups in branches: https://github.com/JetBrains/intellij-community/commit/c904c56bb4ac9764935aed09e2107636e2e5bb68 - Don't fail during index of incorrect class files: https://github.com/JetBrains/intellij-community/commit/3af051e3d30e773d9dfe6cb388a42387b8636c6b ^KTIJ-21472 In Progress Also, this commit fixes projectLeak in Intellij Aggregator _LastInSuiteTest.testProjectLeak[Java Tests / 3]
This commit is contained in:
committed by
teamcity
parent
c345f01a79
commit
24220cbfb5
+11
-1
@@ -6,7 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.analysis.decompiler.stub.file
|
package org.jetbrains.kotlin.analysis.decompiler.stub.file
|
||||||
|
|
||||||
import com.intellij.ide.highlighter.JavaClassFileType
|
import com.intellij.ide.highlighter.JavaClassFileType
|
||||||
|
import com.intellij.model.ModelBranch
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
|
import com.intellij.openapi.diagnostic.ControlFlowException
|
||||||
import com.intellij.openapi.util.Key
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.openapi.vfs.VirtualFileWithId
|
import com.intellij.openapi.vfs.VirtualFileWithId
|
||||||
@@ -59,7 +61,15 @@ class ClsKotlinBinaryClassCache {
|
|||||||
file: VirtualFile,
|
file: VirtualFile,
|
||||||
fileContent: ByteArray?
|
fileContent: ByteArray?
|
||||||
): KotlinJvmBinaryClass? {
|
): KotlinJvmBinaryClass? {
|
||||||
val kotlinBinaryClass = KotlinBinaryClassCache.getKotlinBinaryClassOrClassFileContent(file, fileContent)?.toKotlinJvmBinaryClass()
|
if (ModelBranch.getFileBranch(file) != null) return null
|
||||||
|
val classFileContent = try {
|
||||||
|
KotlinBinaryClassCache.getKotlinBinaryClassOrClassFileContent(file, fileContent)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
if (e is ControlFlowException) throw e
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
val kotlinBinaryClass = classFileContent?.toKotlinJvmBinaryClass()
|
||||||
|
|
||||||
val isKotlinBinaryClass = kotlinBinaryClass != null
|
val isKotlinBinaryClass = kotlinBinaryClass != null
|
||||||
if (file is VirtualFileWithId) {
|
if (file is VirtualFileWithId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user