From 03cf978b77ae35cf635d4f440e14d357c5c2b542 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Wed, 16 Mar 2022 10:51:51 +0100 Subject: [PATCH] [KPM] Consistently seal interfaces in :kotlin-gradle-plugin-idea KT-51386 --- .../gradle/kpm/idea/IdeaKotlinCompilationOutput.kt | 3 ++- .../kotlin/gradle/kpm/idea/IdeaKotlinFragment.kt | 2 +- .../gradle/kpm/idea/IdeaKotlinLanguageSettings.kt | 2 +- .../kotlin/gradle/kpm/idea/IdeaKotlinModule.kt | 2 +- .../gradle/kpm/idea/IdeaKotlinModuleCoordinates.kt | 2 +- .../kotlin/gradle/kpm/idea/IdeaKotlinProjectModel.kt | 2 +- .../gradle/kpm/idea/IdeaKotlinResourceDirectory.kt | 2 +- .../gradle/kpm/idea/IdeaKotlinSourceDirectory.kt | 2 +- .../kotlin/gradle/kpm/idea/IdeaKotlinVariant.kt | 2 +- .../kpm/idea/IdeaKotlinProjectModelObjectGraphTest.kt | 10 ++++++++++ 10 files changed, 20 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput.kt index 7f42e8590f1..54e2c6d63dd 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File import java.io.Serializable -interface IdeaKotlinCompilationOutput : Serializable { +sealed interface IdeaKotlinCompilationOutput : Serializable { val classesDirs: Set val resourcesDir: File? } @@ -18,6 +18,7 @@ data class IdeaKotlinCompilationOutputImpl( override val classesDirs: Set, override val resourcesDir: File? ) : IdeaKotlinCompilationOutput { + @InternalKotlinGradlePluginApi companion object { const val serialVersionUID = 0L diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment.kt index 1b93033d7b9..dc624576aa1 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelContainer import java.io.Serializable -interface IdeaKotlinFragment : Serializable { +sealed interface IdeaKotlinFragment : Serializable { val coordinates: IdeaKotlinFragmentCoordinates val platforms: Set val languageSettings: IdeaKotlinLanguageSettings? diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings.kt index c5b78f090cf..6e1c8e374af 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File import java.io.Serializable -interface IdeaKotlinLanguageSettings : Serializable { +sealed interface IdeaKotlinLanguageSettings : Serializable { val languageVersion: String? val apiVersion: String? val isProgressiveMode: Boolean diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule.kt index f05cdea4c59..5385b2465da 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.Serializable -interface IdeaKotlinModule : Serializable { +sealed interface IdeaKotlinModule : Serializable { val coordinates: IdeaKotlinModuleCoordinates val fragments: List } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates.kt index 92143279fec..1e005d643a4 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.Serializable -interface IdeaKotlinModuleCoordinates : Serializable { +sealed interface IdeaKotlinModuleCoordinates : Serializable { val buildId: String val projectPath: String val projectName: String diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModel.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModel.kt index 4362269b345..3ff3cdf622e 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModel.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModel.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File import java.io.Serializable -interface IdeaKotlinProjectModel : Serializable { +sealed interface IdeaKotlinProjectModel : Serializable { val gradlePluginVersion: String val coreLibrariesVersion: String val explicitApiModeCliOption: String? diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResourceDirectory.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResourceDirectory.kt index f4179793f94..a7d7dfe794d 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResourceDirectory.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResourceDirectory.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File import java.io.Serializable -interface IdeaKotlinResourceDirectory : Serializable { +sealed interface IdeaKotlinResourceDirectory : Serializable { val file: File } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourceDirectory.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourceDirectory.kt index d174488fa6b..e62a2612b24 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourceDirectory.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourceDirectory.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File import java.io.Serializable -interface IdeaKotlinSourceDirectory : Serializable { +sealed interface IdeaKotlinSourceDirectory : Serializable { val file: File } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinVariant.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinVariant.kt index bb823a1e65c..16861d419b4 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinVariant.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinVariant.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.Serializable -interface IdeaKotlinVariant : IdeaKotlinFragment, Serializable { +sealed interface IdeaKotlinVariant : IdeaKotlinFragment, Serializable { val platform: IdeaKotlinPlatform val variantAttributes: Map val compilationOutputs: IdeaKotlinCompilationOutput diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelObjectGraphTest.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelObjectGraphTest.kt index 1993d755680..ab706c71421 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelObjectGraphTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModelObjectGraphTest.kt @@ -31,6 +31,16 @@ class IdeaKotlinProjectModelObjectGraphTest(private val node: KClass<*>, @Suppre ) } + @Test + fun `test - node is sealed`() { + if (node.java.isInterface) { + assertTrue( + node.isSealed, + "Expected $node to be sealed interface" + ) + } + } + @Test fun `test - node implementations contain serialVersionUID`() { if (!node.java.isInterface && !Modifier.isAbstract(node.java.modifiers)) {