diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/JetClsFile.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/JetClsFile.kt index 2d95436f4ba..b5a5025a8ba 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/JetClsFile.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/JetClsFile.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.decompiler.textBuilder.DecompiledText import org.jetbrains.kotlin.idea.decompiler.textBuilder.buildDecompiledText import org.jetbrains.kotlin.utils.concurrent.block.LockedClearableLazyValue -public class JetClsFile(provider: FileViewProvider) : KotlinClsFileBase(provider) { +public class JetClsFile(provider: KotlinClassFileViewProvider) : KotlinClsFileBase(provider) { protected override val decompiledText: LockedClearableLazyValue = LockedClearableLazyValue(Any()) { buildDecompiledText(getVirtualFile()) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinClsFileBase.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinClsFileBase.kt index 7b326885d03..7f1f500dd35 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinClsFileBase.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinClsFileBase.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.psi.JetDeclaration import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.utils.concurrent.block.LockedClearableLazyValue -public abstract class KotlinClsFileBase(provider: FileViewProvider) : JetFile(provider, true) { +public abstract class KotlinClsFileBase(val provider: KotlinClassFileViewProvider) : JetFile(provider, true) { protected abstract val decompiledText: LockedClearableLazyValue public fun getDeclarationForDescriptor(descriptor: DeclarationDescriptor): JetDeclaration? { @@ -67,6 +67,7 @@ public abstract class KotlinClsFileBase(provider: FileViewProvider) : JetFile(pr override fun onContentReload() { super.onContentReload() + provider.content.drop() decompiledText.drop() } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinJavascriptMetaFile.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinJavascriptMetaFile.kt index 8224a4b9071..078d80fbc5d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinJavascriptMetaFile.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/KotlinJavascriptMetaFile.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.decompiler.textBuilder.buildDecompiledTextFromJ import org.jetbrains.kotlin.idea.decompiler.textBuilder.DecompiledText import org.jetbrains.kotlin.utils.concurrent.block.LockedClearableLazyValue -public class KotlinJavascriptMetaFile(provider: FileViewProvider) : KotlinClsFileBase(provider) { +public class KotlinJavascriptMetaFile(provider: KotlinClassFileViewProvider) : KotlinClsFileBase(provider) { protected override val decompiledText: LockedClearableLazyValue = LockedClearableLazyValue(Any()) { buildDecompiledTextFromJsMetadata(getVirtualFile()) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/kotlinFileViewProviders.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/kotlinFileViewProviders.kt index 3ffbafa4439..eb3634c1c67 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/kotlinFileViewProviders.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/kotlinFileViewProviders.kt @@ -33,7 +33,21 @@ abstract class KotlinClassFileViewProvider( manager: PsiManager, file: VirtualFile, physical: Boolean) : SingleRootFileViewProvider(manager, file, physical, JetLanguage.INSTANCE) { - override fun getContents(): CharSequence = getPsi(JetLanguage.INSTANCE)?.getText() ?: "" + val content : LockedClearableLazyValue = LockedClearableLazyValue(Any()) { + val psiFile = createFile(manager.getProject(), file, JetFileType.INSTANCE) + val text = psiFile?.getText() ?: "" + + (psiFile as? PsiFileImpl)?.markInvalidated() + + text + } + + override fun createFile(project: Project, file: VirtualFile, fileType: FileType): PsiFile? { + // Workaround for KT-8344 + return super.createFile(project, file, fileType) + } + + override fun getContents() = content.get() } public class JetClassFileViewProvider(