diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt index d860907c385..4a2418e58e3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinDefaultHighlightingSettingsProvider.kt @@ -9,12 +9,14 @@ import com.intellij.codeInsight.daemon.impl.analysis.DefaultHighlightingSettingP import com.intellij.codeInsight.daemon.impl.analysis.FileHighlightingSetting import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.idea.internal.isKotlinDecompiledFile import org.jetbrains.kotlin.idea.util.ProjectRootsUtil class KotlinDefaultHighlightingSettingsProvider : DefaultHighlightingSettingProvider() { override fun getDefaultSetting(project: Project, file: VirtualFile): FileHighlightingSetting? { return when { ProjectRootsUtil.isLibraryFile(project, file) -> FileHighlightingSetting.SKIP_INSPECTION + file.isKotlinDecompiledFile -> FileHighlightingSetting.SKIP_HIGHLIGHTING else -> null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/internal/KotlinDecompilerAdapter.kt b/idea/src/org/jetbrains/kotlin/idea/internal/KotlinDecompilerAdapter.kt index 7632d8c57ee..a02c84b8256 100644 --- a/idea/src/org/jetbrains/kotlin/idea/internal/KotlinDecompilerAdapter.kt +++ b/idea/src/org/jetbrains/kotlin/idea/internal/KotlinDecompilerAdapter.kt @@ -11,6 +11,7 @@ import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.progress.Task import com.intellij.openapi.ui.Messages +import com.intellij.openapi.util.Key import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VfsUtil import com.intellij.openapi.vfs.VirtualFile @@ -18,6 +19,7 @@ import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.ex.dummy.DummyFileSystem import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.NotNullableUserDataProperty fun showDecompiledCode(sourceFile: KtFile) { ProgressManager.getInstance().run(KotlinBytecodeDecompilerTask(sourceFile)) @@ -44,11 +46,13 @@ class KotlinBytecodeDecompilerTask(val file: KtFile) : Task.Backgroundable(file. return@runWriteAction } - val root = getOrCreateDummyRoot() + val root: VirtualFile = getOrCreateDummyRoot() val decompiledFileName = FileUtil.getNameWithoutExtension(file.name) + ".decompiled.java" val result = DummyFileSystem.getInstance().createChildFile(null, root, decompiledFileName) VfsUtil.saveText(result, decompiledText) + result.isKotlinDecompiledFile = true + OpenFileDescriptor(file.project, result).navigate(true) } } @@ -58,6 +62,8 @@ class KotlinBytecodeDecompilerTask(val file: KtFile) : Task.Backgroundable(file. val KOTLIN_DECOMPILED_FOLDER = "kotlinDecompiled" val KOTLIN_DECOMPILED_ROOT = "dummy://$KOTLIN_DECOMPILED_FOLDER" +var VirtualFile.isKotlinDecompiledFile: Boolean by NotNullableUserDataProperty(Key.create("IS_KOTLIN_DECOMPILED_FILE"), false) + fun getOrCreateDummyRoot(): VirtualFile = VirtualFileManager.getInstance().refreshAndFindFileByUrl(KOTLIN_DECOMPILED_ROOT) ?: DummyFileSystem.getInstance().createRoot(KOTLIN_DECOMPILED_FOLDER)