Ant task: don't pass kotlin-runtime.jar to javac on "-no-stdlib"

This commit is contained in:
Alexander Udalov
2015-06-05 16:17:51 +03:00
parent f5ec8d6850
commit d475401108
5 changed files with 55 additions and 2 deletions
@@ -98,12 +98,21 @@ public class KotlinCompilerAdapter extends Javac13 {
// Javac13#execute passes everything in compileList to javac, which doesn't recognize .kt files
compileList = filterOutKotlinSources(compileList);
addRuntimeToJavacClasspath(kotlinc);
return compileList.length == 0 || super.execute();
}
private void addRuntimeToJavacClasspath(@NotNull Kotlin2JvmTask kotlinc) {
for (String arg : kotlinc.getArgs()) {
// If "-no-stdlib" was specified explicitly, probably the user also wanted the javac classpath to not have it
if ("-no-stdlib".equals(arg)) return;
}
if (compileClasspath == null) {
compileClasspath = new Path(getProject());
}
compileClasspath.add(new Path(getProject(), KotlinAntTaskUtil.INSTANCE$.getRuntimeJar().getAbsolutePath()));
return compileList.length == 0 || super.execute();
}
private void checkAntVersion() {
@@ -0,0 +1,5 @@
package test;
import kotlin.Unit;
public class J {}
@@ -0,0 +1,21 @@
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...
[javac] [TestData]/J.java:3: package kotlin does not exist
[javac] import kotlin.Unit;
[javac] ^
[javac] 1 error
ERR:
BUILD FAILED
[TestData]/build.xml:6: Compile failed; see the compiler error output for details.
Total time: [time]
Return code: 1
@@ -0,0 +1,12 @@
<project name="Ant Task Test" default="build">
<taskdef resource="org/jetbrains/kotlin/ant/antlib.xml" classpath="${kotlin.lib}/kotlin-ant.jar"/>
<target name="build">
<mkdir dir="${temp}/classes"/>
<javac srcdir="${test.data}" destdir="${temp}/classes" includeantruntime="false">
<withKotlin>
<compilerarg value="-no-stdlib"/>
</withKotlin>
</javac>
</target>
</project>
@@ -59,6 +59,12 @@ public class AntTaskTestGenerated extends AbstractAntTaskTest {
doTest(fileName);
}
@TestMetadata("noStdlibForJavac")
public void testNoStdlibForJavac() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/noStdlibForJavac/");
doTest(fileName);
}
@TestMetadata("suppressWarnings")
public void testSuppressWarnings() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/suppressWarnings/");