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 ->