Browse Source

Enable some tests after J19 problems were fixed for J21

Two test classes which had redundant default clauses for switch with
record patterns were copied from the java19 to the java21 directory and
the redundant clauses deactivated, i.e. the test now run as originally
intended. For older JDK versions, the old tests still stay active in
order to document the old state of affairs.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_21_M1
Alexander Kriegisch 6 months ago
parent
commit
70f3c09bcd

+ 4
- 2
tests/features1919/java19/RecordPatternsPreview1ExhaustivenessAspect.aj View File

@@ -13,7 +13,8 @@ public aspect RecordPatternsPreview1ExhaustivenessAspect {
switch (pair) {
case Pair<I>(I i, C c) -> System.out.println("x");
case Pair<I>(I i, D d) -> System.out.println("y");
// TODO: Remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed
// TODO: Remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed.
// Fixed since Java 21, see features1921/java21/RecordPatternsPreview1ExhaustivenessAspect.aj.
default -> System.out.println("z");
}

@@ -21,7 +22,8 @@ public aspect RecordPatternsPreview1ExhaustivenessAspect {
case Pair<I>(C c, I i) -> System.out.println("a");
case Pair<I>(D d, C c) -> System.out.println("b");
case Pair<I>(D d1, D d2) -> System.out.println("c");
// TODO: remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed
// TODO: remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed.
// Fixed since Java 21, see features1921/java21/RecordPatternsPreview1ExhaustivenessAspect.aj.
default -> System.out.println("d");
}
}

+ 4
- 2
tests/features1919/java19/RecordPatternsPreview1ExhaustivenessOK1.java View File

@@ -10,7 +10,8 @@ public class RecordPatternsPreview1ExhaustivenessOK1 {
switch (p2) {
case Pair<I>(I i, C c) -> System.out.println("x");
case Pair<I>(I i, D d) -> System.out.println("y");
// TODO: Remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed
// TODO: Remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed.
// Fixed since Java 21, see features1921/java21/RecordPatternsPreview1ExhaustivenessOK1.java.
default -> System.out.println("z");
}

@@ -18,7 +19,8 @@ public class RecordPatternsPreview1ExhaustivenessOK1 {
case Pair<I>(C c, I i) -> System.out.println("a");
case Pair<I>(D d, C c) -> System.out.println("b");
case Pair<I>(D d1, D d2) -> System.out.println("c");
// TODO: remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed
// TODO: Remove redundant default clause when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed.
// Fixed since Java 21, see features1921/java21/RecordPatternsPreview1ExhaustivenessOK1.java.
default -> System.out.println("d");
}
}

+ 35
- 0
tests/features1921/java21/RecordPatternsPreview1ExhaustivenessAspect.aj View File

@@ -0,0 +1,35 @@
public aspect RecordPatternsPreview1ExhaustivenessAspect {
static Pair<I> p2 = new Pair<>(new C(), new D());

public static void main(String[] args) {
doSomething(p2);
}

public static void doSomething(Pair<I> pair) {
System.out.println(pair.toString().replaceAll("@[0-9a-f]+", "@000"));
}

before(Pair<I> pair) : execution(* doSomething(Pair)) && args(pair) {
switch (pair) {
case Pair<I>(I i, C c) -> System.out.println("x");
case Pair<I>(I i, D d) -> System.out.println("y");
// Redundant default clause no longer necessary after fix of https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455.
// Old version with default clause see features1919/java19/RecordPatternsPreview1ExhaustivenessAspect.aj.
// default -> System.out.println("z");
}

switch (pair) {
case Pair<I>(C c, I i) -> System.out.println("a");
case Pair<I>(D d, C c) -> System.out.println("b");
case Pair<I>(D d1, D d2) -> System.out.println("c");
// Redundant default clause no longer necessary after fix of https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455.
// Old version with default clause see features1919/java19/RecordPatternsPreview1ExhaustivenessAspect.aj.
// default -> System.out.println("d");
}
}
}

sealed interface I permits C, D { }
final class C implements I { }
final class D implements I { }
record Pair<T>(T x, T y) { }

+ 7
- 13
tests/src/test/java/org/aspectj/systemtest/ajc1921/Ajc1921TestsJava.java View File

@@ -59,10 +59,8 @@ public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater {
}

public void testRecordPatternsPreview1ExhaustivenessOK1() {
// Falsely throws 'An enhanced switch statement should be exhaustive; a default label expected' twice,
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455
// TODO: Remove redundant default clauses when fixed upstream
System.out.println("TODO: fully activate when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed");
// Used to falsely throw 'An enhanced switch statement should be exhaustive; a default label expected' twice,
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455. Fixed in Java 21.
runTest("record patterns exhaustiveness 1");
}

@@ -71,10 +69,8 @@ public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater {
}

public void testRecordPatternsPreview1ExhaustivenessAspect() {
// Falsely throws 'An enhanced switch statement should be exhaustive; a default label expected' twice,
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455
// TODO: Remove redundant default clauses when fixed upstream
System.out.println("TODO: fully activate when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed");
// Used to falsely throw 'An enhanced switch statement should be exhaustive; a default label expected' twice,
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455. Fixed in Java 21.
runTest("record patterns exhaustiveness aspect");
}

@@ -84,11 +80,9 @@ public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater {
}

public void testRecordPatternsPreview1ExhaustivenessOK2() {
// Falsely throws 'An enhanced switch statement should be exhaustive; a default label expected',
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/398
// TODO: activate when fixed
System.out.println("TODO: activate when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/398 has been fixed");
//runTest("record patterns exhaustiveness 2");
// Used to falsely throw 'An enhanced switch statement should be exhaustive; a default label expected',
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/398. Fixed in Java 21.
runTest("record patterns exhaustiveness 2");
}

public static Test suite() {

+ 2
- 3
tests/src/test/resources/org/aspectj/systemtest/ajc1921/ajc1921.xml View File

@@ -139,7 +139,7 @@
</ajc-test>

<!-- Java 21 final, Java 19, 20 preview -->
<ajc-test dir="features1919/java19" vm="21" title="record patterns exhaustiveness 1">
<ajc-test dir="features1921/java21" vm="21" title="record patterns exhaustiveness 1">
<compile files="RecordPatternsPreview1ExhaustivenessOK1.java" options="-21"/>
<run class="RecordPatternsPreview1ExhaustivenessOK1" vmargs="">
<stdout>
@@ -150,9 +150,8 @@
</ajc-test>

<!-- Java 21 final, Java 19, 20 preview -->
<ajc-test dir="features1919/java19" vm="21" title="record patterns exhaustiveness aspect">
<ajc-test dir="features1921/java21" vm="21" title="record patterns exhaustiveness aspect">
<compile files="RecordPatternsPreview1ExhaustivenessAspect.aj" options="-21"/>
<!-- TODO: Remove redundant default clauses when https://github.com/eclipse-jdt/eclipse.jdt.core/issues/455 has been fixed -->
<run class="RecordPatternsPreview1ExhaustivenessAspect" vmargs="">
<stdout>
<line text="y"/>

Loading…
Cancel
Save