diff --git a/libraries/stdlib/wasm/build.gradle.kts b/libraries/stdlib/wasm/build.gradle.kts index 01ece239e04..d76cbdd62b3 100644 --- a/libraries/stdlib/wasm/build.gradle.kts +++ b/libraries/stdlib/wasm/build.gradle.kts @@ -1,6 +1,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyTransformationTask import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootPlugin import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink +import java.lang.reflect.Field +import java.lang.reflect.Modifier plugins { `maven-publish` @@ -189,10 +192,27 @@ if (!isConfigurationCacheDisabled) { it is org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask || it is org.jetbrains.kotlin.gradle.plugin.mpp.GenerateProjectStructureMetadata || it is org.jetbrains.kotlin.gradle.plugin.mpp.TransformKotlinGranularMetadata + || it is MetadataDependencyTransformationTask }.configureEach { onlyIf { logger.warn("Task '$name' is disabled due to incompatibility with configuration cache. KT-49933") false } } -} \ No newline at end of file + tasks.withType().configureEach { + try { + val field = MetadataDependencyTransformationTask::class.java.getDeclaredField("transformationParameters") + field.isAccessible = true + val params = field.get(this) + val removePropertiesValues = setOf("sourceSetVisibilityProvider", "resolvedMetadataConfiguration") + for (property in removePropertiesValues) { + val resolvedMetadataConfiguration = params::class.java.getDeclaredField(property) + resolvedMetadataConfiguration.isAccessible = true + resolvedMetadataConfiguration.set(params, null) + } + logger.warn("Applied configuration cache compatibility workaround for `MetadataDependencyTransformationTask`") + } catch (t: Throwable) { + logger.warn("Failed to apply workaround for configuration cache compatibility for `MetadataDependencyTransformationTask`") + } + } +}