diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinArtifact.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinArtifact.kt index 5f60f193823..a06c9b05926 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinArtifact.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinArtifact.kt @@ -22,7 +22,13 @@ interface KotlinNativeArtifact : KotlinArtifact { val modes: Set val isStatic: Boolean val linkerOptions: List + @Suppress("DEPRECATION") + @Deprecated( + message = "Replaced by compilerOptionsConfigure", + replaceWith = ReplaceWith("compilerOptionsConfigure") + ) val kotlinOptionsFn: KotlinCommonToolOptions.() -> Unit + val compilerOptionsConfigure: CompilerCommonToolOptions.() -> Unit val binaryOptions: Map } @@ -58,6 +64,7 @@ interface KotlinNativeArtifactConfig : KotlinArtifactConfig { fun modes(vararg modes: NativeBuildType) var isStatic: Boolean var linkerOptions: List + @Suppress("DEPRECATION") fun kotlinOptions(fn: Action) fun binaryOption(name: String, value: String) } diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index 352717f9c23..b541b5e259a 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -10,18 +10,40 @@ import org.gradle.api.Action import org.gradle.api.Task import org.gradle.api.tasks.Internal +@Deprecated( + message = "Replaced by KotlinCompilationTask", + replaceWith = ReplaceWith( + "KotlinCompilationTask", + "org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask" + ) +) +@Suppress("DEPRECATION") interface KotlinCompile : Task { + + @Deprecated( + message = "Replaced by compilerOptions input", + replaceWith = ReplaceWith("compilerOptions") + ) @get:Internal val kotlinOptions: T + @Deprecated( + message = "Replaced by compilerOptions { .. }", + replaceWith = ReplaceWith("compilerOptions(fn)") + ) fun kotlinOptions(fn: T.() -> Unit) { kotlinOptions.fn() } + @Deprecated( + message = "Replaced by compilerOptions(Action)", + replaceWith = ReplaceWith("compilerOptions(fn)") + ) fun kotlinOptions(fn: Action) { fn.execute(kotlinOptions) } + @Deprecated("Should be autogenerated by Gradle") fun kotlinOptions(fn: Closure<*>) { project.configure(kotlinOptions, fn) } diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/importWorkarounds.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/importWorkarounds.kt new file mode 100644 index 00000000000..996aec17c0f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/importWorkarounds.kt @@ -0,0 +1,18 @@ +/* + * 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. + */ + +/** + * Contains workarounds to suppress deprecated import without suppressing deprecation in the whole file. + */ +package org.jetbrains.kotlin.gradle.dsl + +@Suppress("DEPRECATION") +internal typealias KotlinCompileDeprecated = KotlinCompile + +@Suppress("DEPRECATION") +internal typealias KotlinJvmOptionsDeprecated = KotlinJvmOptions + +@Suppress("DEPRECATION") +internal typealias KotlinCommonOptionsDeprecated = KotlinCommonOptions diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/CinteropSettings.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/CinteropSettings.kt index 8f922c4e2a6..b793abbf6d5 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/CinteropSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/CinteropSettings.kt @@ -3,12 +3,14 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Action import org.gradle.api.Named import org.gradle.api.file.FileCollection -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData interface CInteropSettings : Named { @@ -22,7 +24,7 @@ interface CInteropSettings : Named { } // TODO: Provide an interface for native compilations. - val compilation: KotlinCompilationData + val compilation: KotlinCompilationData val dependencyConfigurationName: String var dependencyFiles: FileCollection diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/HasCompilerOptions.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/HasCompilerOptions.kt new file mode 100644 index 00000000000..af153cf9ebc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/HasCompilerOptions.kt @@ -0,0 +1,21 @@ +/* + * 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.gradle.plugin + +import org.gradle.api.Action +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions + +interface HasCompilerOptions { + val options: CO + + fun configure(configuration: CO.() -> Unit) { + configuration(options) + } + + fun configure(configuration: Action<@UnsafeVariance CO>) { + configuration.execute(options) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt index 4fac84e4d61..9fb59fc3224 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt @@ -3,6 +3,8 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Action @@ -12,8 +14,10 @@ import org.gradle.api.attributes.HasAttributes import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.FileCollection import org.gradle.api.tasks.TaskProvider -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions -import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated +import org.jetbrains.kotlin.gradle.dsl.KotlinCompileDeprecated +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import java.io.File interface KotlinCompilationOutput { @@ -24,7 +28,9 @@ interface KotlinCompilationOutput { val allOutputs: FileCollection } -interface KotlinCompilation : Named, HasAttributes, HasKotlinDependencies { +interface KotlinCompilation : Named, + HasAttributes, + HasKotlinDependencies { val target: KotlinTarget val compilationName: String @@ -51,14 +57,45 @@ interface KotlinCompilation : Named, HasAttributes, val compileKotlinTaskName: String - val compileKotlinTask: KotlinCompile + val compilerOptions: HasCompilerOptions<*> - val compileKotlinTaskProvider: TaskProvider> + @Deprecated( + message = "Accessing task instance directly is deprecated", + replaceWith = ReplaceWith("compileTaskProvider") + ) + val compileKotlinTask: KotlinCompileDeprecated + @Deprecated( + message = "Replaced with compileTaskProvider", + replaceWith = ReplaceWith("compileTaskProvider") + ) + val compileKotlinTaskProvider: TaskProvider> + + val compileTaskProvider: TaskProvider> + + @Deprecated( + message = "Replaced by compilerOptions", + replaceWith = ReplaceWith("compilerOptions.options") + ) val kotlinOptions: T - fun kotlinOptions(configure: T.() -> Unit) - fun kotlinOptions(configure: Action<@UnsafeVariance T>) = kotlinOptions { configure.execute(this) } + @Deprecated( + message = "Replaced by compilerOptions.configure { }", + replaceWith = ReplaceWith("compilerOptions.configure(configure)") + ) + fun kotlinOptions(configure: T.() -> Unit) { + @Suppress("DEPRECATION") + configure(kotlinOptions) + } + + @Deprecated( + message = "Replaced by compilerOptions(Action)", + replaceWith = ReplaceWith("compilerOptions.configure(configure)") + ) + fun kotlinOptions(configure: Action<@UnsafeVariance T>) { + @Suppress("DEPRECATION") + configure.execute(kotlinOptions) + } fun attributes(configure: AttributeContainer.() -> Unit) = attributes.configure() fun attributes(configure: Action) = attributes { configure.execute(this) } @@ -87,7 +124,7 @@ interface KotlinCompilation : Named, HasAttributes, get() = target.disambiguationClassifier + name } -interface KotlinCompilationToRunnableFiles : KotlinCompilation { +interface KotlinCompilationToRunnableFiles : KotlinCompilation { val runtimeDependencyConfigurationName: String var runtimeDependencyFiles: FileCollection @@ -96,9 +133,9 @@ interface KotlinCompilationToRunnableFiles : KotlinComp get() = super.relatedConfigurationNames + runtimeDependencyConfigurationName } -val KotlinCompilation.runtimeDependencyConfigurationName: String? +val KotlinCompilation.runtimeDependencyConfigurationName: String? get() = (this as? KotlinCompilationToRunnableFiles)?.runtimeDependencyConfigurationName -interface KotlinCompilationWithResources : KotlinCompilation { +interface KotlinCompilationWithResources : KotlinCompilation { val processResourcesTaskName: String } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmFactory.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmFactory.kt index e9db7082b3d..93daa9b1214 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinJvmFactory.kt @@ -2,14 +2,16 @@ * Copyright 2010-2021 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. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.file.FileCollection import org.gradle.api.provider.Provider import org.gradle.api.tasks.TaskProvider +import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions import org.jetbrains.kotlin.gradle.dsl.KaptExtensionConfig -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsDeprecated import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtensionConfig import org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs import org.jetbrains.kotlin.gradle.tasks.Kapt @@ -24,7 +26,13 @@ interface KotlinJvmFactory { val kotlinExtension: KotlinTopLevelExtensionConfig /** Creates instance of DSL object that should be used to configure JVM/android specific compilation. */ - fun createKotlinJvmOptions(): KotlinJvmOptions + @Deprecated( + message = "Replaced by compilerJvmOptions", + replaceWith = ReplaceWith("createCompilerJvmOptions()") + ) + fun createKotlinJvmOptions(): KotlinJvmOptionsDeprecated + + fun createCompilerJvmOptions(): CompilerJvmOptions /** Creates a Kotlin compile task. */ fun registerKotlinJvmCompileTask(taskName: String): TaskProvider diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt index 64c6b3e3335..4ae148f9e0a 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt @@ -3,6 +3,8 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Action @@ -14,7 +16,7 @@ import org.gradle.api.attributes.AttributeContainer import org.gradle.api.attributes.HasAttributes import org.gradle.api.component.SoftwareComponent import org.gradle.api.publish.maven.MavenPublication -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated interface KotlinTargetComponent : SoftwareComponent { val target: KotlinTarget @@ -32,7 +34,7 @@ interface KotlinTarget : Named, HasAttributes { val platformType: KotlinPlatformType - val compilations: NamedDomainObjectContainer> + val compilations: NamedDomainObjectContainer> val project: Project diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt index 554fcce027f..ab190dd1c22 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmVariantCompilationData.kt @@ -3,17 +3,19 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.project.model.LanguageSettings -interface GradleKpmVariantCompilationData : KotlinCompilationData { +interface GradleKpmVariantCompilationData : KotlinCompilationData { override val owner: GradleKpmVariant override val project: Project get() = owner.containingModule.project diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt index db802b47e1c..07b69a76516 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/KotlinCompilationData.kt @@ -3,17 +3,21 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated +import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.project.model.LanguageSettings -interface KotlinCompilationData { +interface KotlinCompilationData { val project: Project val owner: Any? @@ -33,8 +37,14 @@ interface KotlinCompilationData { val moduleName: String val ownModuleName: String + @Deprecated( + message = "Replaced with compilerOptions.options", + replaceWith = ReplaceWith("compilerOptions.options") + ) val kotlinOptions: T + val compilerOptions: HasCompilerOptions<*> + val friendPaths: Iterable } diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompilationTask.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompilationTask.kt new file mode 100644 index 00000000000..12d31c4889c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompilationTask.kt @@ -0,0 +1,24 @@ +/* + * 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.gradle.tasks + +import org.gradle.api.Action +import org.gradle.api.Task +import org.gradle.api.tasks.Nested +import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions + +interface KotlinCompilationTask : Task { + @get:Nested + val compilerOptions: CO + + fun compilerOptions(configure: CO.() -> Unit) { + configure(compilerOptions) + } + + fun compilerOptions(configure: Action) { + configure.execute(compilerOptions) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinTaskConfigs.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinTaskConfigs.kt index a4dcdd026fd..e575a36d0e7 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinTaskConfigs.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinTaskConfigs.kt @@ -15,8 +15,7 @@ import org.gradle.api.tasks.* import org.gradle.api.tasks.util.PatternFilterable import org.gradle.work.Incremental import org.gradle.work.NormalizeLineEndings -import org.jetbrains.kotlin.gradle.dsl.KotlinCompile -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.plugin.CompilerPluginConfig interface KotlinCompileTool : PatternFilterable, Task { @@ -77,11 +76,18 @@ interface BaseKotlinCompile : KotlinCompileTool { val pluginOptions: ListProperty } -interface KotlinJvmCompile : BaseKotlinCompile, KotlinCompile { +@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") +interface KotlinJvmCompile : BaseKotlinCompile, + KotlinCompileDeprecated, + KotlinCompilationTask { // JVM specific @get:Internal("Takes part in compiler args.") - val parentKotlinOptions: Property + @Deprecated( + message = "Configure compilerOptions directly", + replaceWith = ReplaceWith("compilerOptions") + ) + val parentKotlinOptions: Property } interface KaptGenerateStubs : KotlinJvmCompile {