aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java4
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java7
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java7
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java7
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java7
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java6
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java7
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java11
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java11
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java39
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java27
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java8
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java2
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java (renamed from tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196PreviewFeaturesTests.java)6
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java40
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java64
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java9
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java (renamed from tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197PreviewFeaturesTests.java)27
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java87
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml81
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml69
-rw-r--r--util/src/main/java/org/aspectj/util/LangUtil.java4
22 files changed, 376 insertions, 154 deletions
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java
index fbf88ae88..285d024b6 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java
@@ -94,8 +94,8 @@ public interface Constants {
short MINOR_14 = 0;
short MAJOR_15 = 59;
short MINOR_15 = 0;
-// short MAJOR_16 = 60;
-// short MINOR_16 = 0;
+ short MAJOR_16 = 60;
+ short MINOR_16 = 0;
// short MAJOR_17 = 61;
// short MINOR_17 = 0;
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java
index 4a8c63f11..753de0c80 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java
@@ -21,11 +21,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava10OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is10VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is10VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 10 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
index 18181d60e..1bfcdd580 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
@@ -21,11 +21,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava11OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is11VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is11VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 11 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
index c3242a36b..e1a847f4e 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
@@ -21,11 +21,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava12OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is12VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is12VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 12 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java
index 92193f540..2ce1ee80e 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java
@@ -21,11 +21,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava13OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is13VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is13VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 13 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java
index 5a25c9a73..8e90ead3a 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java
@@ -8,8 +8,6 @@
* ******************************************************************/
package org.aspectj.testing;
-import org.aspectj.util.LangUtil;
-
/**
* Makes sure tests are running on the right level of JDK.
*
@@ -18,7 +16,7 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava14Only extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
+ public void setUp() throws Exception {
throw new IllegalStateException(
"These tests need a Java 14 level AspectJ compiler " +
"(e.g. because they use version-specific preview features). " +
@@ -31,7 +29,7 @@ public abstract class XMLBasedAjcTestCaseForJava14Only extends XMLBasedAjcTestCa
"(e.g. because they use version-specific preview features)"
);
}
- super.runTest(title);
+ super.setUp();
*/
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java
index 15c1ac568..73df02f4a 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java
@@ -18,11 +18,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava14OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is14VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is14VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 14 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java
index 82fe4045c..0e9f43d83 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java
@@ -8,8 +8,6 @@
* ******************************************************************/
package org.aspectj.testing;
-import org.aspectj.util.LangUtil;
-
/**
* Makes sure tests are running on the right level of JDK.
*
@@ -18,22 +16,21 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava15Only extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- // Activate this block after upgrading to JDT Core Java 16
- /*
+ public void setUp() throws Exception {
throw new IllegalStateException(
"These tests need a Java 15 level AspectJ compiler " +
"(e.g. because they use version-specific preview features). " +
"This compiler does not support preview features of a previous version anymore."
);
- */
+ /*
if (!LangUtil.is15VMOrGreater() || LangUtil.is16VMOrGreater()) {
throw new IllegalStateException(
"These tests should be run on Java 15 only " +
"(e.g. because they use version-specific preview features)"
);
}
- super.runTest(title);
+ super.setUp();
+ */
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java
index 90b7feda1..72033daf5 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java
@@ -1,5 +1,5 @@
/* *******************************************************************
- * Copyright (c) 2020 Contributors
+ * Copyright (c) 2021 Contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
@@ -13,16 +13,15 @@ import org.aspectj.util.LangUtil;
/**
* Makes sure tests are running on the right level of JDK.
*
- * @author Andy Clement
+ * @author Alexander Kriegisch
*/
public abstract class XMLBasedAjcTestCaseForJava15OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- if (!LangUtil.is15VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is15VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 15 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java
new file mode 100644
index 000000000..dc51db8ca
--- /dev/null
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java
@@ -0,0 +1,39 @@
+/* *******************************************************************
+ * Copyright (c) 2021 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * ******************************************************************/
+package org.aspectj.testing;
+
+import org.aspectj.util.LangUtil;
+
+/**
+ * Makes sure tests are running on the right level of JDK.
+ *
+ * @author Alexander Kriegisch
+ */
+public abstract class XMLBasedAjcTestCaseForJava16Only extends XMLBasedAjcTestCase {
+
+ @Override
+ public void setUp() throws Exception {
+ // Activate this block after upgrading to JDT Core Java 17
+ /*
+ throw new IllegalStateException(
+ "These tests need a Java 16 level AspectJ compiler " +
+ "(e.g. because they use version-specific preview features). " +
+ "This compiler does not support preview features of a previous version anymore."
+ );
+ */
+ if (!LangUtil.is16VMOrGreater() || LangUtil.is17VMOrGreater()) {
+ throw new IllegalStateException(
+ "These tests should be run on Java 16 only " +
+ "(e.g. because they use version-specific preview features)"
+ );
+ }
+ super.setUp();
+ }
+
+}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java
new file mode 100644
index 000000000..6fd29c8d3
--- /dev/null
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java
@@ -0,0 +1,27 @@
+/* *******************************************************************
+ * Copyright (c) 2021 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * ******************************************************************/
+package org.aspectj.testing;
+
+import org.aspectj.util.LangUtil;
+
+/**
+ * Makes sure tests are running on the right level of JDK.
+ *
+ * @author Alexander Kriegisch
+ */
+public abstract class XMLBasedAjcTestCaseForJava16OrLater extends XMLBasedAjcTestCase {
+
+ @Override
+ public void setUp() throws Exception {
+ if (!LangUtil.is16VMOrGreater())
+ throw new IllegalStateException("These tests should be run on Java 16 or later");
+ super.setUp();
+ }
+
+}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java
index 19e80c474..0be3424ef 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java
@@ -21,12 +21,10 @@ import org.aspectj.util.LangUtil;
public abstract class XMLBasedAjcTestCaseForJava9OrLater extends XMLBasedAjcTestCase {
@Override
- public void runTest(String title) {
- // Check we are on Java9 or later
- if (!LangUtil.is9VMOrGreater()) {
+ public void setUp() throws Exception {
+ if (!LangUtil.is9VMOrGreater())
throw new IllegalStateException("These tests should be run on Java 9 or later");
- }
- super.runTest(title);
+ super.setUp();
}
}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java
index 7fd25c04b..045ef6e47 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java
@@ -37,8 +37,6 @@ public class Ajc196Tests extends XMLBasedAjcTestCaseForJava14OrLater {
checkVersion("Switch3", Constants.MAJOR_14, 0);
}
- // ---
-
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Ajc196Tests.class);
}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java
index 56c95a265..28a2a75c9 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196PreviewFeaturesTests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java
@@ -16,7 +16,7 @@ import junit.framework.Test;
/**
* @author Alexander Kriegisch
*/
-public class Ajc196PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava14Only {
+public class Java14PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava14Only {
public void testRecords() {
runTest("simple record");
@@ -43,10 +43,8 @@ public class Ajc196PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava14Only
runTest("textblock 2");
}
- // ---
-
public static Test suite() {
- return XMLBasedAjcTestCase.loadSuite(Ajc196PreviewFeaturesTests.class);
+ return XMLBasedAjcTestCase.loadSuite(Java14PreviewFeaturesTests.class);
}
@Override
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java
deleted file mode 100644
index bd6600f49..000000000
--- a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2021 Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-package org.aspectj.systemtest.ajc197;
-
-import junit.framework.Test;
-import org.aspectj.testing.XMLBasedAjcTestCase;
-import org.aspectj.testing.XMLBasedAjcTestCaseForJava15OrLater;
-
-/**
- * @author Alexander Kriegisch
- */
-public class Ajc197Tests extends XMLBasedAjcTestCaseForJava15OrLater {
-
- public void testHiddenClass() {
- runTest("hidden class");
- }
-
- public void testTextBlock1() {
- runTest("textblock 1");
- }
-
- public void testTextBlock2() {
- runTest("textblock 2");
- }
-
- public static Test suite() {
- return XMLBasedAjcTestCase.loadSuite(Ajc197Tests.class);
- }
-
- @Override
- protected java.net.URL getSpecFile() {
- return getClassResource("ajc197.xml");
- }
-
-}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java
new file mode 100644
index 000000000..081da9736
--- /dev/null
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc197;
+
+import junit.framework.Test;
+import org.aspectj.apache.bcel.Constants;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCaseForJava16OrLater;
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class Ajc197TestsJava extends XMLBasedAjcTestCaseForJava16OrLater {
+
+ public void testHiddenClass() {
+ runTest("hidden class");
+ checkVersion("HiddenClassDemo", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testTextBlock1() {
+ runTest("textblock 1");
+ checkVersion("Code", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testTextBlock2() {
+ runTest("textblock 2");
+ checkVersion("Code2", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testRecords() {
+ runTest("simple record");
+ checkVersion("Person", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testRecords2() {
+ runTest("using a record");
+ checkVersion("UsingPersonRecord", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testAdvisingRecords() {
+ runTest("advising records");
+ checkVersion("TraceRecordComponents", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public void testInstanceofPatterns() {
+ runTest("instanceof patterns");
+ checkVersion("Jep305", Constants.MAJOR_16, Constants.MINOR_16);
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc197TestsJava.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc197.xml");
+ }
+
+}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java
index 2b33099cb..995cd2976 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java
@@ -19,11 +19,14 @@ public class AllTestsAspectJ197 {
public static Test suite() {
TestSuite suite = new TestSuite("AspectJ 1.9.7 tests");
if (LangUtil.is15VMOrGreater()) {
- suite.addTest(Ajc197Tests.suite());
suite.addTest(SanityTestsJava15.suite());
}
- if (LangUtil.is15VMOrGreater() && !LangUtil.is16VMOrGreater()) {
- suite.addTest(Ajc197PreviewFeaturesTests.suite());
+ if (LangUtil.is16VMOrGreater()) {
+ suite.addTest(SanityTestsJava16.suite());
+ suite.addTest(Ajc197TestsJava.suite());
+ }
+ if (LangUtil.is16VMOrGreater() && !LangUtil.is17VMOrGreater()) {
+ suite.addTest(Java16PreviewFeaturesTests.suite());
}
return suite;
}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java
index 2c26ca441..e0c68ccd4 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197PreviewFeaturesTests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java
@@ -10,44 +10,31 @@ package org.aspectj.systemtest.ajc197;
import junit.framework.Test;
import org.aspectj.apache.bcel.Constants;
import org.aspectj.testing.XMLBasedAjcTestCase;
-import org.aspectj.testing.XMLBasedAjcTestCaseForJava15Only;
+import org.aspectj.testing.XMLBasedAjcTestCaseForJava16Only;
/**
* @author Alexander Kriegisch
*/
-public class Ajc197PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava15Only {
-
- public void testRecords() {
- runTest("simple record");
- checkVersion("Person", Constants.MAJOR_15, Constants.PREVIEW_MINOR_VERSION);
- }
-
- public void testRecords2() {
- runTest("using a record");
- }
-
- public void testInstanceofPatterns() {
- runTest("instanceof patterns");
- }
-
- public void testAdvisingRecords() {
- runTest("advising records");
- }
+public class Java16PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava16Only {
public void testSealedClassWithLegalSubclasses() {
runTest("sealed class with legal subclasses");
+ checkVersion("Employee", Constants.MAJOR_16, Constants.PREVIEW_MINOR_VERSION);
+ checkVersion("Manager", Constants.MAJOR_16, Constants.PREVIEW_MINOR_VERSION);
}
public void testSealedClassWithIllegalSubclass() {
runTest("sealed class with illegal subclass");
+ checkVersion("Person", Constants.MAJOR_16, Constants.PREVIEW_MINOR_VERSION);
}
public void testWeaveSealedClass() {
runTest("weave sealed class");
+ checkVersion("PersonAspect", Constants.MAJOR_16, Constants.PREVIEW_MINOR_VERSION);
}
public static Test suite() {
- return XMLBasedAjcTestCase.loadSuite(Ajc197PreviewFeaturesTests.class);
+ return XMLBasedAjcTestCase.loadSuite(Java16PreviewFeaturesTests.class);
}
@Override
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java
new file mode 100644
index 000000000..ed050f56b
--- /dev/null
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2021 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc197;
+
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCaseForJava16OrLater;
+
+/*
+ * Some very trivial tests that help verify things are OK.
+ * These are a copy of the earlier Sanity Tests created for 1.6 but these supply the -10 option
+ * to check code generation and modification with that version specified.
+ *
+ * @author Alexander Kriegisch
+ */
+public class SanityTestsJava16 extends XMLBasedAjcTestCaseForJava16OrLater {
+
+ public static final int bytecode_version_for_JDK_level = 60;
+
+ // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug)
+ public void testSimpleJava_A() {
+ runTest("simple - a");
+ }
+
+ public void testSimpleJava_B() {
+ runTest("simple - b");
+ }
+
+ public void testSimpleCode_C() {
+ runTest("simple - c");
+ }
+
+ public void testSimpleCode_D() {
+ runTest("simple - d");
+ }
+
+ public void testSimpleCode_E() {
+ runTest("simple - e");
+ }
+
+ public void testSimpleCode_F() {
+ runTest("simple - f");
+ }
+
+ public void testSimpleCode_G() {
+ runTest("simple - g");
+ }
+
+ public void testSimpleCode_H() {
+ runTest("simple - h", true);
+ }
+
+ public void testSimpleCode_I() {
+ runTest("simple - i");
+ }
+
+ public void testVersionCorrect1() {
+ runTest("simple - j");
+ checkVersion("A", bytecode_version_for_JDK_level, 0);
+ }
+
+ public void testVersionCorrect2() {
+ runTest("simple - k");
+ checkVersion("A", bytecode_version_for_JDK_level, 0);
+ }
+
+ public void testVersionCorrect4() {
+ runTest("simple - m");
+ // Must be 49.0 when -1.5 is specified
+ checkVersion("A", 49, 0);
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(SanityTestsJava16.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("sanity-tests-16.xml");
+ }
+
+}
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml
index 6f6edaff5..7ba29cde5 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml
@@ -2,9 +2,10 @@
<suite>
- <ajc-test dir="features197/java15" vm="15" title="hidden class">
- <compile files="HiddenClassDemo.java" options="-15" />
- <compile files="HiddenClass.java" options="-15 -outjar hidden.jar"/>
+ <!-- Java 15 final, no preview -->
+ <ajc-test dir="features197/java15" vm="16" title="hidden class">
+ <compile files="HiddenClassDemo.java" options="-16" />
+ <compile files="HiddenClass.java" options="-16 -outjar hidden.jar"/>
<run class="HiddenClassDemo" classpath="hidden.jar">
<stdout>
<line text="Hidden class name = HiddenClass/" />
@@ -15,14 +16,15 @@
</run>
</ajc-test>
- <ajc-test dir="features196/java14" vm="15" title="simple record">
- <compile files="Person.java" options="--enable-preview -15" />
+ <!-- Java 16 final, Java 15, 14 preview -->
+ <ajc-test dir="features196/java14" vm="16" title="simple record">
+ <compile files="Person.java" options="-16" />
</ajc-test>
- <ajc-test dir="features196/java14" vm="15" title="using a record">
- <compile files="Person.java UsingPersonRecord.java"
- options="--enable-preview -15" />
- <run class="UsingPersonRecord" vmargs="--enable-preview">
+ <!-- Java 16 final, Java 15, 14 preview -->
+ <ajc-test dir="features196/java14" vm="16" title="using a record">
+ <compile files="Person.java UsingPersonRecord.java" options="-16" />
+ <run class="UsingPersonRecord">
<stdout>
<line text="Person[firstName=A, lastName=B, age=99]" />
<line text="A" />
@@ -30,37 +32,33 @@
</run>
</ajc-test>
- <ajc-test dir="features196/java14" vm="15"
- title="instanceof patterns">
- <compile files="Jep305.java" options="--enable-preview -15" />
- <run class="Jep305" vmargs="--enable-preview">
+ <!-- Java 16 final, Java 15, 14 preview -->
+ <ajc-test dir="features196/java14" vm="16" title="advising records">
+ <compile files="TraceRecordComponents.aj Person.java UsingPersonRecord.java" options="-16" />
+ <run class="UsingPersonRecord">
<stdout>
- <line text="orange" />
- <line text="apple" />
+ <line text="execution(String Person.toString())" />
+ <line text="Person[firstName=A, lastName=B, age=99]" />
+ <line text="execution(String Person.firstName())" />
+ <line text="A" />
</stdout>
</run>
</ajc-test>
- <ajc-test dir="features196/java14" vm="15"
- title="advising records">
- <compile
- files="TraceRecordComponents.aj Person.java UsingPersonRecord.java"
- options="--enable-preview -15" />
- <run class="UsingPersonRecord" vmargs="--enable-preview">
+ <!-- Java 16 final, Java 15, 14 preview -->
+ <ajc-test dir="features196/java14" vm="16" title="instanceof patterns">
+ <compile files="Jep305.java" options="-16" />
+ <run class="Jep305">
<stdout>
- <line text="execution(String Person.toString())" />
- <line text="Person[firstName=A, lastName=B, age=99]" />
- <line text="execution(String Person.firstName())" />
- <line text="A" />
+ <line text="orange" />
+ <line text="apple" />
</stdout>
</run>
</ajc-test>
- <!-- textblock now in Java15 and doesn't need -enable-preview flag -->
- <ajc-test dir="features195/textblock" vm="15"
- title="textblock 1">
- <compile files="Code.java"
- options="-source 15">
+ <!-- Java 15 final, Java 14, 13 preview -->
+ <ajc-test dir="features195/textblock" vm="16" title="textblock 1">
+ <compile files="Code.java" options="-source 16">
</compile>
<run class="Code">
<stdout>
@@ -70,11 +68,9 @@
</run>
</ajc-test>
- <!-- textblock now in Java15 and doesn't need -enable-preview flag -->
- <ajc-test dir="features195/textblock" vm="15"
- title="textblock 2">
- <compile files="Code2.java"
- options="-source 15">
+ <!-- Java 15 final, Java 14, 13 preview -->
+ <ajc-test dir="features195/textblock" vm="16" title="textblock 2">
+ <compile files="Code2.java" options="-source 16">
</compile>
<run class="Code2">
<stdout>
@@ -84,18 +80,21 @@
</run>
</ajc-test>
- <ajc-test dir="features197/java15" vm="15" title="sealed class with legal subclasses">
- <compile files="Person.java Employee.java Manager.java" options="--enable-preview -15" />
+ <!-- Java ?? final, Java 16, 15 preview -->
+ <ajc-test dir="features197/java15" vm="16" title="sealed class with legal subclasses">
+ <compile files="Person.java Employee.java Manager.java" options="--enable-preview -16" />
</ajc-test>
- <ajc-test dir="features197/java15" vm="15" title="sealed class with illegal subclass">
- <compile files="Person.java Employee.java Manager.java PersonaNonGrata.java" options="--enable-preview -15">
+ <!-- Java ?? final, Java 16, 15 preview -->
+ <ajc-test dir="features197/java15" vm="16" title="sealed class with illegal subclass">
+ <compile files="Person.java Employee.java Manager.java PersonaNonGrata.java" options="--enable-preview -16">
<message kind="error" file="PersonaNonGrata.java" text="should be a permitted subtype of Person"/>
</compile>
</ajc-test>
- <ajc-test dir="features197/java15" vm="15" title="weave sealed class">
- <compile files="Person.java Employee.java Manager.java TopManager.java PersonAspect.aj" options="--enable-preview -15" />
+ <!-- Java ?? final, Java 16, 15 preview -->
+ <ajc-test dir="features197/java15" vm="16" title="weave sealed class">
+ <compile files="Person.java Employee.java Manager.java TopManager.java PersonAspect.aj" options="--enable-preview -16" />
<run class="TopManager" vmargs="--enable-preview">
<stdout>
<line text="Hello Sir John" />
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml
new file mode 100644
index 000000000..d6cb9ab8b
--- /dev/null
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml
@@ -0,0 +1,69 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
+
+<suite>
+
+ <!-- empty class -->
+ <ajc-test dir="bugs160/simplejava" title="simple - a">
+ <compile files="SimpleA.java" options="-16"/>
+ </ajc-test>
+
+ <!-- class with one method -->
+ <ajc-test dir="bugs160/simplejava" title="simple - b">
+ <compile files="SimpleB.java" options="-16"/>
+ <run class="SimpleB"/>
+ </ajc-test>
+
+ <!-- empty aspect -->
+ <ajc-test dir="bugs160/simplejava" title="simple - c">
+ <compile files="SimpleC.java" options="-16"/>
+ </ajc-test>
+
+ <!-- simple before -->
+ <ajc-test dir="bugs160/simplejava" title="simple - d">
+ <compile files="SimpleD.java" options="-16"/>
+ </ajc-test>
+
+ <!-- simple itd field -->
+ <ajc-test dir="bugs160/simplejava" title="simple - e">
+ <compile files="SimpleE.java" options="-16"/>
+ </ajc-test>
+
+ <!-- aspect with main calling a static method -->
+ <ajc-test dir="bugs160/simplejava" title="simple - f">
+ <compile files="SimpleF.java" options="-16"/>
+ </ajc-test>
+
+ <!-- pertarget -->
+ <ajc-test dir="bugs160/simplejava" title="simple - g">
+ <compile files="SimpleG.java" options="-16"/>
+ </ajc-test>
+
+ <!-- generic ctor itds -->
+ <ajc-test dir="bugs160/simplejava" title="simple - h">
+ <compile files="SimpleH.java" options="-16"/>
+ </ajc-test>
+
+ <!-- overriding generic itd methods -->
+ <ajc-test dir="bugs160/simplejava" title="simple - i">
+ <compile files="SimpleI.java" options="-16"/>
+ </ajc-test>
+
+ <!-- check class file version is 60.0 (Java 16) -->
+ <ajc-test dir="bugs160/simplejava" title="simple - j">
+ <compile files="SimpleJ.java" options="-16"/>
+ </ajc-test>
+
+ <!-- check class file version is 60.0 (Java 16) -->
+ <ajc-test dir="bugs160/simplejava" title="simple - k">
+ <compile files="SimpleJ.java" options="-source 16"/>
+ </ajc-test>
+
+ <!-- check class file version is 49.0 -->
+ <ajc-test dir="bugs160/simplejava" title="simple - m">
+ <compile files="SimpleJ.java" options="-1.5"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs160/simplejava" title="simple - n">
+ <compile files="SimpleN.java" options="-16"/>
+ </ajc-test>
+</suite>
diff --git a/util/src/main/java/org/aspectj/util/LangUtil.java b/util/src/main/java/org/aspectj/util/LangUtil.java
index a0535d389..8128174aa 100644
--- a/util/src/main/java/org/aspectj/util/LangUtil.java
+++ b/util/src/main/java/org/aspectj/util/LangUtil.java
@@ -186,6 +186,10 @@ public class LangUtil {
return 16 <= vmVersion;
}
+ public static boolean is17VMOrGreater() {
+ return 17 <= vmVersion;
+ }
+
/**
* Shorthand for "if null, throw IllegalArgumentException"
*