KotlinFacetSettings: Serialize and deserialize additionalVisibleModuleNames
^KT-55145 Verification Pending
diff --git a/jps/jps-common/build.gradle.kts b/jps/jps-common/build.gradle.kts
index 861e183..7c2b02e 100644
--- a/jps/jps-common/build.gradle.kts
+++ b/jps/jps-common/build.gradle.kts
@@ -1,4 +1,3 @@
-
plugins {
kotlin("jvm")
id("jps-compatible")
@@ -30,6 +29,7 @@
testImplementation(project(":compiler:cli-common"))
testImplementation(jpsModelSerialization())
testImplementation(commonDependency("junit:junit"))
+ testImplementation(kotlin("test-junit"))
}
sourceSets {
diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt
index fbd7641..b703348 100644
--- a/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt
+++ b/jps/jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt
@@ -20,7 +20,6 @@
import org.jetbrains.kotlin.platform.*
import org.jetbrains.kotlin.platform.impl.FakeK2NativeCompilerArguments
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
-import org.jetbrains.kotlin.platform.isJs
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.platform.jvm.isJvm
@@ -138,6 +137,7 @@
this.targetPlatform = targetPlatform
readElementsList(element, "implements", "implement")?.let { implementedModuleNames = it }
readElementsList(element, "dependsOnModuleNames", "dependsOn")?.let { dependsOnModuleNames = it }
+ readElementsList(element, "additionalVisibleModuleNames", "friend")?.let { additionalVisibleModuleNames = it.toSet() }
element.getChild("externalSystemTestTasks")?.let {
val testRunTasks = it.getChildren("externalSystemTestTask")
.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
@@ -312,6 +312,7 @@
}
saveElementsList(element, implementedModuleNames, "implements", "implement")
saveElementsList(element, dependsOnModuleNames, "dependsOnModuleNames", "dependsOn")
+ saveElementsList(element, additionalVisibleModuleNames.toList(), "additionalVisibleModuleNames", "friend")
if (sourceSetNames.isNotEmpty()) {
element.addContent(
diff --git a/jps/jps-common/test/FacetSettingsSerializationTest.kt b/jps/jps-common/test/FacetSettingsSerializationTest.kt
new file mode 100644
index 0000000..e98a2dd
--- /dev/null
+++ b/jps/jps-common/test/FacetSettingsSerializationTest.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.arguments
+
+import org.jdom.Element
+import org.jetbrains.kotlin.config.KotlinFacetSettings
+import org.jetbrains.kotlin.config.deserializeFacetSettings
+import org.jetbrains.kotlin.config.serializeFacetSettings
+import org.junit.Test
+import kotlin.test.assertEquals
+
+class FacetSettingsSerializationTest {
+
+ @Test
+ fun `test - module dependencies`() {
+ val source = KotlinFacetSettings().apply {
+ implementedModuleNames = listOf("implementedModule1", "implementedModule2")
+ dependsOnModuleNames = listOf("dependsOnModule1", "dependsOnModule2")
+ additionalVisibleModuleNames = setOf("friend1", "friend2")
+ }
+
+ val deserialized = serializeAndDeserialize(source)
+ assertEquals(source.implementedModuleNames, deserialized.implementedModuleNames)
+ assertEquals(source.dependsOnModuleNames, deserialized.dependsOnModuleNames)
+ assertEquals(source.additionalVisibleModuleNames, deserialized.additionalVisibleModuleNames)
+ }
+
+ private fun serializeAndDeserialize(settings: KotlinFacetSettings): KotlinFacetSettings {
+ val element = Element("settings")
+ settings.serializeFacetSettings(element)
+ return deserializeFacetSettings(element)
+ }
+}