[MPP] Fix warning reports for subprojects
Properly report warnings for projects that don't apply multiplatform plugin in the root project, but declare the obsolete properties KT-55891
This commit is contained in:
committed by
Space Team
parent
b0c360b1b6
commit
a03db78ed2
+5
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.mpp
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
import kotlin.io.path.appendText
|
||||
import kotlin.io.path.writeText
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
@@ -27,6 +28,10 @@ class MppDeprecatedPropertiesIt : KGPBaseTest() {
|
||||
)
|
||||
checkDeprecations(isDeprecationExpected = true)
|
||||
|
||||
// remove the MPP plugin from the top-level project and check the warnings are still reported in subproject
|
||||
this.buildGradleKts.writeText("")
|
||||
checkDeprecations(isDeprecationExpected = true)
|
||||
|
||||
this.gradleProperties.appendText("kotlin.mpp.deprecatedProperties.nowarn=true${System.lineSeparator()}")
|
||||
checkDeprecations(isDeprecationExpected = false)
|
||||
}
|
||||
|
||||
+8
-2
@@ -38,12 +38,13 @@ internal fun checkAndReportDeprecatedNativeTargets(project: Project) {
|
||||
* Warnings have to be reported only for successfully evaluated projects without errors.
|
||||
*/
|
||||
internal fun checkAndReportDeprecatedMppProperties(project: Project) {
|
||||
if (project !== project.rootProject) return
|
||||
|
||||
val projectProperties = project.kotlinPropertiesProvider
|
||||
if (projectProperties.ignoreHmppDeprecationWarnings == true) return
|
||||
|
||||
val warnings = deprecatedMppProperties.mapNotNull { propertyName ->
|
||||
if (propertyName in propertiesSetByPlugin && projectProperties.mpp13XFlagsSetByPlugin)
|
||||
return@mapNotNull null
|
||||
|
||||
@OptIn(UnsafeApi::class)
|
||||
projectProperties.property(propertyName)?.let { getMppDeprecationWarningMessageForProperty(propertyName) }
|
||||
}
|
||||
@@ -65,6 +66,11 @@ internal val deprecatedMppProperties: List<String> = listOf(
|
||||
KOTLIN_NATIVE_DEPENDENCY_PROPAGATION,
|
||||
)
|
||||
|
||||
private val propertiesSetByPlugin: Set<String> = setOf(
|
||||
KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA,
|
||||
KOTLIN_NATIVE_DEPENDENCY_PROPAGATION,
|
||||
)
|
||||
|
||||
internal fun getMppDeprecationWarningMessageForProperty(property: String): String =
|
||||
"w: The property '$property' is obsolete and will be removed in Kotlin 1.9. Read the details here: " +
|
||||
"https://kotlinlang.org/docs/multiplatform-compatibility-guide.html#deprecate-hmpp-properties"
|
||||
|
||||
Reference in New Issue
Block a user