From 99d0fa0d29250611fbd2fd2e221465f4451b61d5 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 30 Jan 2020 12:30:41 +0300 Subject: [PATCH] [Gradle, JS] Fix newFileProperty for gradle <5.0 --- .../gradle.properties | 4 +++- .../kotlin/gradle/utils/providerApiUtils.kt | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-plugin-project/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-plugin-project/gradle.properties index a4a181c3de2..e906b3f6605 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-plugin-project/gradle.properties +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-plugin-project/gradle.properties @@ -1 +1,3 @@ -kotlin.tests.individualTaskReports=true \ No newline at end of file +kotlin.tests.individualTaskReports=true +#because of dependency (kotlinx-html) which is not klib yet +kotlin.js.mode=legacy \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt index 131d218e850..cda490b8400 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/providerApiUtils.kt @@ -40,15 +40,18 @@ internal fun Project.optionalProvider(initialize: () -> T?): ReadOnlyPropert // Before 5.0 fileProperty is created via ProjectLayout // https://docs.gradle.org/current/javadoc/org/gradle/api/model/ObjectFactory.html#fileProperty-- -internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty = - if (isGradleVersionAtLeast(5, 0)) { - project.objects.fileProperty().apply { - if (initialize != null) { - set(provider { RegularFile(initialize) }) - } - } +internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty { + val regularFileProperty = if (isGradleVersionAtLeast(5, 0)) { + project.objects.fileProperty() } else { val projectLayoutClass = Class.forName("org.gradle.api.file.ProjectLayout") val filePropertyMethod = projectLayoutClass.getMethod("fileProperty") filePropertyMethod(project.layout) as RegularFileProperty - } \ No newline at end of file + } + + return regularFileProperty.apply { + if (initialize != null) { + set(provider { RegularFile(initialize) }) + } + } +} \ No newline at end of file