From 7b3bc0235b745da2c6cb4b3687146dbd1a0c4a09 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Tue, 6 Dec 2016 15:03:12 +0300 Subject: [PATCH] Fix JS compiler jar search #KT-15127 fixed --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 3 ++- .../testProject/kotlinBuiltins/app/build.gradle | 9 +++++++++ .../kotlinBuiltins/{ => app}/src/main/kotlin/main.kt | 0 .../resources/testProject/kotlinBuiltins/build.gradle | 10 ---------- .../testProject/kotlinBuiltins/settings.gradle | 1 + .../kotlin/gradle/tasks/compilerJarSearchingUtil.kt | 11 +++++++++-- 6 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/build.gradle rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/{ => app}/src/main/kotlin/main.kt (100%) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index 4d56070456b..518a8dd2eeb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.gradle import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.modify import org.junit.Test +import java.io.File class Kotlin2JsGradlePluginIT : BaseGradleIT() { @Test @@ -79,7 +80,7 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { val project = Project("kotlinBuiltins", "3.2") project.setupWorkingDir() - val buildGradle = project.projectDir.getFileByName("build.gradle") + val buildGradle = File(project.projectDir, "app").getFileByName("build.gradle") buildGradle.modify { it.replace("apply plugin: \"kotlin\"", "apply plugin: \"kotlin2js\"") + "\ncompileKotlin2Js.kotlinOptions.outputFile = \"out/out.js\"" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/build.gradle new file mode 100644 index 00000000000..be1b4e6a622 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/build.gradle @@ -0,0 +1,9 @@ +apply plugin: "kotlin" + +repositories { + mavenLocal() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/src/main/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/src/main/kotlin/main.kt similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/src/main/kotlin/main.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/app/src/main/kotlin/main.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/build.gradle index 4a9504b7a97..bb102efa132 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/build.gradle @@ -5,14 +5,4 @@ buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } -} - -apply plugin: "kotlin" - -repositories { - mavenLocal() -} - -dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/settings.gradle new file mode 100644 index 00000000000..9d495b34f86 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinBuiltins/settings.gradle @@ -0,0 +1 @@ +include ':app' \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/compilerJarSearchingUtil.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/compilerJarSearchingUtil.kt index b260d3864fe..a48ced11e87 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/compilerJarSearchingUtil.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/compilerJarSearchingUtil.kt @@ -35,9 +35,16 @@ private fun findKotlinCompilerJar(project: Project, compilerClassName: String): val entryToFind = compilerClassName.replace(".", "/") + ".class" val jarFromClasspath = project.classpathJars().firstOrNull { it.hasEntry(entryToFind) } - val compilerJar = jarFromClasspath - return compilerJar + return when { + jarFromClasspath != null -> + jarFromClasspath + project.parent != null -> + findKotlinCompilerJar(project.parent, compilerClassName) + else -> + null + + } } private fun File.hasEntry(entryToFind: String): Boolean {