From c945a53eec0a249fbdb56efb37f53d80650aa098 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 18 Mar 2015 13:26:26 +0300 Subject: [PATCH] Move AndroidPsiTreeChangePreprocessor to android-idea-plugin module --- build.xml | 1 - .../android-compiler-plugin.iml | 1 - .../src/AndroidComponentRegistrar.kt | 2 -- .../lang/resolve/android/AndroidUIXmlProcessor.kt | 10 ++-------- .../resolve/android/CliAndroidUIXmlProcessor.kt | 9 +++++++-- .../lang/resolve/android/test/CompilerTestUtils.kt | 2 -- plugins/android-idea-plugin/src/META-INF/plugin.xml | 2 +- .../android/AndroidPsiTreeChangePreprocessor.kt | 13 ++++++------- .../plugin/android/IDEAndroidUIXmlProcessor.kt | 10 +++++++++- 9 files changed, 25 insertions(+), 25 deletions(-) rename plugins/{android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve => android-idea-plugin/src/org/jetbrains/kotlin/plugin}/android/AndroidPsiTreeChangePreprocessor.kt (87%) diff --git a/build.xml b/build.xml index 3f8ce0a9c04..67b68ebcb63 100644 --- a/build.xml +++ b/build.xml @@ -681,7 +681,6 @@ - diff --git a/plugins/android-compiler-plugin/android-compiler-plugin.iml b/plugins/android-compiler-plugin/android-compiler-plugin.iml index e7ad5d837a6..c2670d51145 100644 --- a/plugins/android-compiler-plugin/android-compiler-plugin.iml +++ b/plugins/android-compiler-plugin/android-compiler-plugin.iml @@ -19,6 +19,5 @@ - \ No newline at end of file diff --git a/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt b/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt index 20b868e826b..7f653601b08 100644 --- a/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt +++ b/plugins/android-compiler-plugin/src/AndroidComponentRegistrar.kt @@ -80,8 +80,6 @@ public class AndroidComponentRegistrar : ComponentRegistrar { ExternalDeclarationsProvider.registerExtension(project, CliAndroidDeclarationsProvider(project)) ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegenExtension()) - Extensions.getArea(project).getExtensionPoint( - PsiTreeChangePreprocessor.EP_NAME).registerExtension(AndroidPsiTreeChangePreprocessor()) } } } \ No newline at end of file diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt index 6887dc3680e..255cdd7cd43 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt @@ -62,13 +62,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) { public abstract val resourceManager: AndroidResourceManager - public abstract val psiTreeChangePreprocessor: PsiTreeChangePreprocessor - - private val cachedSources: CachedValue> by Delegates.lazy { - cachedValue { - Result.create(parse(), psiTreeChangePreprocessor) - } - } + protected abstract val cachedSources: CachedValue> private val cachedJetFiles: CachedValue> by Delegates.lazy { cachedValue { @@ -151,7 +145,7 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) { private fun renderClearCacheFunction(receiver: String) = "public fun $receiver.${AndroidConst.CLEAR_FUNCTION_NAME}() {}\n" - private fun cachedValue(result: () -> CachedValueProvider.Result): CachedValue { + protected fun cachedValue(result: () -> CachedValueProvider.Result): CachedValue { return CachedValuesManager.getManager(project).createCachedValue(result, false) } diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/CliAndroidUIXmlProcessor.kt b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/CliAndroidUIXmlProcessor.kt index 784e4182a14..2b1733a8825 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/CliAndroidUIXmlProcessor.kt +++ b/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/CliAndroidUIXmlProcessor.kt @@ -23,6 +23,9 @@ import java.io.ByteArrayInputStream import kotlin.properties.Delegates import com.intellij.psi.impl.* import com.intellij.openapi.components.* +import com.intellij.openapi.util.ModificationTracker +import com.intellij.psi.util.CachedValue +import com.intellij.psi.util.CachedValueProvider.Result public class CliAndroidUIXmlProcessor( project: Project, @@ -34,8 +37,10 @@ public class CliAndroidUIXmlProcessor( CliAndroidResourceManager(project, manifestPath, mainResDirectory) } - override val psiTreeChangePreprocessor: PsiTreeChangePreprocessor by Delegates.lazy { - project.getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor } + override val cachedSources: CachedValue> by Delegates.lazy { + cachedValue { + Result.create(parse(), ModificationTracker.NEVER_CHANGED) + } } override fun parseSingleFile(file: PsiFile): List { diff --git a/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt b/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt index f71d789ef34..32b552179bb 100644 --- a/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt +++ b/plugins/android-compiler-plugin/tests/org/jetbrains/kotlin/lang/resolve/android/test/CompilerTestUtils.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles -import org.jetbrains.kotlin.lang.resolve.android.AndroidPsiTreeChangePreprocessor import org.jetbrains.kotlin.lang.resolve.android.CliAndroidUIXmlProcessor private class AndroidTestExternalDeclarationsProvider( @@ -54,6 +53,5 @@ fun UsefulTestCase.createAndroidTestEnvironment( val project = myEnvironment.getProject() ExternalDeclarationsProvider.registerExtension(project, AndroidTestExternalDeclarationsProvider(project, resPath, manifestPath)) ExpressionCodegenExtension.registerExtension(project, AndroidExpressionCodegenExtension()) - Extensions.getArea(project).getExtensionPoint(PsiTreeChangePreprocessor.EP_NAME).registerExtension(AndroidPsiTreeChangePreprocessor()) return myEnvironment } diff --git a/plugins/android-idea-plugin/src/META-INF/plugin.xml b/plugins/android-idea-plugin/src/META-INF/plugin.xml index de5cbff9256..f8f53495796 100644 --- a/plugins/android-idea-plugin/src/META-INF/plugin.xml +++ b/plugins/android-idea-plugin/src/META-INF/plugin.xml @@ -18,7 +18,7 @@ serviceImplementation="org.jetbrains.kotlin.plugin.android.IDEAndroidResourceManager"/> - + diff --git a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidPsiTreeChangePreprocessor.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt similarity index 87% rename from plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidPsiTreeChangePreprocessor.kt rename to plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt index 9b6d37d3fab..e00e6bed986 100644 --- a/plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidPsiTreeChangePreprocessor.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/AndroidPsiTreeChangePreprocessor.kt @@ -14,16 +14,15 @@ * limitations under the License. */ -package org.jetbrains.kotlin.lang.resolve.android +package org.jetbrains.kotlin.plugin.android import com.intellij.ide.highlighter.XmlFileType -import com.intellij.openapi.components.ServiceManager -import com.intellij.psi.impl.* -import com.intellij.openapi.util.* -import com.intellij.openapi.roots.* -import com.intellij.openapi.module.* -import com.intellij.openapi.project.Project +import com.intellij.openapi.roots.ProjectRootManager +import com.intellij.openapi.util.SimpleModificationTracker import com.intellij.psi.PsiFile +import com.intellij.psi.impl.PsiTreeChangeEventImpl +import com.intellij.psi.impl.PsiTreeChangePreprocessor +import org.jetbrains.kotlin.lang.resolve.android.AndroidResourceManager public class AndroidPsiTreeChangePreprocessor : PsiTreeChangePreprocessor, SimpleModificationTracker() { diff --git a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidUIXmlProcessor.kt b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidUIXmlProcessor.kt index 794b4d72660..e97a194d6f1 100644 --- a/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidUIXmlProcessor.kt +++ b/plugins/android-idea-plugin/src/org/jetbrains/kotlin/plugin/android/IDEAndroidUIXmlProcessor.kt @@ -24,15 +24,23 @@ import org.jetbrains.kotlin.plugin.android.AndroidXmlVisitor import com.intellij.psi.impl.* import kotlin.properties.* import org.jetbrains.kotlin.lang.resolve.android.* +import com.intellij.psi.util.CachedValue +import com.intellij.psi.util.CachedValueProvider.Result class IDEAndroidUIXmlProcessor(val module: Module) : AndroidUIXmlProcessor(module.getProject()) { override val resourceManager: IDEAndroidResourceManager = IDEAndroidResourceManager(module) - override val psiTreeChangePreprocessor by Delegates.lazy { + private val psiTreeChangePreprocessor by Delegates.lazy { module.getProject().getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor } } + override val cachedSources: CachedValue> by Delegates.lazy { + cachedValue { + Result.create(parse(), psiTreeChangePreprocessor) + } + } + override fun parseSingleFile(file: PsiFile): List { val widgets = arrayListOf() file.accept(AndroidXmlVisitor({ id, wClass, valueElement ->