From d46f222a12cecf2493987b7acedb5a80e989c049 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 27 Apr 2017 12:54:27 +0200 Subject: [PATCH] Don't try to store "is Kotlin" state for non-local jars (EA-80264) --- .../kotlin/idea/caches/IDEKotlinBinaryClassCache.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/IDEKotlinBinaryClassCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/IDEKotlinBinaryClassCache.kt index 8dd1edfdd54..b7a7f92291a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/IDEKotlinBinaryClassCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/IDEKotlinBinaryClassCache.kt @@ -20,6 +20,7 @@ import com.intellij.ide.highlighter.JavaClassFileType import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile +import com.intellij.openapi.vfs.VirtualFileWithId import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader @@ -53,7 +54,9 @@ object IDEKotlinBinaryClassCache { val kotlinBinaryClass = KotlinBinaryClassCache.getKotlinBinaryClass(file, fileContent) val isKotlinBinaryClass = kotlinBinaryClass != null - attributeService.writeBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file, isKotlinBinaryClass) + if (file is VirtualFileWithId) { + attributeService.writeBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file, isKotlinBinaryClass) + } if (isKotlinBinaryClass) { val headerInfo = createHeaderInfo(kotlinBinaryClass) @@ -99,7 +102,10 @@ object IDEKotlinBinaryClassCache { return userData } - val isKotlinBinaryAttribute = attributeService.readBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file) + val isKotlinBinaryAttribute = if (file is VirtualFileWithId) + attributeService.readBooleanAttribute(KOTLIN_IS_COMPILED_FILE_ATTRIBUTE, file) + else + null if (isKotlinBinaryAttribute != null) { val isKotlinBinary = isKotlinBinaryAttribute.value