diff --git a/libraries/tools/kotlin-gradle-plugin-idea/ReadMe.md b/libraries/tools/kotlin-gradle-plugin-idea/ReadMe.md index d0a4dfb9a3d..f8bb4c0aa8e 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/ReadMe.md +++ b/libraries/tools/kotlin-gradle-plugin-idea/ReadMe.md @@ -1,13 +1,24 @@ # Kotlin Gradle Plugin Models shared between IDEA import and KGP -The classes defined in this module will be available inside the Kotlin Gradle Plugin (KGP) + +The classes defined in this module will be available inside the Kotlin Gradle Plugin (KGP) as well as in the IDE import (GradleProject). -## Binary Compatibility: +## Binary Compatibility: + Binary compatibility can be tested by `./gradlew :tools:binary-compatibility-validator:clean :tools:binary-compatibility-validator:test` Binary incompatible changes have to go through a proper deprecation cycle after releases ### Unstable APIs / KotlinGradlePluginApi -Some APIs are marked with 'KotlinGradlePluginApi' which means, that those are not kept binary compatible and are considered 'unstable' -from the IDEA perspective. Typically constructors for models are marked like this + +Some APIs are marked with 'KotlinGradlePluginApi' which means, that those are not kept binary compatible and are considered 'unstable' from +the IDEA perspective. Typically constructors for models are marked like this + +Non Stable by default: + +- data class componentX methods + +Kept Stable + +- data class .copy methods 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 d50c267b47d..ed5b5a545cc 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 @@ -16,7 +16,7 @@ interface IdeaKotlinFragment : Serializable { val resourceDirectories: Collection } -class IdeaKotlinFragmentImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinFragmentImpl @KotlinGradlePluginApi constructor( override val name: String, override val languageSettings: IdeaKotlinLanguageSettings?, override val dependencies: Collection, diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency.kt index 781f1aa8ffe..18fc69085a6 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency.kt @@ -5,4 +5,6 @@ package org.jetbrains.kotlin.gradle.kpm.idea -interface IdeaKotlinFragmentDependency +import java.io.Serializable + +interface IdeaKotlinFragmentDependency : Serializable 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 13565ce47bd..4ff64de2fb1 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 @@ -6,8 +6,9 @@ package org.jetbrains.kotlin.gradle.kpm.idea import java.io.File +import java.io.Serializable -interface IdeaKotlinLanguageSettings { +interface IdeaKotlinLanguageSettings : Serializable { val languageVersion: String? val apiVersion: String? val isProgressiveMode: Boolean @@ -18,7 +19,7 @@ interface IdeaKotlinLanguageSettings { val freeCompilerArgs: Collection } -class IdeaKotlinLanguageSettingsImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinLanguageSettingsImpl @KotlinGradlePluginApi constructor( override val languageVersion: String?, override val apiVersion: String?, override 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 12e50601a99..c514b2cdf35 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 @@ -12,7 +12,7 @@ interface IdeaKotlinModule : Serializable { val fragments: Collection } -class IdeaKotlinModuleImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinModuleImpl @KotlinGradlePluginApi constructor( override val moduleIdentifier: IdeaKotlinModuleIdentifier, override val fragments: Collection ) : IdeaKotlinModule diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleIdentifier.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleIdentifier.kt index 3d6c41f1422..478c857f435 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleIdentifier.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleIdentifier.kt @@ -21,13 +21,13 @@ interface IdeaKotlinMavenModuleIdentifier : IdeaKotlinModuleIdentifier { val name: String } -class IdeaKotlinLocalModuleIdentifierImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinLocalModuleIdentifierImpl @KotlinGradlePluginApi constructor( override val moduleClassifier: String?, override val buildId: String, override val projectId: String ) : IdeaKotlinLocalModuleIdentifier -class IdeaKotlinMavenModuleIdentifierImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinMavenModuleIdentifierImpl @KotlinGradlePluginApi constructor( override val moduleClassifier: String?, override val group: String, override val name: 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 e55786f90f3..3f88959d068 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 @@ -15,7 +15,7 @@ interface IdeaKotlinProjectModel : Serializable { val modules: List } -class IdeaKotlinProjectModelImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinProjectModelImpl @KotlinGradlePluginApi constructor( override val coreLibrariesVersion: String, override val explicitApiModeCliOption: String?, override val kotlinNativeHome: File, 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 612650321df..4af1e573fcf 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 @@ -12,6 +12,6 @@ interface IdeaKotlinResourceDirectory : Serializable { val file: File } -class IdeaKotlinResourceDirectoryImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinResourceDirectoryImpl @KotlinGradlePluginApi constructor( override val file: File ) : IdeaKotlinResourceDirectory 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 c68a1617de1..e163cfff10c 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 @@ -12,6 +12,6 @@ interface IdeaKotlinSourceDirectory : Serializable { val file: File } -class IdeaKotlinSourceDirectoryImpl @KotlinGradlePluginApi constructor( +data class IdeaKotlinSourceDirectoryImpl @KotlinGradlePluginApi constructor( override val file: File, ) : IdeaKotlinSourceDirectory