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
|
||||
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/");
|
||||
|
||||
Reference in New Issue
Block a user