From a52281f52a834f153ae011b592d15fd17ae99526 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Tue, 8 Sep 2015 14:01:09 +0300 Subject: [PATCH] Support default module name for withKotlin ant task --- .../jetbrains/kotlin/ant/Kotlin2JvmTask.kt | 7 ++----- .../jetbrains/kotlin/ant/KotlinAntTaskUtil.kt | 5 +++++ .../kotlin/ant/KotlinCompilerAdapter.java | 3 +++ build.xml | 8 ++++---- .../moduleNameWithKotlin/build.log.expected | 15 ++++++++++++++ .../ant/jvm/moduleNameWithKotlin/build.xml | 20 +++++++++++++++++++ .../ant/jvm/moduleNameWithKotlin/hello.kt | 11 ++++++++++ .../integration/AntTaskTestGenerated.java | 6 ++++++ 8 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.log.expected create mode 100644 compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.xml create mode 100644 compiler/testData/integration/ant/jvm/moduleNameWithKotlin/hello.kt diff --git a/ant/src/org/jetbrains/kotlin/ant/Kotlin2JvmTask.kt b/ant/src/org/jetbrains/kotlin/ant/Kotlin2JvmTask.kt index 28609651daa..6738d77a340 100644 --- a/ant/src/org/jetbrains/kotlin/ant/Kotlin2JvmTask.kt +++ b/ant/src/org/jetbrains/kotlin/ant/Kotlin2JvmTask.kt @@ -70,12 +70,9 @@ public class Kotlin2JvmTask : KotlinCompilerBaseTask() { args.add(it.list().join(pathSeparator)) } + if (moduleName == null) { - if (owningTarget != null) { - moduleName = owningTarget.name - } else if (getProject() != null) { - moduleName = getProject().name - } + moduleName = defaultModuleName } moduleName?.let { diff --git a/ant/src/org/jetbrains/kotlin/ant/KotlinAntTaskUtil.kt b/ant/src/org/jetbrains/kotlin/ant/KotlinAntTaskUtil.kt index 7a4d993f8b9..d0c2463ea37 100644 --- a/ant/src/org/jetbrains/kotlin/ant/KotlinAntTaskUtil.kt +++ b/ant/src/org/jetbrains/kotlin/ant/KotlinAntTaskUtil.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.ant import org.apache.tools.ant.AntClassLoader +import org.apache.tools.ant.Task import org.jetbrains.kotlin.preloading.ClassPreloadingUtils import org.jetbrains.kotlin.preloading.Preloader import java.io.File @@ -63,4 +64,8 @@ object KotlinAntTaskUtil { return classLoader } + } + +public val Task.defaultModuleName: String? + get() = owningTarget?.name ?: project?.name \ No newline at end of file diff --git a/ant/src/org/jetbrains/kotlin/ant/KotlinCompilerAdapter.java b/ant/src/org/jetbrains/kotlin/ant/KotlinCompilerAdapter.java index a4d6b09f93c..b1a7112e83f 100644 --- a/ant/src/org/jetbrains/kotlin/ant/KotlinCompilerAdapter.java +++ b/ant/src/org/jetbrains/kotlin/ant/KotlinCompilerAdapter.java @@ -92,6 +92,9 @@ public class KotlinCompilerAdapter extends Javac13 { kotlinc.setExternalAnnotations(externalAnnotations); + if (moduleName == null) { + moduleName = AntPackage.getDefaultModuleName(javac); + } kotlinc.setModuleName(moduleName); kotlinc.getAdditionalArguments().addAll(additionalArguments); diff --git a/build.xml b/build.xml index cc3dab39509..6b770d3a96e 100644 --- a/build.xml +++ b/build.xml @@ -563,7 +563,7 @@ - + @@ -583,7 +583,7 @@ - + @@ -606,7 +606,7 @@ - + @@ -911,7 +911,7 @@ - + diff --git a/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.log.expected b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.log.expected new file mode 100644 index 00000000000..f8721722b28 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.log.expected @@ -0,0 +1,15 @@ +OUT: +Buildfile: [TestData]/build.xml + +build: + [mkdir] Created dir: [Temp]/classes + [javac] Compiling 1 source file to [Temp]/classes + [javac] Compiling [[TestData]] => [[Temp]/classes] + [javac] Running javac... + [jar] Building jar: [Temp]/hello.jar + [java] Module info 'META-INF/build.kotlin_module' exists + +BUILD SUCCESSFUL +Total time: [time] + +Return code: 0 diff --git a/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.xml b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.xml new file mode 100644 index 00000000000..17a814907d3 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/build.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/hello.kt b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/hello.kt new file mode 100644 index 00000000000..1e1f84467c0 --- /dev/null +++ b/compiler/testData/integration/ant/jvm/moduleNameWithKotlin/hello.kt @@ -0,0 +1,11 @@ +package hello + +fun main(args: Array) { + val systemClassLoader = ClassLoader.getSystemClassLoader() + val moduleFile = "META-INF/build.kotlin_module" + val resourceAsStream = systemClassLoader.getResourceAsStream(moduleFile) + + if (resourceAsStream != null) { + println("Module info '$moduleFile' exists") + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java index 1db5817d4f2..df3935fb3f9 100644 --- a/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/integration/AntTaskTestGenerated.java @@ -77,6 +77,12 @@ public class AntTaskTestGenerated extends AbstractAntTaskTest { doTest(fileName); } + @TestMetadata("moduleNameWithKotlin") + public void testModuleNameWithKotlin() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/moduleNameWithKotlin/"); + doTest(fileName); + } + @TestMetadata("noStdlibForJavac") public void testNoStdlibForJavac() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/noStdlibForJavac/");