<Directory> defaults to the current working dir.
// AspectJ_JDK_Update: increment max. version and, if necessary, min. version
-`-source <[1.3 to 21]>`::
+`-source <[1.3 to 22]>`::
Set source file Java language level
-`-target <[1.3 to 21]>`::
+`-target <[1.3 to 22]>`::
Set classfile Java bytecode level
-`-<[1.3 to 21]>`::
+`-<[1.3 to 22]>`::
Set compiler compliance level. Implies identical `-source` and `-target` levels.
E.g., `-11` implies `-source 11` and `-target 11`.
:doctype: book
:leveloffset: +1
-// AspectJ_JDK_Update: Each a.b.c release needs a new release notes document. For a.b.c.d minors, the existing a.b.c
-// document can be updated. After copying this document, remove the comment from the previous one.
-
The releases 1.9.21, 1.9.21.1 and 1.9.21.2 are described together in this document.
= AspectJ 1.9.21.2
compiler.name = AspectJ Compiler
# AspectJ_JDK_Update: Update not only for new Java versions, but each time JDT Core is updated with an upstream merge.
# Always make sure to update to the latest merge commit ID and date of the latest upstream commit.
-compiler.version = Eclipse Compiler 8398f6c1210ec3 (13Feb2024) - Java21
+compiler.version = Eclipse Compiler b2705b00e91be7 (20Mar2024) - Java22
compiler.copyright =
misc.version = {0} {1} - {2} {3}
// AspectJ_JDK_Update: Check minimum supported ECJ version, currently 1.3
public static final int JAVA_VERSION_MIN = 3;
// AspectJ_JDK_Update: Check maximum supported ECJ version
- public static final int JAVA_VERSION_MAX = 21;
+ public static final int JAVA_VERSION_MAX = 22;
static final String[] SOURCE_INPUTS;
static final String[] TARGET_INPUTS;
/**
* Examples taken from <a href="https://openjdk.org/jeps/443">JEP 443</a>
*/
-public class UnnamedPatternsPreview1Aspect {
+public aspect UnnamedPatternsPreview1Aspect {
public static void main(String[] args) {}
before() : execution(* main(String[])) {
import org.aspectj.systemtest.ajc192.AllTestsAspectJ192;
import org.aspectj.systemtest.ajc1920.AllTestsAspectJ1920;
import org.aspectj.systemtest.ajc1921.AllTestsAspectJ1921;
+import org.aspectj.systemtest.ajc1922.AllTestsAspectJ1922;
import org.aspectj.systemtest.ajc193.AllTestsAspectJ193;
import org.aspectj.systemtest.ajc195.AllTestsAspectJ195;
import org.aspectj.systemtest.ajc196.AllTestsAspectJ196;
suite.addTest(AllTestsAspectJ199.suite());
suite.addTest(AllTestsAspectJ1919.suite());
suite.addTest(AllTestsAspectJ1920.suite());
- // AspectJ_JDK_Update
suite.addTest(AllTestsAspectJ1921.suite());
+ // AspectJ_JDK_Update
+ suite.addTest(AllTestsAspectJ1922.suite());
suite.addTest(AllTests18.suite());
// $JUnit-END$
return suite;
import org.aspectj.tools.ant.taskdefs.AjcTask;
import org.aspectj.util.LangUtil;
-// AspectJ_JDK_Update
-// - Copy 'ajc*' package with all classes to a new package, incrementing the version number in the package
-// - Rename all classes, incrementing version numbers
-// - Add this class to the suite in class AllTests19
-// - Increment version numbers in strings, method calls and constants to the appropriate values, creating necessary
-// methods and constants classes providing them, if they do not exist yet
-// - Also increment references to 'ajc*.xml' and 'sanity-tests-*.xml' test definition, copying the previous
-// tests/src/test/resources/org/aspectj/systemtest/ajc* directory, incrementing all names and adjusting the XML
-// file contents appropriately
-// - Search for other 'AspectJ_JDK_Update' hints in the repository, also performing the necessary to-dos there
-// - Remove this comment from the previous class version after copying this one
-
/**
* @author Alexander Kriegisch
*/
/**
* Still not implemented with the Java 21 release Eclipse 2023-12 (4.30),
* see <a href="https://github.com/eclipse-jdt/eclipse.jdt.core/issues/893">GitHub issue 893</a>.
- * <p>
- * TODO: Activate after JDT Core implementation and merge.
*/
public void testUnnamedPatterns() {
//runTest("unnamed patterns");
/**
* Still not implemented with the Java 21 release Eclipse 2023-12 (4.30),
* see <a href="https://github.com/eclipse-jdt/eclipse.jdt.core/issues/893">GitHub issue 893</a>.
- * <p>
- * TODO: Activate after JDT Core implementation and merge.
*/
public void testUnnamedPatternsAspect() {
//runTest("unnamed patterns aspect");
/**
* Still not implemented with the Java 21 release Eclipse 2023-12 (4.30),
* see <a href="https://github.com/eclipse-jdt/eclipse.jdt.core/issues/1106">GitHub issue 1106</a>.
- * <p>
- * TODO: Activate after JDT Core implementation and merge.
*/
public void testUnnamedClassWithSimpleMainMethod() {
//runTest("unnamed class with simple main method");
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2024 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc1922;
+
+import junit.framework.Test;
+import org.aspectj.apache.bcel.Constants;
+import org.aspectj.systemtest.ajc10x.Ajc10xTests;
+import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class Ajc1922TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase {
+
+ private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(22);
+
+ public Ajc1922TestsJava() {
+ super(22);
+ }
+
+ public void testUnnamedPatterns() {
+ runTest("unnamed patterns");
+ }
+
+ public void testUnnamedPatternsAspect() {
+ runTest("unnamed patterns aspect");
+ }
+
+ /**
+ * Same as {@link Ajc10xTests#test052()}, but compiled to target 22 instead of 1.4
+ */
+ public void testUnderscoreInPointcutPattern1() {
+ runTest("underscore can still be used in pointcut patterns on Java 21+ - 1");
+ }
+
+ public void testUnderscoreInPointcutPattern2() {
+ runTest("underscore can still be used in pointcut patterns on Java 21+ - 2");
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc1922TestsJava.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc1922.xml");
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2024 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc1922;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.aspectj.tools.ant.taskdefs.AjcTask;
+import org.aspectj.util.LangUtil;
+
+// AspectJ_JDK_Update
+// - Copy 'ajc*' package with all classes to a new package, incrementing the version number in the package
+// - Rename all classes, incrementing version numbers
+// - Add this class to the suite in class AllTests19
+// - Increment version numbers in strings, method calls and constants to the appropriate values, creating necessary
+// methods and constants classes providing them, if they do not exist yet
+// - Also increment references to 'ajc*.xml' and 'sanity-tests-*.xml' test definition, copying the previous
+// tests/src/test/resources/org/aspectj/systemtest/ajc* directory, incrementing all names and adjusting the XML
+// file contents appropriately
+// - Search for other 'AspectJ_JDK_Update' hints in the repository, also performing the necessary to-dos there
+// - Remove this comment from the previous class version after copying this one
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class AllTestsAspectJ1922 {
+
+ private static final int JAVA_VERSION = 22;
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("AspectJ 1.9.22 tests");
+ suite.addTest(Bugs1922Tests.suite());
+ if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) {
+ suite.addTest(SanityTestsJava22.suite());
+ suite.addTest(Ajc1922TestsJava.suite());
+ }
+
+ // Do not run tests using a previous compiler's preview features anymore. They would all fail.
+ if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) {
+ if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) {
+ suite.addTest(Java22PreviewFeaturesTests.suite());
+ }
+ }
+ return suite;
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2024 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc1922;
+
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class Bugs1922Tests extends XMLBasedAjcTestCase {
+
+ public void testDummy() {
+ //runTest("dummy");
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Bugs1922Tests.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc1922.xml");
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2024 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc1922;
+
+import junit.framework.Test;
+import org.aspectj.systemtest.ajc10x.Ajc10xTests;
+import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+/**
+ * @author Alexander Kriegisch
+ */
+public class Java22PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase {
+
+ public Java22PreviewFeaturesTests() {
+ super(22, 22);
+ }
+
+ public void testStringPatterns() {
+ runTest("string patterns");
+ }
+
+ public void testStringPatternsAspect() {
+ runTest("string patterns aspect");
+ }
+
+ public void testNamedClassWithSimpleMainMethod() {
+ runTest("named class with simple main method");
+ }
+
+ public void testNamedAspectWithSimpleMainMethod() {
+ runTest("named aspect with simple main method");
+ }
+
+ /**
+ * Still not implemented with the Java 21 release Eclipse 2023-12 (4.30),
+ * see <a href="https://github.com/eclipse-jdt/eclipse.jdt.core/issues/1106">GitHub issue 1106</a>.
+ */
+ public void testUnnamedClassWithSimpleMainMethod() {
+ runTest("unnamed class with simple main method");
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Java22PreviewFeaturesTests.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc1922.xml");
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2024 Contributors
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ *******************************************************************************/
+package org.aspectj.systemtest.ajc1922;
+
+import junit.framework.Test;
+import org.aspectj.apache.bcel.Constants;
+import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+/*
+ * 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 -22 option
+ * to check code generation and modification with that version specified.
+ *
+ * @author Alexander Kriegisch
+ */
+public class SanityTestsJava22 extends JavaVersionSpecificXMLBasedAjcTestCase {
+
+ public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(22).MAJOR;
+
+ public SanityTestsJava22() {
+ super(22);
+ }
+
+ // 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", Constants.ClassFileVersion.of(5).MAJOR, 0);
+ }
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(SanityTestsJava22.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("sanity-tests-22.xml");
+ }
+
+}
<compile files="UnnamedPatternsPreview1.java" options="--enable-preview -21"/>
<run class="UnnamedPatternsPreview1" vmargs="--enable-preview">
<stdout ordered="yes">
+ <line text="2"/>
+ <line text="side effect"/>
<line text="0"/>
<line text="1"/>
<line text="java.awt.Point[x=1,y=2]"/>
<!-- Java 21 preview -->
<!-- TODO: Activate after https://github.com/eclipse-jdt/eclipse.jdt.core/issues/893 is done -->
<ajc-test dir="features1921/java21" vm="21" title="unnamed patterns aspect">
- <compile files="UnnamedPatternsPreview1Aspect.java" options="--enable-preview -21"/>
+ <compile files="UnnamedPatternsPreview1Aspect.aj" options="--enable-preview -21"/>
<run class="UnnamedPatternsPreview1Aspect" vmargs="--enable-preview">
<stdout ordered="yes">
<line text="execution(void UnnamedPatternsPreview1Aspect.main(String[]))"/>
+ <line text="2"/>
+ <line text="side effect"/>
<line text="0"/>
<line text="1"/>
<line text="java.awt.Point[x=1,y=2]"/>
--- /dev/null
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
+
+<!--
+ JDK 22 (https://openjdk.org/projects/jdk/22/):
+ Language features:
+ JEP 456: Unnamed Variables & Patterns
+ JEP 459: String Templates (Second Preview)
+ JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview)
+ JEP 447: Statements before super(...) (Preview)
+ API or JVM only:
+ JEP 423: Region Pinning for G1
+ JEP 454: Foreign Function & Memory API
+ JEP 458: Launch Multi-File Source-Code Programs
+ JEP 462: Structured Concurrency (Second Preview)
+ JEP 464: Scoped Values (Second Preview)
+ JEP 457: Class-File API (Preview)
+ JEP 461: Stream Gatherers (Preview)
+ JEP 460: Vector API (Seventh Incubator)
+-->
+<suite>
+
+ <!-- Java 22 final, 21 preview -->
+ <!-- TODO: Activate after https://github.com/eclipse-jdt/eclipse.jdt.core/issues/893 is done -->
+ <ajc-test dir="features1921/java21" vm="22" title="unnamed patterns">
+ <compile files="UnnamedPatternsPreview1.java" options="-22"/>
+ <run class="UnnamedPatternsPreview1">
+ <stdout ordered="yes">
+ <line text="2"/>
+ <line text="side effect"/>
+ <line text="0"/>
+ <line text="1"/>
+ <line text="java.awt.Point[x=1,y=2]"/>
+ <line text="java.awt.Point[x=4,y=5]"/>
+ <line text="java.awt.Point[x=1,y=0]"/>
+ <line text="java.awt.Point[x=4,y=0]"/>
+ <line text="Bad number: 123xy"/>
+ <line text="Doing something within scoped context"/>
+ <line text="Closing scoped context"/>
+ <line text="{ONE=NODATA, TWO=NODATA, THREE=NODATA}"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 22 final, 21 preview -->
+ <!-- TODO: Activate after https://github.com/eclipse-jdt/eclipse.jdt.core/issues/893 is done -->
+ <ajc-test dir="features1921/java21" vm="22" title="unnamed patterns aspect">
+ <compile files="UnnamedPatternsPreview1Aspect.aj" options="-22"/>
+ <run class="UnnamedPatternsPreview1Aspect">
+ <stdout ordered="yes">
+ <line text="execution(void UnnamedPatternsPreview1Aspect.main(String[]))"/>
+ <line text="2"/>
+ <line text="side effect"/>
+ <line text="0"/>
+ <line text="1"/>
+ <line text="java.awt.Point[x=1,y=2]"/>
+ <line text="java.awt.Point[x=4,y=5]"/>
+ <line text="java.awt.Point[x=1,y=0]"/>
+ <line text="java.awt.Point[x=4,y=0]"/>
+ <line text="Bad number: 123xy"/>
+ <line text="Doing something within scoped context"/>
+ <line text="Closing scoped context"/>
+ <line text="{ONE=NODATA, TWO=NODATA, THREE=NODATA}"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 22 final, 21 preview -->
+ <ajc-test dir="new" vm="22" title="underscore can still be used in pointcut patterns on Java 21+ - 1">
+ <compile files="NotCharInPointcut.java" options="-22">
+ <message kind="warning" line="51" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
+ <message kind="warning" line="52" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
+ <message kind="warning" line="53" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
+ </compile>
+ <run class="NotCharInPointcut"/>
+ </ajc-test>
+
+ <!-- Java 22 final, 21 preview -->
+ <ajc-test dir="features1921/java21" vm="22" title="underscore can still be used in pointcut patterns on Java 21+ - 2">
+ <compile files="UnderscoreInPointcutAspect.aj" options="-22"/>
+ <run class="UnderscoreInPointcutAspect">
+ <stdout>
+ <line text="[starts with underscore] execution(int UnderTest._add(int, int)) -> 12, 4"/>
+ <line text="[contains underscore] execution(int UnderTest._add(int, int)) -> 12, 4"/>
+ <line text="16"/>
+ <line text="[starts with underscore] execution(int UnderTest._subtract(int, int)) -> 12, 4"/>
+ <line text="[contains underscore] execution(int UnderTest._subtract(int, int)) -> 12, 4"/>
+ <line text="8"/>
+ <line text="[ends with underscore] execution(int UnderTest.multiply_(int, int)) -> 12, 4"/>
+ <line text="[contains underscore] execution(int UnderTest.multiply_(int, int)) -> 12, 4"/>
+ <line text="48"/>
+ <line text="[ends with underscore] execution(int UnderTest.divide_(int, int)) -> 12, 4"/>
+ <line text="[contains underscore] execution(int UnderTest.divide_(int, int)) -> 12, 4"/>
+ <line text="3"/>
+ <line text="[contains underscore] execution(int UnderTest.power_of(int, int)) -> 3, 3"/>
+ <line text="27"/>
+ <line text="[no underscore] execution(int UnderTest.squareRoot(int)) -> 49"/>
+ <line text="7"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 21, 22 preview -->
+ <ajc-test dir="features1921/java21" vm="22" title="string patterns">
+ <compile files="StringPatternsPreview1.java" options="--enable-preview -22"/>
+ <run class="StringPatternsPreview1" vmargs="--enable-preview">
+ <stdout ordered="yes">
+ <line text="Bill Duck"/>
+ <line text="10 + 20 = 30"/>
+ <line text="You have a special New Year's sale discount waiting for you!"/>
+ <line text="Access at 2011-11-11 11:11:11 from localhost/127.0.0.1"/>
+ <line text="The file _dummy.dat does not exist"/>
+ <line text="The time is 11:11:11 or roughly eleven after eleven"/>
+ <line text="apples, oranges, peaches"/>
+ <line text=""/>
+ <line text="<html>"/>
+ <line text=" <head>"/>
+ <line text=" <title>My Web Page</title>"/>
+ <line text=" </head>"/>
+ <line text=" <body>"/>
+ <line text=" <p>Hello, world</p>"/>
+ <line text=" </body>"/>
+ <line text="</html>"/>
+ <line text=""/>
+ <line text="Description Width Height Area"/>
+ <line text="Alfa 17.80 31.40 558.92"/>
+ <line text="Bravo 9.60 12.40 119.04"/>
+ <line text="Charlie 7.10 11.23 79.73"/>
+ <line text=" Total 757.69"/>
+ <line text=""/>
+ <line text="My name is Joan"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 21, 22 preview -->
+ <ajc-test dir="features1921/java21" vm="22" title="string patterns aspect">
+ <compile files="StringPatternsPreview1Aspect.aj" options="--enable-preview -22"/>
+ <run class="StringPatternsPreview1Aspect" vmargs="--enable-preview">
+ <stdout ordered="yes">
+ <line text="execution(void StringPatternsPreview1Aspect.main(String[]))"/>
+ <line text="Bill Duck"/>
+ <line text="10 + 20 = 30"/>
+ <line text="You have a special New Year's sale discount waiting for you!"/>
+ <line text="Access at 2011-11-11 11:11:11 from localhost/127.0.0.1"/>
+ <line text="The file _dummy.dat does not exist"/>
+ <line text="The time is 11:11:11 or roughly eleven after eleven"/>
+ <line text="apples, oranges, peaches"/>
+ <line text=""/>
+ <line text="<html>"/>
+ <line text=" <head>"/>
+ <line text=" <title>My Web Page</title>"/>
+ <line text=" </head>"/>
+ <line text=" <body>"/>
+ <line text=" <p>Hello, world</p>"/>
+ <line text=" </body>"/>
+ <line text="</html>"/>
+ <line text=""/>
+ <line text="Description Width Height Area"/>
+ <line text="Alfa 17.80 31.40 558.92"/>
+ <line text="Bravo 9.60 12.40 119.04"/>
+ <line text="Charlie 7.10 11.23 79.73"/>
+ <line text=" Total 757.69"/>
+ <line text=""/>
+ <line text="My name is Joan"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 21, 22 preview -->
+ <ajc-test dir="features1921/java21" vm="22" title="named class with simple main method">
+ <!-- Compiles without preview mode, but needs preview mode to run -->
+ <compile files="NamedClassWithSimpleMainMethodPreview1.java" options="-22 --enable-preview"/>
+ <run class="NamedClassWithSimpleMainMethodPreview1" vmargs="--enable-preview">
+ <stdout>
+ <line text="Hello world!"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 21, 22 preview -->
+ <ajc-test dir="features1921/java21" vm="22" title="named aspect with simple main method">
+ <!-- Compiles without preview mode, but needs preview mode to run -->
+ <compile files="NamedAspectWithSimpleMainMethodPreview1.aj" options="-22 --enable-preview"/>
+ <run class="NamedAspectWithSimpleMainMethodPreview1" vmargs="--enable-preview">
+ <stdout>
+ <line text="Hello world!"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <!-- Java 21, 22 preview -->
+ <!-- TODO: Activate after https://github.com/eclipse-jdt/eclipse.jdt.core/issues/1106 is done -->
+ <ajc-test dir="features1921/java21" vm="22" title="unnamed class with simple main method">
+ <compile files="UnnamedClassWithSimpleMainMethodPreview1.java" options="-22 --enable-preview"/>
+ <run class="UnnamedClassWithSimpleMainMethodPreview1" vmargs="--enable-preview">
+ <stdout>
+ <line text="Hello world!"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+</suite>
--- /dev/null
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
+
+<suite>
+
+ <!-- empty class -->
+ <ajc-test dir="bugs160/simplejava" title="simple - a">
+ <compile files="SimpleA.java" options="-22"/>
+ </ajc-test>
+
+ <!-- class with one method -->
+ <ajc-test dir="bugs160/simplejava" title="simple - b">
+ <compile files="SimpleB.java" options="-22"/>
+ <run class="SimpleB"/>
+ </ajc-test>
+
+ <!-- empty aspect -->
+ <ajc-test dir="bugs160/simplejava" title="simple - c">
+ <compile files="SimpleC.java" options="-22"/>
+ </ajc-test>
+
+ <!-- simple before -->
+ <ajc-test dir="bugs160/simplejava" title="simple - d">
+ <compile files="SimpleD.java" options="-22"/>
+ </ajc-test>
+
+ <!-- simple itd field -->
+ <ajc-test dir="bugs160/simplejava" title="simple - e">
+ <compile files="SimpleE.java" options="-22"/>
+ </ajc-test>
+
+ <!-- aspect with main calling a static method -->
+ <ajc-test dir="bugs160/simplejava" title="simple - f">
+ <compile files="SimpleF.java" options="-22"/>
+ </ajc-test>
+
+ <!-- pertarget -->
+ <ajc-test dir="bugs160/simplejava" title="simple - g">
+ <compile files="SimpleG.java" options="-22"/>
+ </ajc-test>
+
+ <!-- generic ctor itds -->
+ <ajc-test dir="bugs160/simplejava" title="simple - h">
+ <compile files="SimpleH.java" options="-22"/>
+ </ajc-test>
+
+ <!-- overriding generic itd methods -->
+ <ajc-test dir="bugs160/simplejava" title="simple - i">
+ <compile files="SimpleI.java" options="-22"/>
+ </ajc-test>
+
+ <!-- check class file version is 66.0 (Java 22) -->
+ <ajc-test dir="bugs160/simplejava" title="simple - j">
+ <compile files="SimpleJ.java" options="-22"/>
+ </ajc-test>
+
+ <!-- check class file version is 66.0 (Java 22) -->
+ <ajc-test dir="bugs160/simplejava" title="simple - k">
+ <compile files="SimpleJ.java" options="-source 22"/>
+ </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="-22"/>
+ </ajc-test>
+
+</suite>