diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml
index 7bc2db2a438d..bf68ad239e3b 100644
--- a/plugins/groovy/src/META-INF/plugin.xml
+++ b/plugins/groovy/src/META-INF/plugin.xml
@@ -1324,6 +1324,8 @@
+
+
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/BundledGroovyClassFinder.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/BundledGroovyClassFinder.kt
index c6eee257ee58..9dbbde4efdd4 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/BundledGroovyClassFinder.kt
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/BundledGroovyClassFinder.kt
@@ -9,7 +9,7 @@ import org.jetbrains.plugins.groovy.GroovyFileType
class BundledGroovyClassFinder(project: Project) : NonClasspathClassFinder(project, GroovyFileType.DEFAULT_EXTENSION) {
override fun calcClassRoots(): List {
- val root = bundledGroovyJarRoot ?: return emptyList()
+ val root = bundledGroovyJarRoot.value.get() ?: return emptyList()
return listOf(root)
}
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/bundledGroovy.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/bundledGroovy.kt
index ef7ad690ed5e..7b2438092854 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/bundledGroovy.kt
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/bundled/bundledGroovy.kt
@@ -5,11 +5,14 @@ package org.jetbrains.plugins.groovy.bundled
import com.intellij.openapi.application.PathManager
import com.intellij.openapi.project.Project
+import com.intellij.openapi.util.ClearableLazyValue
import com.intellij.openapi.util.NlsSafe
+import com.intellij.openapi.util.Ref
import com.intellij.openapi.util.io.JarUtil.getJarAttribute
import com.intellij.openapi.vfs.JarFileSystem
import com.intellij.openapi.vfs.VfsUtil
import com.intellij.openapi.vfs.VirtualFile
+import com.intellij.openapi.vfs.newvfs.persistent.PersistentFsConnectionListener
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.GlobalSearchScopesCore
import groovy.lang.GroovyObject
@@ -28,7 +31,7 @@ private fun doGetBundledGroovyFile(): File {
return File(jarPath)
}
-val bundledGroovyJarRoot: VirtualFile? by lazy(::doGetBundledGroovyRoot)
+val bundledGroovyJarRoot: ClearableLazyValue[> = ClearableLazyValue.create { Ref.create(doGetBundledGroovyRoot()) }
private fun doGetBundledGroovyRoot(): VirtualFile? {
val jar = bundledGroovyFile
@@ -37,6 +40,12 @@ private fun doGetBundledGroovyRoot(): VirtualFile? {
}
fun createBundledGroovyScope(project: Project): GlobalSearchScope? {
- val root = bundledGroovyJarRoot ?: return null
+ val root = bundledGroovyJarRoot.value.get() ?: return null
return GlobalSearchScopesCore.directoryScope(project, root, true)
}
+
+internal class BundledGroovyPersistentFsConnectionListener: PersistentFsConnectionListener {
+ override fun beforeConnectionClosed() {
+ bundledGroovyJarRoot.drop()
+ }
+}
]