Skip to content
Merged
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 @@ -45,7 +45,8 @@ public class JavaVersionImpl implements JavaVersion {
private static final int JAVA_23 = 23;
private static final int JAVA_24 = 24;
private static final int JAVA_25 = 25;
public static final int MAX_SUPPORTED = JAVA_25;
private static final int JAVA_26 = 26;
public static final int MAX_SUPPORTED = JAVA_26;

private final int javaVersion;
private final boolean previewFeaturesEnabled;
Expand Down Expand Up @@ -173,6 +174,11 @@ public boolean isJava25Compatible() {
return JAVA_25 <= javaVersion;
}

@Override
public boolean isJava26Compatible() {
return JAVA_26 <= javaVersion;
}

private boolean notSetOrAtLeast(int requiredJavaVersion) {
return isNotSet() || requiredJavaVersion <= javaVersion;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,14 @@ public interface JavaVersion {
*/
boolean isJava25Compatible();

/**
* Test if java version of the project is greater than or equal to 26.
* Remark - Contrary to other isJava*Compatible methods, this one will NOT return true if version is not set
* @return true if java version used is >= 26
* @since SonarJava 8.34: Support of Java 26
*/
boolean isJava26Compatible();

/**
* get java version as integer
* @return an int representing the java version
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,12 @@ void no_version_set() {
assertThat(version.isJava23Compatible()).isFalse();
assertThat(version.isJava24Compatible()).isFalse();
assertThat(version.isJava25Compatible()).isFalse();
assertThat(version.isJava26Compatible()).isFalse();
assertThat(version.asInt()).isEqualTo(-1);
}

@ParameterizedTest(name = "JavaVersion: \"{0}\"")
@ValueSource(ints = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 42})
@ValueSource(ints = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 42})
void java_versions(int javaVersionAsInt) {
JavaVersion version = new JavaVersionImpl(javaVersionAsInt);
assertThat(version.isSet()).isTrue();
Expand All @@ -81,6 +82,7 @@ void java_versions(int javaVersionAsInt) {
assertThat(version.isJava23Compatible()).isEqualTo(javaVersionAsInt >= 23);
assertThat(version.isJava24Compatible()).isEqualTo(javaVersionAsInt >= 24);
assertThat(version.isJava25Compatible()).isEqualTo(javaVersionAsInt >= 25);
assertThat(version.isJava26Compatible()).isEqualTo(javaVersionAsInt >= 26);

assertThat(version.asInt()).isEqualTo(javaVersionAsInt);
}
Expand All @@ -101,9 +103,9 @@ void compatibilityMesssages() {

@Test
void test_effective_java_version() {
assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("25");
assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("26");
assertThat(new JavaVersionImpl(10).effectiveJavaVersionAsString()).isEqualTo("10");
assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("25");
assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("26");
}

@Test
Expand Down
Loading