Skip to content

Commit

Permalink
Fix deprecation warning for forUseAtConfigurationTime (#5162)
Browse files Browse the repository at this point in the history
`forUseAtConfigurationTime` is a no-op starting at Gradle 7.4, so it can
safely not be used starting at this version. This will have no affect
other than to prevent a deprecation warning for those using newer gradle
versions.

Describe proposed changes and the issue being fixed

<!-- Optional -->
Fixes
https://youtrack.jetbrains.com/issue/CMP-3945/The-Provider.forUseAtConfigurationTime-method-has-been-deprecated
  • Loading branch information
mgroth0 authored Nov 12, 2024
1 parent e1caead commit 2865ddd
Showing 1 changed file with 8 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.provider.ProviderFactory
import org.jetbrains.kotlin.gradle.plugin.extraProperties
import org.gradle.util.GradleVersion

internal inline fun <reified T> ObjectFactory.new(vararg params: Any): T =
newInstance(T::class.java, *params)
Expand All @@ -38,11 +39,13 @@ internal fun ProviderFactory.valueOrNull(prop: String): Provider<String?> =
}

private fun Provider<String?>.forUseAtConfigurationTimeSafe(): Provider<String?> =
try {
forUseAtConfigurationTime()
} catch (e: NoSuchMethodError) {
// todo: remove once we drop support for Gradle 6.4
// forUseAtConfigurationTime is a no-op starting at Gradle 7.4 and just produces deprecation warnings.
// See https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.api.provider/-provider/for-use-at-configuration-time.html
if (GradleVersion.current() >= GradleVersion.version("7.4")) {
this
} else {
// todo: remove once we drop support for Gradle 6.4
forUseAtConfigurationTime()
}

internal fun Provider<String?>.toBooleanProvider(defaultValue: Boolean): Provider<Boolean> =
Expand All @@ -51,4 +54,4 @@ internal fun Provider<String?>.toBooleanProvider(defaultValue: Boolean): Provide
internal fun Project.findLocalOrGlobalProperty(name: String, default: String = ""): Provider<String> = provider {
if (extraProperties.has(name)) extraProperties.get(name).toString()
else providers.gradleProperty(name).forUseAtConfigurationTimeSafe().getOrElse(default)
}
}

0 comments on commit 2865ddd

Please sign in to comment.