[KPM] Only provide access to KotlinExternalModelContainer through ExternalVariantApi
KT-51262 KT-51220
This commit is contained in:
committed by
Space
parent
f1655e5f4e
commit
ee6957c9a0
-4
@@ -8,10 +8,6 @@ package org.jetbrains.kotlin.gradle.kpm
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
||||
import java.io.Serializable
|
||||
|
||||
interface KotlinHasExternalModel {
|
||||
val external: KotlinExternalModelContainer
|
||||
}
|
||||
|
||||
abstract class KotlinExternalModelContainer internal constructor() : Serializable {
|
||||
abstract operator fun <T : Any> contains(key: KotlinExternalModelKey<T>): Boolean
|
||||
abstract operator fun <T : Any> get(key: KotlinExternalModelKey<T>): T?
|
||||
|
||||
@@ -6,9 +6,9 @@ plugins {
|
||||
|
||||
dependencies {
|
||||
implementation(gradleKotlinDsl())
|
||||
compileOnly("com.android.tools.build:gradle:7.0.0")
|
||||
compileOnly(project(":kotlin-gradle-plugin"))
|
||||
compileOnly(project(":kotlin-gradle-plugin-idea"))
|
||||
compileOnly("com.android.tools.build:gradle:7.0.0")
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
|
||||
+2
-1
@@ -8,12 +8,13 @@
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelKey
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelSerializer
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
|
||||
|
||||
internal val androidDslKey = KotlinExternalModelKey<AndroidDsl>()
|
||||
internal val androidDslKey = KotlinExternalModelKey<AndroidDsl>(KotlinExternalModelSerializer.serializable())
|
||||
|
||||
class AndroidDsl : Serializable {
|
||||
var compileSdk = 0
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ package org.jetbrains.kotlin.gradle.android
|
||||
import com.android.build.gradle.AppExtension
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import org.gradle.kotlin.dsl.findByType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.project
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
|
||||
fun KotlinPm20ProjectExtension.android() {
|
||||
|
||||
+3
-2
@@ -15,8 +15,9 @@ import com.android.build.gradle.internal.publishing.AndroidArtifacts
|
||||
import org.gradle.api.attributes.java.TargetJvmEnvironment
|
||||
import org.gradle.api.attributes.java.TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE
|
||||
import org.gradle.kotlin.dsl.named
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.createExternalJvmVariant
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.createExternalJvmVariant
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.external
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
|
||||
fun KotlinGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
|
||||
@@ -29,7 +29,7 @@ pill {
|
||||
kotlin.sourceSets.all {
|
||||
languageSettings.optIn("kotlin.RequiresOptIn")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalVariantApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.plugin.mpp.external.AdvancedExternalVariantApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AdvancedKotlinGradlePluginApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi")
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ dependencies {
|
||||
compileOnly(gradleKotlinDsl())
|
||||
api(project(":kotlin-gradle-plugin-api"))
|
||||
api(project(":kotlin-gradle-plugin-model"))
|
||||
implementation(project(":kotlin-gradle-plugin-idea"))
|
||||
compileOnly(project(":compiler"))
|
||||
compileOnly(project(":compiler:incremental-compilation-impl"))
|
||||
compileOnly(project(":daemon-common"))
|
||||
@@ -57,7 +58,6 @@ dependencies {
|
||||
embedded(project(":kotlin-gradle-statistics"))
|
||||
compileOnly(project(":kotlin-gradle-build-metrics"))
|
||||
embedded(project(":kotlin-gradle-build-metrics"))
|
||||
implementation(project(":kotlin-gradle-plugin-idea"))
|
||||
|
||||
implementation(commonDependency("com.google.code.gson:gson"))
|
||||
implementation(commonDependency("com.google.guava:guava"))
|
||||
|
||||
+6
-5
@@ -3,19 +3,16 @@
|
||||
* 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.gradle.plugin.mpp.external
|
||||
package org.jetbrains.kotlin.gradle.kpm.external
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinMutableExternalModelContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
import kotlin.annotation.AnnotationTarget.*
|
||||
|
||||
@RequiresOptIn("API is intended to build external Kotlin Targets.")
|
||||
annotation class ExternalVariantApi
|
||||
|
||||
@RequiresOptIn("API is intended to build external Kotlin Targets *and* is marked as advanced. Consultation with the Kotlin Team advised.")
|
||||
annotation class AdvancedExternalVariantApi
|
||||
|
||||
@ExternalVariantApi
|
||||
val KotlinTopLevelExtension.project: Project
|
||||
get() = this.project
|
||||
@@ -33,3 +30,7 @@ fun KotlinGradleModule.createExternalJvmVariant(
|
||||
@ExternalVariantApi
|
||||
val KotlinGradleVariantInternal.compilationData
|
||||
get() = this.compilationData
|
||||
|
||||
@ExternalVariantApi
|
||||
val KotlinGradleFragment.external: KotlinMutableExternalModelContainer
|
||||
get() = (this as KotlinGradleFragmentInternal).external
|
||||
+2
-2
@@ -6,8 +6,8 @@
|
||||
package org.jetbrains.kotlin.gradle.kpm.idea
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelContainer
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinHasExternalModel
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragmentInternal
|
||||
|
||||
internal fun KotlinGradleFragment.toIdeaKotlinFragment(
|
||||
cache: MutableMap<KotlinGradleFragment, IdeaKotlinFragment> = mutableMapOf()
|
||||
@@ -24,7 +24,7 @@ internal fun KotlinGradleFragment.toIdeaKotlinFragment(
|
||||
IdeaKotlinSourceDirectoryImpl(file)
|
||||
},
|
||||
resourceDirectories = emptyList(),
|
||||
external = (this as? KotlinHasExternalModel)?.external ?: KotlinExternalModelContainer.Empty
|
||||
external = (this as? KotlinGradleFragmentInternal)?.external ?: KotlinExternalModelContainer.Empty
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-11
@@ -3,15 +3,7 @@
|
||||
* 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.gradle.plugin.mpp.external
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import kotlin.reflect.KType
|
||||
|
||||
|
||||
interface ExternalModelContainer {
|
||||
|
||||
}
|
||||
|
||||
interface MutableExternalModelContainer {
|
||||
|
||||
}
|
||||
@RequiresOptIn("API is marked as advanced. Consultation with the Kotlin Team advised.")
|
||||
annotation class AdvancedKotlinGradlePluginApi
|
||||
+2
-4
@@ -13,7 +13,6 @@ import org.gradle.api.provider.Provider
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelContainer
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinHasExternalModel
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinMutableExternalModelContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler
|
||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||
@@ -35,8 +34,7 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
final override val fragmentName: String,
|
||||
dependencyConfigurations: KotlinFragmentDependencyConfigurations
|
||||
) : KotlinGradleFragment,
|
||||
KotlinFragmentDependencyConfigurations by dependencyConfigurations,
|
||||
KotlinHasExternalModel {
|
||||
KotlinFragmentDependencyConfigurations by dependencyConfigurations {
|
||||
|
||||
final override fun getName(): String = fragmentName
|
||||
|
||||
@@ -48,7 +46,7 @@ open class KotlinGradleFragmentInternal @Inject constructor(
|
||||
// FIXME check for consistency
|
||||
override val languageSettings: LanguageSettingsBuilder = DefaultLanguageSettingsBuilder()
|
||||
|
||||
override val external: KotlinMutableExternalModelContainer = KotlinExternalModelContainer.mutable()
|
||||
internal val external: KotlinMutableExternalModelContainer = KotlinExternalModelContainer.mutable()
|
||||
|
||||
override fun refines(other: KotlinGradleFragment) {
|
||||
checkCanRefine(other)
|
||||
|
||||
+2
-3
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.AdvancedExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
|
||||
|
||||
/* Internal abbreviation */
|
||||
@@ -18,7 +17,7 @@ data class KotlinGradleFragmentConfigurationDefinition<in T : KotlinGradleFragme
|
||||
val attributes: KotlinGradleFragmentConfigurationAttributes<T> = KotlinGradleFragmentConfigurationAttributes.None,
|
||||
val artifacts: KotlinGradleFragmentConfigurationArtifacts<T> = KotlinGradleFragmentConfigurationArtifacts.None,
|
||||
val relations: KotlinGradleFragmentConfigurationRelation = KotlinGradleFragmentConfigurationRelation.None,
|
||||
@property:AdvancedExternalVariantApi
|
||||
@property:AdvancedKotlinGradlePluginApi
|
||||
val capabilities: KotlinGradleFragmentConfigurationCapabilities<T> = KotlinGradleFragmentConfigurationCapabilities.None,
|
||||
)
|
||||
|
||||
@@ -50,6 +49,6 @@ operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinit
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentConfigurationRelation):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(relations = relations + other)
|
||||
|
||||
@AdvancedExternalVariantApi
|
||||
@AdvancedKotlinGradlePluginApi
|
||||
operator fun <T : KotlinGradleFragment> KotlinGradleFragmentConfigurationDefinition<T>.plus(other: FragmentCapabilities<T>):
|
||||
KotlinGradleFragmentConfigurationDefinition<T> = copy(capabilities = capabilities + other)
|
||||
|
||||
Reference in New Issue
Block a user