From d02b89a7a0cb0c23eee892471fbb6be23d4ce347 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 14 Apr 2016 21:13:57 +0300 Subject: [PATCH] Make code fragments files non-physical with event system disabled As a side effect it will disable write checks for fragments files This allows completion work without write action. Inspired by Java fragment files --- .../frontend/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt index c06a3b6c24b..4273c39bdb2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtCodeFragment.kt @@ -53,6 +53,7 @@ abstract class KtCodeFragment( private var thisType: PsiType? = null private var superType: PsiType? = null private var exceptionHandler: JavaCodeFragment.ExceptionHandler? = null + private var isPhysical = true abstract fun getContentElement(): KtElement? @@ -62,7 +63,7 @@ abstract class KtCodeFragment( override fun getForcedResolveScope() = resolveScope - override fun isPhysical() = true + override fun isPhysical() = isPhysical override fun isValid() = true @@ -72,9 +73,10 @@ abstract class KtCodeFragment( override fun clone(): KtCodeFragment { val clone = cloneImpl(calcTreeElement().clone() as FileElement) as KtCodeFragment + clone.isPhysical = false clone.originalFile = this clone.imports = imports - clone.viewProvider = SingleRootFileViewProvider(PsiManager.getInstance(_project), LightVirtualFile(name, KotlinFileType.INSTANCE, text), true) + clone.viewProvider = SingleRootFileViewProvider(PsiManager.getInstance(_project), LightVirtualFile(name, KotlinFileType.INSTANCE, text), false) clone.viewProvider.forceCachedPsi(clone) return clone }