@@ -18,6 +18,9 @@ Changes that could break older environments: | |||||
* <native2ascii> will default to the buitin implementation on Java8 | * <native2ascii> will default to the buitin implementation on Java8 | ||||
as well (sun isn't available for Java9+ anyway). | as well (sun isn't available for Java9+ anyway). | ||||
* The ant.java.version property will now hold the value "9" rather | |||||
than "1.9" if running on Java 9. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -373,9 +373,7 @@ | |||||
</not> | </not> | ||||
</condition> | </condition> | ||||
<property name="ignoresystemclasses" value="false"/> | <property name="ignoresystemclasses" value="false"/> | ||||
<condition property="jdk1.9+"> | |||||
<contains string="${java.version}" substring="1.9."/> | |||||
</condition> | |||||
<available property="jdk9+" classname="java.lang.module.ModuleDescriptor"/> | |||||
<available property="kaffe" classname="kaffe.util.NotImplemented"/> | <available property="kaffe" classname="kaffe.util.NotImplemented"/> | ||||
<available property="harmony" | <available property="harmony" | ||||
classname="org.apache.harmony.luni.util.Base64"/> | classname="org.apache.harmony.luni.util.Base64"/> | ||||
@@ -79,7 +79,8 @@ attribute are:</a></p> | |||||
<code>javac1.6</code> and | <code>javac1.6</code> and | ||||
<code>javac1.7</code> (<em>since Ant 1.8.2</em>) and | <code>javac1.7</code> (<em>since Ant 1.8.2</em>) and | ||||
<code>javac1.8</code> (<em>since Ant 1.8.3</em>) and</li> | <code>javac1.8</code> (<em>since Ant 1.8.3</em>) and</li> | ||||
<code>javac1.9</code> (<em>since Ant 1.9.5</em>) can be used as aliases.</li> | |||||
<code>javac1.9</code> (<em>since Ant 1.9.5</em>) and</li> | |||||
<code>javac9</code> (<em>since Ant 1.9.8</em>) can be used as aliases.</li> | |||||
<li><code>jikes</code> (the <a | <li><code>jikes</code> (the <a | ||||
href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | ||||
compiler).</li> | compiler).</li> | ||||
@@ -84,11 +84,11 @@ ant.project.invoked-targets | |||||
will contain the project's default target in this | will contain the project's default target in this | ||||
case for tasks nested into targets.. | case for tasks nested into targets.. | ||||
ant.java.version the JVM version Ant detected; currently it can hold | ant.java.version the JVM version Ant detected; currently it can hold | ||||
the values "1.9", "1.8", | |||||
the values "9", "1.8", | |||||
"1.7", "1.6", "1.5", | "1.7", "1.6", "1.5", | ||||
"1.4", "1.3" and | "1.4", "1.3" and | ||||
"1.2". ant.core.lib the absolute path | |||||
of the <code>ant.jar</code> file. | |||||
"1.2". | |||||
ant.core.lib the absolute path of the <code>ant.jar</code> file. | |||||
</pre> | </pre> | ||||
<p>There is also another property, but this is set by the launcher | <p>There is also another property, but this is set by the launcher | ||||
@@ -85,6 +85,7 @@ public class Javac extends MatchingTask { | |||||
private static final String FAIL_MSG | private static final String FAIL_MSG | ||||
= "Compile failed; see the compiler error output for details."; | = "Compile failed; see the compiler error output for details."; | ||||
private static final String JAVAC9 = "javac9"; | |||||
private static final String JAVAC19 = "javac1.9"; | private static final String JAVAC19 = "javac1.9"; | ||||
private static final String JAVAC18 = "javac1.8"; | private static final String JAVAC18 = "javac1.8"; | ||||
private static final String JAVAC17 = "javac1.7"; | private static final String JAVAC17 = "javac1.7"; | ||||
@@ -166,8 +167,8 @@ public class Javac extends MatchingTask { | |||||
return JAVAC17; | return JAVAC17; | ||||
} else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_8)) { | } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_8)) { | ||||
return JAVAC18; | return JAVAC18; | ||||
} else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_9)) { | |||||
return JAVAC19; | |||||
} else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_9)) { | |||||
return JAVAC9; | |||||
} else { | } else { | ||||
return CLASSIC; | return CLASSIC; | ||||
} | } | ||||
@@ -912,7 +913,8 @@ public class Javac extends MatchingTask { | |||||
} | } | ||||
private String getAltCompilerName(final String anImplementation) { | private String getAltCompilerName(final String anImplementation) { | ||||
if (JAVAC19.equalsIgnoreCase(anImplementation) | |||||
if (JAVAC9.equalsIgnoreCase(anImplementation) | |||||
|| JAVAC19.equalsIgnoreCase(anImplementation) | |||||
|| JAVAC18.equalsIgnoreCase(anImplementation) | || JAVAC18.equalsIgnoreCase(anImplementation) | ||||
|| JAVAC17.equalsIgnoreCase(anImplementation) | || JAVAC17.equalsIgnoreCase(anImplementation) | ||||
|| JAVAC16.equalsIgnoreCase(anImplementation) | || JAVAC16.equalsIgnoreCase(anImplementation) | ||||
@@ -927,7 +929,7 @@ public class Javac extends MatchingTask { | |||||
} | } | ||||
if (MODERN.equalsIgnoreCase(anImplementation)) { | if (MODERN.equalsIgnoreCase(anImplementation)) { | ||||
final String nextSelected = assumedJavaVersion(); | final String nextSelected = assumedJavaVersion(); | ||||
if (JAVAC19.equalsIgnoreCase(nextSelected) | |||||
if (JAVAC9.equalsIgnoreCase(nextSelected) | |||||
|| JAVAC18.equalsIgnoreCase(nextSelected) | || JAVAC18.equalsIgnoreCase(nextSelected) | ||||
|| JAVAC17.equalsIgnoreCase(nextSelected) | || JAVAC17.equalsIgnoreCase(nextSelected) | ||||
|| JAVAC16.equalsIgnoreCase(nextSelected) | || JAVAC16.equalsIgnoreCase(nextSelected) | ||||
@@ -1194,12 +1196,12 @@ public class Javac extends MatchingTask { | |||||
* @param compilerImpl the name of the compiler implementation | * @param compilerImpl the name of the compiler implementation | ||||
* @return true if compilerImpl is "modern", "classic", | * @return true if compilerImpl is "modern", "classic", | ||||
* "javac1.1", "javac1.2", "javac1.3", "javac1.4", "javac1.5", | * "javac1.1", "javac1.2", "javac1.3", "javac1.4", "javac1.5", | ||||
* "javac1.6", "javac1.7", "javac1.8" or "javac1.9". | |||||
* "javac1.6", "javac1.7", "javac1.8", "javac1.9" or "javac9". | |||||
*/ | */ | ||||
protected boolean isJdkCompiler(final String compilerImpl) { | protected boolean isJdkCompiler(final String compilerImpl) { | ||||
return MODERN.equals(compilerImpl) | return MODERN.equals(compilerImpl) | ||||
|| CLASSIC.equals(compilerImpl) | || CLASSIC.equals(compilerImpl) | ||||
|| JAVAC19.equals(compilerImpl) | |||||
|| JAVAC9.equals(compilerImpl) | |||||
|| JAVAC18.equals(compilerImpl) | || JAVAC18.equals(compilerImpl) | ||||
|| JAVAC17.equals(compilerImpl) | || JAVAC17.equals(compilerImpl) | ||||
|| JAVAC16.equals(compilerImpl) | || JAVAC16.equals(compilerImpl) | ||||
@@ -122,7 +122,8 @@ public final class CompilerAdapterFactory { | |||||
|| compilerType.equalsIgnoreCase("javac1.6") | || compilerType.equalsIgnoreCase("javac1.6") | ||||
|| compilerType.equalsIgnoreCase("javac1.7") | || compilerType.equalsIgnoreCase("javac1.7") | ||||
|| compilerType.equalsIgnoreCase("javac1.8") | || compilerType.equalsIgnoreCase("javac1.8") | ||||
|| compilerType.equalsIgnoreCase("javac1.9")) { | |||||
|| compilerType.equalsIgnoreCase("javac1.9") | |||||
|| compilerType.equalsIgnoreCase("javac9")) { | |||||
// does the modern compiler exist? | // does the modern compiler exist? | ||||
if (doesModernCompilerExist()) { | if (doesModernCompilerExist()) { | ||||
return new Javac13(); | return new Javac13(); | ||||
@@ -672,12 +672,23 @@ public abstract class DefaultCompilerAdapter | |||||
} | } | ||||
/** | /** | ||||
* Shall we assume JDK 1.9 command line switches? | |||||
* @return true if JDK 1.9 | |||||
* Shall we assume JDK 9 command line switches? | |||||
* @return true if JDK 9 | |||||
* @since Ant 1.9.4 | * @since Ant 1.9.4 | ||||
* @deprecated use #assumeJava9 instead | |||||
*/ | */ | ||||
protected boolean assumeJava19() { | protected boolean assumeJava19() { | ||||
return assumeJavaXY("javac1.9", JavaEnvUtils.JAVA_1_9); | |||||
return assumeJavaXY("javac1.9", JavaEnvUtils.JAVA_9) | |||||
|| assumeJavaXY("javac9", JavaEnvUtils.JAVA_9); | |||||
} | |||||
/** | |||||
* Shall we assume JDK 9 command line switches? | |||||
* @return true if JDK 9 | |||||
* @since Ant 1.9.8 | |||||
*/ | |||||
protected boolean assumeJava9() { | |||||
return assumeJava19(); | |||||
} | } | ||||
/** | /** | ||||
@@ -686,12 +697,10 @@ public abstract class DefaultCompilerAdapter | |||||
*/ | */ | ||||
private boolean assumeJavaXY(final String javacXY, final String javaEnvVersionXY) { | private boolean assumeJavaXY(final String javacXY, final String javaEnvVersionXY) { | ||||
return javacXY.equals(attributes.getCompilerVersion()) | return javacXY.equals(attributes.getCompilerVersion()) | ||||
|| ("classic".equals(attributes.getCompilerVersion()) | |||||
&& JavaEnvUtils.isJavaVersion(javaEnvVersionXY)) | |||||
|| ("modern".equals(attributes.getCompilerVersion()) | |||||
&& JavaEnvUtils.isJavaVersion(javaEnvVersionXY)) | |||||
|| ("extJavac".equals(attributes.getCompilerVersion()) | |||||
&& JavaEnvUtils.isJavaVersion(javaEnvVersionXY)); | |||||
|| (JavaEnvUtils.isJavaVersion(javaEnvVersionXY) && | |||||
("classic".equals(attributes.getCompilerVersion()) | |||||
|| "modern".equals(attributes.getCompilerVersion()) | |||||
|| "extJavac".equals(attributes.getCompilerVersion()))); | |||||
} | } | ||||
/** | /** | ||||
@@ -755,8 +764,8 @@ public abstract class DefaultCompilerAdapter | |||||
if (assumeJava18()) { | if (assumeJava18()) { | ||||
return "1.8 in JDK 1.8"; | return "1.8 in JDK 1.8"; | ||||
} | } | ||||
if (assumeJava19()) { | |||||
return "1.9 in JDK 1.9"; | |||||
if (assumeJava9()) { | |||||
return "9 in JDK 9"; | |||||
} | } | ||||
return ""; | return ""; | ||||
} | } | ||||
@@ -782,7 +791,7 @@ public abstract class DefaultCompilerAdapter | |||||
&& !assumeJava15() && !assumeJava16()) | && !assumeJava15() && !assumeJava16()) | ||||
|| (t.equals("7") && !assumeJava17()) | || (t.equals("7") && !assumeJava17()) | ||||
|| (t.equals("8") && !assumeJava18()) | || (t.equals("8") && !assumeJava18()) | ||||
|| (t.equals("9") && !assumeJava19()); | |||||
|| (t.equals("9") && !assumeJava9()); | |||||
} | } | ||||
@@ -55,6 +55,9 @@ public final class JavaEnvUtils { | |||||
/** floating version of the JVM */ | /** floating version of the JVM */ | ||||
private static int javaVersionNumber; | private static int javaVersionNumber; | ||||
/** Version of currently running VM. */ | |||||
private static final DeweyDecimal parsedJavaVersion; | |||||
/** Version constant for Java 1.0 */ | /** Version constant for Java 1.0 */ | ||||
public static final String JAVA_1_0 = "1.0"; | public static final String JAVA_1_0 = "1.0"; | ||||
/** Number Version constant for Java 1.0 */ | /** Number Version constant for Java 1.0 */ | ||||
@@ -100,11 +103,28 @@ public final class JavaEnvUtils { | |||||
/** Number Version constant for Java 1.8 */ | /** Number Version constant for Java 1.8 */ | ||||
public static final int VERSION_1_8 = 18; | public static final int VERSION_1_8 = 18; | ||||
/** Version constant for Java 1.9 */ | |||||
/** | |||||
* Version constant for Java 1.9 | |||||
* @deprecated use #JAVA_9 instead | |||||
*/ | |||||
public static final String JAVA_1_9 = "1.9"; | public static final String JAVA_1_9 = "1.9"; | ||||
/** Number Version constant for Java 1.9 */ | |||||
/** | |||||
* Number Version constant for Java 1.9 | |||||
* @deprecated use #VERSION_9 instead | |||||
*/ | |||||
public static final int VERSION_1_9 = 19; | public static final int VERSION_1_9 = 19; | ||||
/** | |||||
* Version constant for Java 9 | |||||
* @since Ant 1.9.8 | |||||
*/ | |||||
public static final String JAVA_9 = "9"; | |||||
/** | |||||
* Number Version constant for Java 9 | |||||
* @since Ant 1.9.8 | |||||
*/ | |||||
public static final int VERSION_9 = 90; | |||||
/** Whether this is the Kaffe VM */ | /** Whether this is the Kaffe VM */ | ||||
private static boolean kaffeDetected; | private static boolean kaffeDetected; | ||||
@@ -158,13 +178,14 @@ public final class JavaEnvUtils { | |||||
Class.forName("java.lang.reflect.Executable"); | Class.forName("java.lang.reflect.Executable"); | ||||
javaVersion = JAVA_1_8; | javaVersion = JAVA_1_8; | ||||
javaVersionNumber++; | javaVersionNumber++; | ||||
checkForJava9(); | |||||
javaVersion = JAVA_1_9; | |||||
javaVersionNumber++; | |||||
Class.forName("java.lang.module.ModuleDescriptor"); | |||||
javaVersion = JAVA_9; | |||||
javaVersionNumber = VERSION_9; | |||||
} catch (Throwable t) { | } catch (Throwable t) { | ||||
// swallow as we've hit the max class version that | // swallow as we've hit the max class version that | ||||
// we have | // we have | ||||
} | } | ||||
parsedJavaVersion = new DeweyDecimal(javaVersion); | |||||
kaffeDetected = false; | kaffeDetected = false; | ||||
try { | try { | ||||
Class.forName("kaffe.util.NotImplemented"); | Class.forName("kaffe.util.NotImplemented"); | ||||
@@ -197,7 +218,11 @@ public final class JavaEnvUtils { | |||||
/** | /** | ||||
* Returns the version of Java this class is running under. | * Returns the version of Java this class is running under. | ||||
* @return the version of Java as a String, e.g. "1.6" | |||||
* | |||||
* <p>Up until Java 8 Java version numbers were 1.VERSION - | |||||
* e.g. 1.8.x for Java 8, starting with Java 9 it became 9.x.</p> | |||||
* | |||||
* @return the version of Java as a String, e.g. "1.6" or "9" | |||||
*/ | */ | ||||
public static String getJavaVersion() { | public static String getJavaVersion() { | ||||
return javaVersion; | return javaVersion; | ||||
@@ -205,31 +230,28 @@ public final class JavaEnvUtils { | |||||
/** | /** | ||||
* Checks for a give Java 9 runtime. | |||||
* At the time of writing the actual version of the JDK was 1.9.0_b06. | |||||
* Searching for new classes gave no hits, so we need another aproach. | |||||
* Searching for changes (grep -r -i -n "@since 1.9" .) in the sources gave | |||||
* only one hit: a new constant in the class SourceVersion. | |||||
* So we have to check that ... | |||||
* | |||||
* @throws Exception if we can't load the class or don't find the new constant. | |||||
* This is the behavior when searching for new features on older versions. | |||||
* @since Ant 1.9.4 | |||||
* Returns the version of Java this class is running under. | |||||
* <p>This number can be used for comparisons.</p> | |||||
* @return the version of Java as a number 10x the major/minor, | |||||
* e.g Java1.5 has a value of 15 and Java9 the value 90 - major | |||||
* will be 1 for all versions of Java prior to Java 9, minor will | |||||
* be 0 for all versions of Java starting with Java 9. | |||||
* @deprecated use #getParsedJavaVersion instead | |||||
*/ | */ | ||||
private static void checkForJava9() throws Exception { | |||||
Class<?> clazz = Class.forName("javax.lang.model.SourceVersion"); | |||||
clazz.getDeclaredField("RELEASE_9"); | |||||
public static int getJavaVersionNumber() { | |||||
return javaVersionNumber; | |||||
} | } | ||||
/** | /** | ||||
* Returns the version of Java this class is running under. | * Returns the version of Java this class is running under. | ||||
* This number can be used for comparisons; it will always be | |||||
* @return the version of Java as a number 10x the major/minor, | |||||
* e.g Java1.5 has a value of 15 | |||||
* <p>This number can be used for comparisons.</p> | |||||
* @return the version of Java as major.minor, e.g Java1.5 has a | |||||
* value of 1.5 and Java9 the value 9 - major will be 1 for all | |||||
* versions of Java prior to Java 9, minor will be 0 for all | |||||
* versions of Java starting with Java 9. | |||||
*/ | */ | ||||
public static int getJavaVersionNumber() { | |||||
return javaVersionNumber; | |||||
public static DeweyDecimal getParsedJavaVersion() { | |||||
return parsedJavaVersion; | |||||
} | } | ||||
/** | /** | ||||
@@ -243,7 +265,8 @@ public final class JavaEnvUtils { | |||||
* @since Ant 1.5 | * @since Ant 1.5 | ||||
*/ | */ | ||||
public static boolean isJavaVersion(String version) { | public static boolean isJavaVersion(String version) { | ||||
return javaVersion.equals(version); | |||||
return javaVersion.equals(version) | |||||
|| (javaVersion.equals(JAVA_9) && JAVA_1_9.equals(version)); | |||||
} | } | ||||
/** | /** | ||||
@@ -258,7 +281,7 @@ public final class JavaEnvUtils { | |||||
* @since Ant 1.7 | * @since Ant 1.7 | ||||
*/ | */ | ||||
public static boolean isAtLeastJavaVersion(String version) { | public static boolean isAtLeastJavaVersion(String version) { | ||||
return javaVersion.compareTo(version) >= 0; | |||||
return parsedJavaVersion.compareTo(new DeweyDecimal(version)) >= 0; | |||||
} | } | ||||
/** | /** | ||||
@@ -385,7 +408,7 @@ public final class JavaEnvUtils { | |||||
// fall back to JRE bin directory, also catches JDK 1.0 and 1.1 | // fall back to JRE bin directory, also catches JDK 1.0 and 1.1 | ||||
// where java.home points to the root of the JDK and Mac OS X where | // where java.home points to the root of the JDK and Mac OS X where | ||||
// the whole directory layout is different from Sun's | // the whole directory layout is different from Sun's | ||||
// and also catches JDK 1.9 (and probably later) which | |||||
// and also catches JDK 9 (and probably later) which | |||||
// merged JDK and JRE dirs | // merged JDK and JRE dirs | ||||
return getJreExecutable(command); | return getJreExecutable(command); | ||||
} | } | ||||
@@ -427,7 +450,7 @@ public final class JavaEnvUtils { | |||||
private static void buildJrePackages() { | private static void buildJrePackages() { | ||||
jrePackages = new Vector<String>(); | jrePackages = new Vector<String>(); | ||||
switch(javaVersionNumber) { | switch(javaVersionNumber) { | ||||
case VERSION_1_9: | |||||
case VERSION_9: | |||||
case VERSION_1_8: | case VERSION_1_8: | ||||
case VERSION_1_7: | case VERSION_1_7: | ||||
jrePackages.addElement("jdk"); | jrePackages.addElement("jdk"); | ||||
@@ -482,7 +505,7 @@ public final class JavaEnvUtils { | |||||
Vector<String> tests = new Vector<String>(); | Vector<String> tests = new Vector<String>(); | ||||
tests.addElement("java.lang.Object"); | tests.addElement("java.lang.Object"); | ||||
switch(javaVersionNumber) { | switch(javaVersionNumber) { | ||||
case VERSION_1_9: | |||||
case VERSION_9: | |||||
case VERSION_1_8: | case VERSION_1_8: | ||||
case VERSION_1_7: | case VERSION_1_7: | ||||
tests.addElement("jdk.net.Sockets"); | tests.addElement("jdk.net.Sockets"); | ||||
@@ -27,9 +27,7 @@ | |||||
<property name="test3.jar" location="${antunit.tmpdir}/test3.jar"/> | <property name="test3.jar" location="${antunit.tmpdir}/test3.jar"/> | ||||
<property name="test4.jar" location="${antunit.tmpdir}/test4.jar"/> | <property name="test4.jar" location="${antunit.tmpdir}/test4.jar"/> | ||||
<property name="test5.jar" location="${antunit.tmpdir}/test5.jar"/> | <property name="test5.jar" location="${antunit.tmpdir}/test5.jar"/> | ||||
<condition property="jdk1.9+"> | |||||
<contains string="${java.version}" substring="1.9."/> | |||||
</condition> | |||||
<available property="jdk9+" classname="java.lang.module.ModuleDescriptor"/> | |||||
<condition property="build.sysclasspath.only"> | <condition property="build.sysclasspath.only"> | ||||
<equals arg1="${build.sysclasspath}" arg2="only"/> | <equals arg1="${build.sysclasspath}" arg2="only"/> | ||||
</condition> | </condition> | ||||
@@ -213,7 +213,7 @@ public class Adapter implements CompilerAdapter { | |||||
<testJavac source="notValid"/> | <testJavac source="notValid"/> | ||||
</au:expectfailure> | </au:expectfailure> | ||||
<sequential unless:set="jdk1.9+"> | |||||
<sequential unless:set="jdk9+"> | |||||
<echo>JDK 1.4+</echo> | <echo>JDK 1.4+</echo> | ||||
<testJavac source="1.4"/> | <testJavac source="1.4"/> | ||||
<delete dir="${javac-dir}/classes"/> | <delete dir="${javac-dir}/classes"/> | ||||
@@ -226,10 +226,10 @@ public class Adapter implements CompilerAdapter { | |||||
<delete dir="${javac-dir}/classes"/> | <delete dir="${javac-dir}/classes"/> | ||||
<mkdir dir="${javac-dir}/classes"/> | <mkdir dir="${javac-dir}/classes"/> | ||||
</sequential> | </sequential> | ||||
<sequential if:set="jdk1.9+"> | |||||
<echo>JDK 1.9+</echo> | |||||
<testJavac source="1.9"/> | |||||
<sequential if:set="jdk9+"> | |||||
<echo>JDK 9+</echo> | |||||
<testJavac source="9"/> | |||||
<delete dir="${javac-dir}/classes"/> | <delete dir="${javac-dir}/classes"/> | ||||
<mkdir dir="${javac-dir}/classes"/> | <mkdir dir="${javac-dir}/classes"/> | ||||
</sequential> | </sequential> | ||||
@@ -250,16 +250,16 @@ public class Adapter implements CompilerAdapter { | |||||
<testJavac target="notValid"/> | <testJavac target="notValid"/> | ||||
</au:expectfailure> | </au:expectfailure> | ||||
<sequential unless:set="jdk1.9+"> | |||||
<sequential unless:set="jdk9+"> | |||||
<echo>JDK 1.8+</echo> | <echo>JDK 1.8+</echo> | ||||
<testJavac source="1.8" target="1.8"/> | <testJavac source="1.8" target="1.8"/> | ||||
<delete dir="${javac-dir}/classes"/> | <delete dir="${javac-dir}/classes"/> | ||||
<mkdir dir="${javac-dir}/classes"/> | <mkdir dir="${javac-dir}/classes"/> | ||||
</sequential> | </sequential> | ||||
<sequential if:set="jdk1.9+"> | |||||
<echo>JDK 1.9+</echo> | |||||
<testJavac source="1.9" target="1.9"/> | |||||
<sequential if:set="jdk9+"> | |||||
<echo>JDK 9+</echo> | |||||
<testJavac source="9" target="9"/> | |||||
<delete dir="${javac-dir}/classes"/> | <delete dir="${javac-dir}/classes"/> | ||||
<mkdir dir="${javac-dir}/classes"/> | <mkdir dir="${javac-dir}/classes"/> | ||||
</sequential> | </sequential> | ||||
@@ -97,7 +97,7 @@ public class Adapter implements Native2AsciiAdapter { | |||||
<target name="testUTF8-To-ASCII-sun" depends="-setup-UTF8-To-ASCII" | <target name="testUTF8-To-ASCII-sun" depends="-setup-UTF8-To-ASCII" | ||||
description="https://bz.apache.org/bugzilla/show_bug.cgi?id=59855" | description="https://bz.apache.org/bugzilla/show_bug.cgi?id=59855" | ||||
unless="jdk1.9+"> | |||||
unless="jdk9+"> | |||||
<native2ascii-def implementation="sun"/> | <native2ascii-def implementation="sun"/> | ||||
<assertTranslatedOutput file="umlauts.properties" encoding="ASCII" | <assertTranslatedOutput file="umlauts.properties" encoding="ASCII" | ||||
expected="${umlauts.expected}"/> | expected="${umlauts.expected}"/> | ||||
@@ -119,7 +119,7 @@ public class Adapter implements Native2AsciiAdapter { | |||||
<target name="testASCII-To-UTF8-sun" depends="-setup-ASCII-To-UTF8" | <target name="testASCII-To-UTF8-sun" depends="-setup-ASCII-To-UTF8" | ||||
description="https://bz.apache.org/bugzilla/show_bug.cgi?id=59855" | description="https://bz.apache.org/bugzilla/show_bug.cgi?id=59855" | ||||
unless="jdk1.9+"> | |||||
unless="jdk9+"> | |||||
<native2ascii-def implementation="sun" reverse="true"/> | <native2ascii-def implementation="sun" reverse="true"/> | ||||
<assertTranslatedOutput file="umlauts.properties" encoding="UTF-8" | <assertTranslatedOutput file="umlauts.properties" encoding="UTF-8" | ||||
expected="${umlauts.expected}"/> | expected="${umlauts.expected}"/> | ||||
@@ -185,6 +185,37 @@ public class DefaultCompilerAdapterTest { | |||||
testSource(null, "javac1.9", "", "9"); | testSource(null, "javac1.9", "", "9"); | ||||
} | } | ||||
@Test | |||||
public void testImplicitSourceForJava9() { | |||||
commonSourceDowngrades("javac9"); | |||||
testSource("1.5", "javac9", | |||||
"If you specify -target 1.5 you now must also specify" | |||||
+ " -source 1.5", "1.5"); | |||||
testSource("1.6", "javac1.9", | |||||
"If you specify -target 1.6 you now must also specify" | |||||
+ " -source 1.6", "1.6"); | |||||
testSource("1.7", "javac9", | |||||
"If you specify -target 1.7 you now must also specify" | |||||
+ " -source 1.7", "1.7"); | |||||
testSource("1.8", "javac9", | |||||
"If you specify -target 1.8 you now must also specify" | |||||
+ " -source 1.8", "1.8"); | |||||
testSource("5", "javac9", | |||||
"If you specify -target 5 you now must also specify" | |||||
+ " -source 5", "5"); | |||||
testSource("6", "javac9", | |||||
"If you specify -target 6 you now must also specify" | |||||
+ " -source 6", "6"); | |||||
testSource("7", "javac9", | |||||
"If you specify -target 7 you now must also specify" | |||||
+ " -source 7", "7"); | |||||
testSource("8", "javac9", | |||||
"If you specify -target 8 you now must also specify" | |||||
+ " -source 8", "8"); | |||||
testSource(null, "javac9", "", "1.9"); | |||||
testSource(null, "javac9", "", "9"); | |||||
} | |||||
@Test | @Test | ||||
public void testSingleModuleCompilation() throws IOException { | public void testSingleModuleCompilation() throws IOException { | ||||
final File workDir = createWorkDir("testSMC"); | final File workDir = createWorkDir("testSMC"); | ||||
@@ -115,7 +115,7 @@ public class JavaEnvUtilsTest { | |||||
assertTrue(j+" is normalized and in the JDK dir", | assertTrue(j+" is normalized and in the JDK dir", | ||||
j.startsWith(javaHomeParent)); | j.startsWith(javaHomeParent)); | ||||
if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_9)) { | |||||
if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) { | |||||
assertTrue(j + " is normalized and in the JRE dir", | assertTrue(j + " is normalized and in the JRE dir", | ||||
j.startsWith(javaHome)); | j.startsWith(javaHome)); | ||||
} else { | } else { | ||||
@@ -135,9 +135,6 @@ public class JavaEnvUtilsTest { | |||||
assertTrue( | assertTrue( | ||||
"Current java version is not at least the current java version...", | "Current java version is not at least the current java version...", | ||||
JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.getJavaVersion())); | JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.getJavaVersion())); | ||||
assertFalse( | |||||
"In case the current java version is higher than 9.0 definitely a new algorithem will be needed", | |||||
JavaEnvUtils.isAtLeastJavaVersion("9.0")); | |||||
} | } | ||||
} | } |