GradleBuildRoot: don't store references to virtual files

This commit is contained in:
Sergey Rostov
2020-05-08 01:57:50 +03:00
parent a97e9f641a
commit 037ea224a4
3 changed files with 4 additions and 7 deletions
@@ -46,7 +46,7 @@ sealed class GradleBuildRoot {
abstract val projectRoots: Collection<String>
private val dir: VirtualFile?
val dir: VirtualFile?
get() = LocalFileSystem.getInstance().findFileByPath(pathPrefix)
private lateinit var lastModifiedFiles: LastModifiedFiles
@@ -107,15 +107,13 @@ sealed class GradleBuildRoot {
*/
class Imported(
override val manager: GradleBuildRootsManager,
val dir: VirtualFile,
override val pathPrefix: String,
val javaHome: File?,
val data: GradleBuildRootData
) : Linked() {
val project: Project
get() = manager.project
override val pathPrefix: String = dir.path
override val projectRoots: Collection<String>
get() = data.projectRoots
@@ -202,7 +202,7 @@ class GradleBuildRootsManager(val project: Project) : ScriptingSupport() {
val mergedData = if (build.failed && root is GradleBuildRoot.Imported) merge(root.data, newData) else newData
val newSupport = tryCreateImportedRoot(build.workingDir) { mergedData } ?: return
GradleBuildRootDataSerializer.write(newSupport.dir, mergedData)
GradleBuildRootDataSerializer.write(newSupport.dir ?: return, mergedData)
add(newSupport)
@@ -335,7 +335,7 @@ class GradleBuildRootsManager(val project: Project) : ScriptingSupport() {
.getExecutionSettings<GradleExecutionSettings>(project, externalProjectPath, GradleConstants.SYSTEM_ID)
.javaHome?.let { File(it) }
return GradleBuildRoot.Imported(this, buildRoot, javaHome, data)
return GradleBuildRoot.Imported(this, externalProjectPath, javaHome, data)
}
private fun add(newRoot: GradleBuildRoot.Linked) {
-1
View File
@@ -14,7 +14,6 @@
<extensions defaultExtensionNs="org.jetbrains.kotlin.scripting.idea">
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptListener"/>
<listener order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptListener"/>
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>