diff --git a/build.xml b/build.xml
index c6cd889a3..7d19b7e75 100644
--- a/build.xml
+++ b/build.xml
@@ -374,28 +374,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -701,7 +680,7 @@
-
+
@@ -1406,15 +1385,16 @@
-
-
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
index 1a4edbf76..8fbfb3bac 100644
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
@@ -297,7 +297,15 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
setupJavacCommandlineSwitches(cmd, true);
if (attributes.getSource() != null && !assumeJava13()) {
cmd.createArgument().setValue("-source");
- cmd.createArgument().setValue(attributes.getSource());
+ String source = attributes.getSource();
+ if (assumeJava14() &&
+ (source.equals("1.1") || source.equals("1.2"))) {
+ // support for -source 1.1 and -source 1.2 has been
+ // added with JDK 1.4.2
+ cmd.createArgument().setValue("1.3");
+ } else {
+ cmd.createArgument().setValue(source);
+ }
}
return cmd;
}
@@ -501,5 +509,19 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
&& JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3));
}
+ /**
+ * Shall we assume JDK 1.4 command line switches?
+ * @since Ant 1.6.3
+ */
+ protected boolean assumeJava14() {
+ return "javac1.4".equals(attributes.getCompilerVersion())
+ || ("classic".equals(attributes.getCompilerVersion())
+ && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4))
+ || ("modern".equals(attributes.getCompilerVersion())
+ && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4))
+ || ("extJavac".equals(attributes.getCompilerVersion())
+ && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4));
+ }
+
}