Browse Source

Add Java 16 test suite for AspectJ 1.9.7 + test refactorings

- Test all features which were preview in 14+15 and are now final in 16,
  compiling them with language level 16.
- For Java 15 we only have sanity tests (and of course the Java <14
  tests), compiling Java 16 features to target 15 does not seem to work.
- Test remaining Java 16 preview feature (sealed classes).
- Instead of overriding runTest(String) in several base classes like
  XMLBasedAjcTestCaseForJava*Only or XMLBasedAjcTestCaseForJava*OrLater,
  we now override setUp() from JUnit's TestCase base class. This will
  run before runTest(String) and make the tests fail much faster, if a
  user tries to run them on the wrong VM.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/java16-add-opens
Alexander Kriegisch 3 years ago
parent
commit
68ad86eb6e
22 changed files with 376 additions and 154 deletions
  1. 2
    2
      bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java
  2. 3
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java
  3. 3
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
  4. 3
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
  5. 3
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java
  6. 2
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java
  7. 3
    4
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java
  8. 4
    7
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java
  9. 5
    6
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java
  10. 39
    0
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java
  11. 27
    0
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java
  12. 3
    5
      testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java
  13. 0
    2
      tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java
  14. 2
    4
      tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java
  15. 0
    40
      tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java
  16. 64
    0
      tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java
  17. 6
    3
      tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java
  18. 7
    20
      tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java
  19. 87
    0
      tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java
  20. 40
    41
      tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml
  21. 69
    0
      tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml
  22. 4
    0
      util/src/main/java/org/aspectj/util/LangUtil.java

+ 2
- 2
bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java View File

@@ -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;


+ 3
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java View File

@@ -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();
}
}

+ 3
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java View File

@@ -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();
}
}

+ 3
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java View File

@@ -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();
}
}

+ 3
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java View File

@@ -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();
}

}

+ 2
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java View File

@@ -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();
*/
}


+ 3
- 4
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java View File

@@ -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();
}

}

+ 4
- 7
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java View File

@@ -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();
*/
}

}

+ 5
- 6
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java View File

@@ -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();
}

}

+ 39
- 0
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java View File

@@ -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();
}

}

+ 27
- 0
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java View File

@@ -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();
}

}

+ 3
- 5
testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java View File

@@ -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();
}

}

+ 0
- 2
tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java View File

@@ -37,8 +37,6 @@ public class Ajc196Tests extends XMLBasedAjcTestCaseForJava14OrLater {
checkVersion("Switch3", Constants.MAJOR_14, 0);
}

// ---

public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Ajc196Tests.class);
}

tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196PreviewFeaturesTests.java → tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java View File

@@ -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

+ 0
- 40
tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197Tests.java View File

@@ -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");
}

}

+ 64
- 0
tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java View File

@@ -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");
}

}

+ 6
- 3
tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java View File

@@ -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;
}

tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197PreviewFeaturesTests.java → tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java View File

@@ -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

+ 87
- 0
tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java View File

@@ -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");
}

}

+ 40
- 41
tests/src/test/resources/org/aspectj/systemtest/ajc197/ajc197.xml View File

@@ -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" />

+ 69
- 0
tests/src/test/resources/org/aspectj/systemtest/ajc197/sanity-tests-16.xml View File

@@ -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>

+ 4
- 0
util/src/main/java/org/aspectj/util/LangUtil.java View File

@@ -186,6 +186,10 @@ public class LangUtil {
return 16 <= vmVersion;
}

public static boolean is17VMOrGreater() {
return 17 <= vmVersion;
}

/**
* Shorthand for "if null, throw IllegalArgumentException"
*

Loading…
Cancel
Save