From 7ab018da7b90b01f9609e36ed0201d115a6ec661 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 30 Jun 2017 22:08:46 +0300 Subject: [PATCH] Use ASM 6 API to read class files in IDE Otherwise ASM throws exceptions trying to read module-info.class #KT-13072 Fixed --- .../jetbrains/kotlin/load/kotlin/KotlinBinaryClassCache.kt | 3 +++ .../kotlin/idea/versions/KotlinJvmMetadataVersionIndex.kt | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/KotlinBinaryClassCache.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/KotlinBinaryClassCache.kt index 3ed195c944c..e35290bd6bf 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/KotlinBinaryClassCache.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/KotlinBinaryClassCache.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.util.Computable import com.intellij.openapi.vfs.VirtualFile +import com.intellij.psi.PsiJavaModule class KotlinBinaryClassCache : Disposable { private class RequestCache { @@ -55,6 +56,8 @@ class KotlinBinaryClassCache : Disposable { fun getKotlinBinaryClass(file: VirtualFile, fileContent: ByteArray? = null): KotlinJvmBinaryClass? { if (file.fileType !== JavaClassFileType.INSTANCE) return null + if (file.name == PsiJavaModule.MODULE_INFO_CLS_FILE) return null + val service = ServiceManager.getService(KotlinBinaryClassCache::class.java) val requestCache = service.cache.get() diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinJvmMetadataVersionIndex.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinJvmMetadataVersionIndex.kt index 945c087fb4d..d7548472a2c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinJvmMetadataVersionIndex.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinJvmMetadataVersionIndex.kt @@ -52,12 +52,12 @@ object KotlinJvmMetadataVersionIndex : KotlinMetadataVersionIndexBase if (value is IntArray) {