Skip to content

Commit 60de31f

Browse files
SONARJAVA-6512 Enable analysis of Java 26 (#5696)
Co-authored-by: rombirli <56340680+rombirli@users.noreply.github.com>
1 parent a796fdc commit 60de31f

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

java-frontend/src/main/java/org/sonar/java/model/JavaVersionImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public class JavaVersionImpl implements JavaVersion {
4545
private static final int JAVA_23 = 23;
4646
private static final int JAVA_24 = 24;
4747
private static final int JAVA_25 = 25;
48-
public static final int MAX_SUPPORTED = JAVA_25;
48+
private static final int JAVA_26 = 26;
49+
public static final int MAX_SUPPORTED = JAVA_26;
4950

5051
private final int javaVersion;
5152
private final boolean previewFeaturesEnabled;
@@ -173,6 +174,11 @@ public boolean isJava25Compatible() {
173174
return JAVA_25 <= javaVersion;
174175
}
175176

177+
@Override
178+
public boolean isJava26Compatible() {
179+
return JAVA_26 <= javaVersion;
180+
}
181+
176182
private boolean notSetOrAtLeast(int requiredJavaVersion) {
177183
return isNotSet() || requiredJavaVersion <= javaVersion;
178184
}

java-frontend/src/main/java/org/sonar/plugins/java/api/JavaVersion.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,14 @@ public interface JavaVersion {
173173
*/
174174
boolean isJava25Compatible();
175175

176+
/**
177+
* Test if java version of the project is greater than or equal to 26.
178+
* Remark - Contrary to other isJava*Compatible methods, this one will NOT return true if version is not set
179+
* @return true if java version used is >= 26
180+
* @since SonarJava 8.34: Support of Java 26
181+
*/
182+
boolean isJava26Compatible();
183+
176184
/**
177185
* get java version as integer
178186
* @return an int representing the java version

java-frontend/src/test/java/org/sonar/java/model/JavaVersionImplTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@ void no_version_set() {
5454
assertThat(version.isJava23Compatible()).isFalse();
5555
assertThat(version.isJava24Compatible()).isFalse();
5656
assertThat(version.isJava25Compatible()).isFalse();
57+
assertThat(version.isJava26Compatible()).isFalse();
5758
assertThat(version.asInt()).isEqualTo(-1);
5859
}
5960

6061
@ParameterizedTest(name = "JavaVersion: \"{0}\"")
61-
@ValueSource(ints = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 42})
62+
@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})
6263
void java_versions(int javaVersionAsInt) {
6364
JavaVersion version = new JavaVersionImpl(javaVersionAsInt);
6465
assertThat(version.isSet()).isTrue();
@@ -81,6 +82,7 @@ void java_versions(int javaVersionAsInt) {
8182
assertThat(version.isJava23Compatible()).isEqualTo(javaVersionAsInt >= 23);
8283
assertThat(version.isJava24Compatible()).isEqualTo(javaVersionAsInt >= 24);
8384
assertThat(version.isJava25Compatible()).isEqualTo(javaVersionAsInt >= 25);
85+
assertThat(version.isJava26Compatible()).isEqualTo(javaVersionAsInt >= 26);
8486

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

102104
@Test
103105
void test_effective_java_version() {
104-
assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("25");
106+
assertThat(new JavaVersionImpl().effectiveJavaVersionAsString()).isEqualTo("26");
105107
assertThat(new JavaVersionImpl(10).effectiveJavaVersionAsString()).isEqualTo("10");
106-
assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("25");
108+
assertThat(new JavaVersionImpl(-1).effectiveJavaVersionAsString()).isEqualTo("26");
107109
}
108110

109111
@Test

0 commit comments

Comments
 (0)