Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,20 @@ protected String getJavaVersion() {

return javaVersion;
}

/**
* Returns the feature version of the running JDK: 8 for {@code 1.8.x}, otherwise the leading number of
* {@code java.version}, such as 17 or 27.
*/
protected int getJavaFeatureVersion() {
String javaVersion = System.getProperty("java.version");
if (javaVersion.startsWith("1.")) {
javaVersion = javaVersion.substring(2);
}
int end = 0;
while (end < javaVersion.length() && Character.isDigit(javaVersion.charAt(end))) {
end++;
}
return Integer.parseInt(javaVersion.substring(0, end));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,8 @@ protected int expectedWarnings() {

@Override
protected Collection<String> expectedOutputFiles() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
// assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,8 @@ protected int expectedWarnings() {

@Override
protected Collection<String> expectedOutputFiles() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("9.0")
|| javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
// assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,8 @@ protected int expectedWarnings() {

@Override
protected Collection<String> expectedOutputFiles() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("9.0")
|| javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
// assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level
if (getJavaFeatureVersion() >= 9) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ protected int expectedWarnings() {
String javaVersion = getJavaVersion();
if (javaVersion.startsWith("1.8")) {
return 1;
} else if (Runtime.version().feature() >= 21) {
} else if (getJavaFeatureVersion() >= 21) {
// javac 21 and later also warn that -source 8 and -target 8 are obsolete
return 5;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,12 @@ protected String getRoleHint() {

@Override
protected int expectedErrors() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
if (getJavaFeatureVersion() >= 11) {
return 5;
}
// javac output changed for misspelled modifiers starting in 1.6...they now generate 2 errors per occurrence,
// not one.
if ("1.5".compareTo(javaVersion) < 0) {
if ("1.5".compareTo(getJavaVersion()) < 0) {
return 4;
} else {
return 3;
Expand All @@ -79,103 +75,46 @@ protected int expectedErrors() {

@Override
protected int expectedWarnings() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
if (getJavaFeatureVersion() >= 11) {
return 1;
}
String javaVersion = getJavaVersion();
if (javaVersion.contains("1.8")) {
// lots of new warnings about obsoletions for future releases
return 30;
}

if ("1.6".compareTo(javaVersion) < 0) {
// with 1.7 some warning with bootstrap class path not set in conjunction with -source 1.3
return 9;
}

return 2;
}

@Override
public String getTargetVersion() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("9.0")) {
int javaFeatureVersion = getJavaFeatureVersion();
if (javaFeatureVersion >= 11) {
return Integer.toString(javaFeatureVersion);
} else if (getJavaVersion().contains("9.0")) {
return "1.7";
} else if (javaVersion.contains("11")) {
return "11";
} else if (javaVersion.contains("14")) {
return "14";
} else if (javaVersion.contains("15")) {
return "15";
} else if (javaVersion.contains("16")) {
return "16";
} else if (javaVersion.contains("17")) {
return "17";
} else if (javaVersion.contains("18")) {
return "18";
} else if (javaVersion.contains("19")) {
return "19";
} else if (javaVersion.contains("20")) {
return "20";
} else if (javaVersion.contains("21")) {
return "21";
} else if (javaVersion.contains("22")) {
return "22";
} else if (javaVersion.contains("23")) {
return "23";
} else if (javaVersion.contains("24")) {
return "24";
} else if (javaVersion.contains("25")) {
return "25";
}
return super.getTargetVersion();
}

@Override
public String getSourceVersion() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("9.0")) {
int javaFeatureVersion = getJavaFeatureVersion();
if (javaFeatureVersion >= 11) {
return Integer.toString(javaFeatureVersion);
} else if (getJavaVersion().contains("9.0")) {
return "1.7";
} else if (javaVersion.contains("11")) {
return "11";
} else if (javaVersion.contains("14")) {
return "14";
} else if (javaVersion.contains("15")) {
return "15";
} else if (javaVersion.contains("16")) {
return "16";
} else if (javaVersion.contains("17")) {
return "17";
} else if (javaVersion.contains("18")) {
return "18";
} else if (javaVersion.contains("19")) {
return "19";
} else if (javaVersion.contains("20")) {
return "20";
} else if (javaVersion.contains("21")) {
return "21";
} else if (javaVersion.contains("22")) {
return "22";
} else if (javaVersion.contains("23")) {
return "23";
} else if (javaVersion.contains("24")) {
return "24";
} else if (javaVersion.contains("25")) {
return "25";
}
return super.getSourceVersion();
}

@Override
protected Collection<String> expectedOutputFiles() {
String javaVersion = getJavaVersion();
if (javaVersion.contains("11")
|| javaVersion.contains("17")
|| javaVersion.contains("21")
|| javaVersion.contains("25")) {
if (getJavaFeatureVersion() >= 11) {
return Arrays.asList(
"org/codehaus/foo/Deprecation.class",
"org/codehaus/foo/ExternalDeps.class",
Expand Down
Loading