Ant task: don't pass kotlin-runtime.jar to javac on "-no-stdlib"
This commit is contained in:
@@ -98,12 +98,21 @@ public class KotlinCompilerAdapter extends Javac13 {
|
|||||||
// Javac13#execute passes everything in compileList to javac, which doesn't recognize .kt files
|
// Javac13#execute passes everything in compileList to javac, which doesn't recognize .kt files
|
||||||
compileList = filterOutKotlinSources(compileList);
|
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) {
|
if (compileClasspath == null) {
|
||||||
compileClasspath = new Path(getProject());
|
compileClasspath = new Path(getProject());
|
||||||
}
|
}
|
||||||
compileClasspath.add(new Path(getProject(), KotlinAntTaskUtil.INSTANCE$.getRuntimeJar().getAbsolutePath()));
|
compileClasspath.add(new Path(getProject(), KotlinAntTaskUtil.INSTANCE$.getRuntimeJar().getAbsolutePath()));
|
||||||
|
|
||||||
return compileList.length == 0 || super.execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkAntVersion() {
|
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);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("noStdlibForJavac")
|
||||||
|
public void testNoStdlibForJavac() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/noStdlibForJavac/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("suppressWarnings")
|
@TestMetadata("suppressWarnings")
|
||||||
public void testSuppressWarnings() throws Exception {
|
public void testSuppressWarnings() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/suppressWarnings/");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/integration/ant/jvm/suppressWarnings/");
|
||||||
|
|||||||
Reference in New Issue
Block a user