aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2019-04-03 10:23:44 -0700
committerAndy Clement <aclement@pivotal.io>2019-04-03 10:23:44 -0700
commit0e2c95a36900fe913f5d768e7f4632034ddf005b (patch)
treef7f1bb92dfbae87de0a8998491e863490984aa0a
parentdbb2c59fcfa6837f1fde9e0c1f0d04751c9268ee (diff)
downloadaspectj-0e2c95a36900fe913f5d768e7f4632034ddf005b.tar.gz
aspectj-0e2c95a36900fe913f5d768e7f4632034ddf005b.zip
Updated with Java12 support
-rw-r--r--.gitignore1
-rw-r--r--ajdoc/src/test/java/org/aspectj/tools/ajdoc/AJDocConstants.java18
-rw-r--r--ajdoc/src/test/java/org/aspectj/tools/ajdoc/BugTest.java4
-rw-r--r--ajdoc/src/test/java/org/aspectj/tools/ajdoc/CoverageTestCase.java40
-rw-r--r--ajdoc/src/test/java/org/aspectj/tools/ajdoc/DeclareFormsTest.java30
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/Constants.java5
-rw-r--r--bcel-builder/src/main/java/org/aspectj/apache/bcel/util/ClassPath.java3
-rw-r--r--docs/dist/doc/README-193.html66
-rw-r--r--org.aspectj.ajdt.core/src/main/resources/org/aspectj/ajdt/ajc/messages.properties2
-rw-r--r--org.aspectj.ajdt.core/src/test/java/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java5
-rw-r--r--org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java2
-rw-r--r--org.eclipse.jdt.core/jdtcore-for-aspectj-src.zipbin5264447 -> 5315848 bytes
-rw-r--r--org.eclipse.jdt.core/jdtcore-for-aspectj.jarbin10680069 -> 10783600 bytes
-rw-r--r--taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java6
-rw-r--r--testing/src/test/java/org/aspectj/testing/AjcTest.java5
-rw-r--r--testing/src/test/java/org/aspectj/testing/AntSpec.java8
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCase.java15
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java6
-rw-r--r--testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java31
-rw-r--r--tests/bugs190/modules/ggg/foo2.jarbin0 -> 318 bytes
-rw-r--r--tests/features193/Switch1.java22
-rw-r--r--tests/features193/Switch2.java28
-rw-r--r--tests/features193/Switch3.java32
-rw-r--r--tests/java5/ataspectj/ajc-ant.xml8
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc160/SanityTests.java16
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java10
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java11
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java11
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java9
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java5
-rw-r--r--tests/src/test/java/org/aspectj/systemtest/ajc193/Java12Tests.java46
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc190/ajc190.xml6
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc193/ajc193.xml39
-rw-r--r--util/src/main/java/org/aspectj/util/LangUtil.java4
-rw-r--r--weaver/src/test/java/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java16
35 files changed, 392 insertions, 118 deletions
diff --git a/.gitignore b/.gitignore
index 741abf18b..112918846 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*/bin
+*/pom.xml.versionsBackup
log.txt
.vscode
.DS_Store
diff --git a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/AJDocConstants.java b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/AJDocConstants.java
new file mode 100644
index 000000000..50bddfb5d
--- /dev/null
+++ b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/AJDocConstants.java
@@ -0,0 +1,18 @@
+/* *******************************************************************
+ * Copyright (c) 2019 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.tools.ajdoc;
+
+/**
+ * @author Andy Clement
+ */
+public class AJDocConstants {
+
+ public final static String VERSION = "1.7";
+
+}
diff --git a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/BugTest.java b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/BugTest.java
index 6caf5d79d..6cbec3ebe 100644
--- a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/BugTest.java
+++ b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/BugTest.java
@@ -69,7 +69,7 @@ public class BugTest extends AjdocTestCase {
initialiseProject("pr148906");
File[] files = {new File(getAbsoluteProjectDir() + "/C.java")};
String[] ajOptions = {new String("-aspectpath"), new String(getAbsoluteProjectDir() + File.separator + "simple.jar")};
- runAjdoc(files,"1.6",ajOptions);
+ runAjdoc(files,AJDocConstants.VERSION,ajOptions);
assertFalse("expected clean build of project but found that build aborted",Main.hasAborted());
File html = new File(getAbsolutePathOutdir() + File.separator + "C.html");
if (!html.exists()) {
@@ -90,7 +90,7 @@ public class BugTest extends AjdocTestCase {
initialiseProject("pr148906");
File[] files = {new File(getAbsoluteProjectDir() + "/C.java")};
String[] ajOptions = {new String("-outxml"),new String("-aspectpath"), new String(getAbsoluteProjectDir() + File.separator + "simple.jar")};
- runAjdoc(files,"1.6",ajOptions);
+ runAjdoc(files,AJDocConstants.VERSION,ajOptions);
assertFalse("expected clean build of project but found that build aborted",Main.hasAborted());
File html = new File(getAbsolutePathOutdir() + File.separator + "C.html");
if (!html.exists()) {
diff --git a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/CoverageTestCase.java b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/CoverageTestCase.java
index 70aaa8b35..c92e96d2e 100644
--- a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/CoverageTestCase.java
+++ b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/CoverageTestCase.java
@@ -87,7 +87,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAJdocHasAspectTitle() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/A.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/A.html");
if (!htmlFile.exists()) {
fail("couldn't find " + htmlFile.getAbsolutePath()+ " - were there compilation errors?");
@@ -101,7 +101,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAJdocHasClassTitle() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/C.java")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/C.html");
if (!htmlFile.exists()) {
fail("couldn't find " + htmlFile.getAbsolutePath()+ " - were there compilation errors?");
@@ -117,7 +117,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testInnerAspect() throws Exception {
File[] files = {file1, file2};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/ClassA.InnerAspect.html");
if (!htmlFile.exists()) {
@@ -205,7 +205,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdviceNamingCoverage() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/AdviceNamingCoverage.html");
if (!htmlFile.exists()) {
@@ -237,7 +237,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisesRelationshipCoverage() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/AdvisesRelationshipCoverage.html");
if (!htmlFile.exists()) {
@@ -290,7 +290,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByMethodExecution() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -321,7 +321,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByConstructorExecution() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -358,7 +358,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByMethodCall() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -389,7 +389,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByConstructorCall() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -420,7 +420,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByGet() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -451,7 +451,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedBySet() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -500,7 +500,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByInitialization() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -532,7 +532,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByStaticInitialization() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -553,7 +553,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByHandler() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point.html");
if (!htmlFile.exists()) {
@@ -591,7 +591,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testTwoBeforeAdvice() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/A2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/C2.html");
if (!htmlFile.exists()) {
@@ -637,7 +637,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testNoSpuriousAdvisedByRels() throws Exception {
File[] files = {file4};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/AdvisesRelationshipCoverage.html");
if (!htmlFile.exists()) {
@@ -666,7 +666,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testNestedAspect() throws Exception {
File[] files = {file9};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/PkgVisibleClass.NestedAspect.html");
if (!htmlFile.exists()) {
@@ -748,7 +748,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testNestedAspectWithSimilarName() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/ClassWithNestedAspect.java")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/ClassWithNestedAspect.NestedAspect.html");
if (!htmlFile.exists()) {
@@ -829,7 +829,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdviceInNestedAspect() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/ClassWithNestedAspect.java")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/ClassWithNestedAspect.NestedAspect.html");
if (!htmlFile.exists()) {
@@ -860,7 +860,7 @@ public class CoverageTestCase extends AjdocTestCase {
*/
public void testAdvisedByInNestedAspect() throws Exception {
File[] files = {new File(getAbsoluteProjectDir() + "/pkg/ClassWithNestedAspect.java")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/pkg/ClassWithNestedAspect.html");
if (!htmlFile.exists()) {
diff --git a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/DeclareFormsTest.java b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/DeclareFormsTest.java
index 8dc4c24fe..ea477d699 100644
--- a/ajdoc/src/test/java/org/aspectj/tools/ajdoc/DeclareFormsTest.java
+++ b/ajdoc/src/test/java/org/aspectj/tools/ajdoc/DeclareFormsTest.java
@@ -49,7 +49,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testDeclareStatments() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
if (!htmlFile.exists()) {
@@ -84,7 +84,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testDeclareWarning() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
if (!htmlFile.exists()) {
@@ -116,7 +116,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testMatchesDeclareCall() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Main2.html");
if (!htmlFile.exists()) {
@@ -148,7 +148,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testMatchesDeclareExecution() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point2.html");
if (!htmlFile.exists()) {
@@ -181,7 +181,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testDeclareParents() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
if (!htmlFile.exists()) {
@@ -212,7 +212,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testAspectDeclarations() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Point2.html");
if (!htmlFile.exists()) {
@@ -235,7 +235,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testDeclareSoft() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareCoverage2.html");
if (!htmlFile.exists()) {
@@ -266,7 +266,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testSoftenedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareCoverage2.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/Main2.html");
if (!htmlFile.exists()) {
@@ -305,7 +305,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testDeclareAnnotation() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtType.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
// Aspect AnnotationTest should contain within it's declare
// detail and summary the declare annotation statement.
@@ -351,7 +351,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testMethodAnnotatedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtMethod.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
if (!htmlFile.exists()) {
@@ -384,7 +384,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testConstructorAnnotatedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtConstructor.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
if (!htmlFile.exists()) {
@@ -418,7 +418,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testFieldAnnotatedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtField.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
if (!htmlFile.exists()) {
@@ -452,7 +452,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testTypeAnnotatedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareAtType.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
if (!htmlFile.exists()) {
@@ -475,7 +475,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testMatchesDeclareAndAdvisedBy() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "A.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/C.html");
if (!htmlFile.exists()) {
@@ -521,7 +521,7 @@ public class DeclareFormsTest extends AjdocTestCase {
public void testTwoDeclareParents() throws Exception {
initialiseProject("declareForms");
File[] files = {new File(getAbsoluteProjectDir() + File.separatorChar + "DeclareParents.aj")};
- runAjdoc("private","1.6",files);
+ runAjdoc("private",AJDocConstants.VERSION,files);
File htmlFile = new File(getAbsolutePathOutdir() + "/foo/DeclareParents.html");
if (!htmlFile.exists()) {
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 c75496527..c0c0930b0 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
@@ -86,6 +86,11 @@ public interface Constants {
public final static short MINOR_10 = 0;
public final static short MAJOR_11 = 55;
public final static short MINOR_11 = 0;
+ public final static short MAJOR_12 = 56;
+ public final static short MINOR_12 = 0;
+
+ public final static int PREVIEW_MINOR_VERSION = 65535;
+
// Defaults
public final static short MAJOR = MAJOR_1_1;
public final static short MINOR = MINOR_1_1;
diff --git a/bcel-builder/src/main/java/org/aspectj/apache/bcel/util/ClassPath.java b/bcel-builder/src/main/java/org/aspectj/apache/bcel/util/ClassPath.java
index a66e9c58a..9d15e81f4 100644
--- a/bcel-builder/src/main/java/org/aspectj/apache/bcel/util/ClassPath.java
+++ b/bcel-builder/src/main/java/org/aspectj/apache/bcel/util/ClassPath.java
@@ -226,7 +226,8 @@ public class ClassPath implements Serializable {
}
// On Java9 the sun.boot.class.path won't be set. System classes accessible through JRT filesystem
- if (vm_version.startsWith("9") || vm_version.startsWith("10") || vm_version.startsWith("11")) {
+ if (vm_version.startsWith("9") || vm_version.startsWith("10")
+ || vm_version.startsWith("11") || vm_version.startsWith("12")) {
buf.insert(0, File.pathSeparatorChar);
buf.insert(0, System.getProperty("java.home") + File.separator + "lib" + File.separator + JRT_FS);
}
diff --git a/docs/dist/doc/README-193.html b/docs/dist/doc/README-193.html
index 6bcf89e75..f9cc4d0cf 100644
--- a/docs/dist/doc/README-193.html
+++ b/docs/dist/doc/README-193.html
@@ -20,6 +20,72 @@ All rights reserved.
<p>The full list of resolved issues in 1.9.3 is available
<a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.3">here</a></h2>.</p>
+<p>AspectJ 1.9.3 supports Java12. Java12 introduces the new switch expression syntax, but you must activate support for that via
+an <tt>--enable-preview</tt> flag when using the compiler and attempting to run the resultant classes:
+
+Here is <tt>Switch3.java</tt>:
+<pre><code>
+=========8<=========
+public class Switch3 {
+ public static void main(String[] argv) {
+ System.out.println(one(Color.R));
+ System.out.println(one(Color.G));
+ System.out.println(one(Color.B));
+ System.out.println(one(Color.Y));
+ }
+
+ public static int one(Color color) {
+ int result = switch(color) {
+ case R -> foo(0);
+ case G -> foo(1);
+ case B -> foo(2);
+ default -> foo(3);
+ };
+ return result;
+ }
+
+ public static final int foo(int i) {
+ return i+1;
+ }
+}
+
+enum Color {
+ R, G, B, Y;
+}
+
+aspect X {
+ int around(): call(* foo(..)) {
+ return proceed()*3;
+ }
+}
+=========8<=========
+</code></pre>
+
+Compile it with:
+<pre><code>
+$ ajc --enable-preview -showWeaveInfo -12 Switch3.java
+
+Join point 'method-call(int Switch3.foo(int))' in Type 'Switch3' (Switch3.java:12) advised by around advice from 'X' (Switch3.java:30)
+
+Join point 'method-call(int Switch3.foo(int))' in Type 'Switch3' (Switch3.java:13) advised by around advice from 'X' (Switch3.java:30)
+
+Join point 'method-call(int Switch3.foo(int))' in Type 'Switch3' (Switch3.java:14) advised by around advice from 'X' (Switch3.java:30)
+
+Join point 'method-call(int Switch3.foo(int))' in Type 'Switch3' (Switch3.java:15) advised by around advice from 'X' (Switch3.java:30)
+
+</code></pre>
+
+Now run it:
+<pre><code>
+$ java --enable-preview Switch3
+3
+6
+9
+12
+</code></pre>
+
+
+
<p>Available: 1.9.3.RC1 available 7-Mar-2019</p>
<br><br>
diff --git a/org.aspectj.ajdt.core/src/main/resources/org/aspectj/ajdt/ajc/messages.properties b/org.aspectj.ajdt.core/src/main/resources/org/aspectj/ajdt/ajc/messages.properties
index e9f6b6d65..b6de28ebb 100644
--- a/org.aspectj.ajdt.core/src/main/resources/org/aspectj/ajdt/ajc/messages.properties
+++ b/org.aspectj.ajdt.core/src/main/resources/org/aspectj/ajdt/ajc/messages.properties
@@ -5,7 +5,7 @@
org/aspectj/weaver/XlintDefault.properties for the default behavior and a template to copy.
### AspectJ-specific messages
compiler.name = AspectJ Compiler
-compiler.version = Eclipse Compiler #6373b82afa49b(1-Oct-2018), 3.16
+compiler.version = Eclipse Compiler #a9ab0710a01b2b(28-Mar-2019), 3.18
compiler.copyright =
diff --git a/org.aspectj.ajdt.core/src/test/java/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java b/org.aspectj.ajdt.core/src/test/java/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java
index a60c9d9f7..776bf1bc2 100644
--- a/org.aspectj.ajdt.core/src/test/java/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java
+++ b/org.aspectj.ajdt.core/src/test/java/org/aspectj/ajdt/internal/core/builder/AjBuildManagerTest.java
@@ -57,18 +57,17 @@ public class AjBuildManagerTest extends TestCase {
super(name);
}
- public void testSimpleStructure() throws IOException /* , CoreException */{
+ public void testSimpleStructure() throws IOException {
AjBuildManager manager = new AjBuildManager(messageWriter);
BuildArgParser parser = new BuildArgParser(messageWriter);
String javaClassPath = System.getProperty("java.class.path");
- System.out.println(javaClassPath);
String sandboxName = TestUtil.createEmptySandbox().getAbsolutePath();
AjBuildConfig buildConfig = parser.genBuildConfig(new String[] { "-d", sandboxName, "-1.4", "-classpath", javaClassPath,
Constants.TESTDATA_PATH + "/src1/A.java",
// EajcModuleTests.TESTDATA_PATH + "/src1/Hello.java",
});
String err = parser.getOtherMessages(true);
- assertTrue(err, null == err);
+ assertTrue(err, null == err || err.startsWith("incorrect classpath") && err.endsWith("run-all-junit-tests/target/classes"));
// manager.setStructureModel(AsmManager.getDefault().getHierarchy());
MessageHandler handler = new MessageHandler();
manager.batchBuild(buildConfig, handler);
diff --git a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java
index c8b61bd49..8d15cdf8f 100644
--- a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java
+++ b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java
@@ -687,7 +687,7 @@ public abstract class AjcTestCase extends TestCase {
e.printStackTrace();
}
return lastRunResult;
- } else if (vmargs!=null && (vmargs.contains("--add-modules") || vmargs.contains("--limit-modules") || vmargs.contains("--add-reads"))) {
+ } else if (vmargs!=null && (vmargs.contains("--enable-preview") || vmargs.contains("--add-modules") || vmargs.contains("--limit-modules") || vmargs.contains("--add-reads"))) {
// If --add-modules supplied, need to fork the test
try {
// if (mp.indexOf("$runtime") != -1) {
diff --git a/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip b/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
index e69c1ad02..ec0d8feeb 100644
--- a/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
+++ b/org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip
Binary files differ
diff --git a/org.eclipse.jdt.core/jdtcore-for-aspectj.jar b/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
index ac96bd96e..24e4ee699 100644
--- a/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
+++ b/org.eclipse.jdt.core/jdtcore-for-aspectj.jar
Binary files differ
diff --git a/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java b/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java
index fe6be92c9..c64855928 100644
--- a/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java
+++ b/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java
@@ -254,9 +254,9 @@ public class AjcTask extends MatchingTask {
public static final String COMMAND_EDITOR_NAME = AjcTask.class.getName() + ".COMMAND_EDITOR";
- static final String[] TARGET_INPUTS = new String[] { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10", "11" };
- static final String[] SOURCE_INPUTS = new String[] { "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10", "11"};
- static final String[] COMPLIANCE_INPUTS = new String[] { "-1.3", "-1.4", "-1.5", "-1.6", "-1.7", "-1.8", "-1.9", "-9", "-10", "-11" };
+ static final String[] TARGET_INPUTS = new String[] { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10", "11", "12" };
+ static final String[] SOURCE_INPUTS = new String[] { "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10", "11", "12" };
+ static final String[] COMPLIANCE_INPUTS = new String[] { "-1.3", "-1.4", "-1.5", "-1.6", "-1.7", "-1.8", "-1.9", "-9", "-10", "-11", "-12" };
private static final ICommandEditor COMMAND_EDITOR;
diff --git a/testing/src/test/java/org/aspectj/testing/AjcTest.java b/testing/src/test/java/org/aspectj/testing/AjcTest.java
index 4cb9a8722..0384e775d 100644
--- a/testing/src/test/java/org/aspectj/testing/AjcTest.java
+++ b/testing/src/test/java/org/aspectj/testing/AjcTest.java
@@ -1,5 +1,5 @@
/* *******************************************************************
- * Copyright (c) 2004,2018 IBM Corporation, contributors
+ * Copyright (c) 2004,2019 IBM Corporation, contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
@@ -29,6 +29,7 @@ public class AjcTest {
private static boolean is19VMOrGreater = false;
private static boolean is10VMOrGreater = false;
private static boolean is11VMOrGreater = false;
+ private static boolean is12VMOrGreater = false;
static { // matching logic is also in org.aspectj.util.LangUtil
is14VMOrGreater = LangUtil.is14VMOrGreater();
@@ -39,6 +40,7 @@ public class AjcTest {
is19VMOrGreater = LangUtil.is19VMOrGreater();
is10VMOrGreater = LangUtil.is10VMOrGreater();
is11VMOrGreater = LangUtil.is11VMOrGreater();
+ is12VMOrGreater = LangUtil.is12VMOrGreater();
}
private List<ITestStep> testSteps = new ArrayList<ITestStep>();
@@ -84,6 +86,7 @@ public class AjcTest {
if (vmLevel.equals("1.9")) canRun = is19VMOrGreater;
if (vmLevel.equals("10")) canRun = is10VMOrGreater;
if (vmLevel.equals("11")) canRun = is11VMOrGreater;
+ if (vmLevel.equals("12")) canRun = is12VMOrGreater;
if (!canRun) {
System.out.println("***SKIPPING TEST***" + getTitle()+ " needs " + getVmLevel()
+ ", currently running on " + System.getProperty("java.vm.version"));
diff --git a/testing/src/test/java/org/aspectj/testing/AntSpec.java b/testing/src/test/java/org/aspectj/testing/AntSpec.java
index bd0301d28..64ff4f364 100644
--- a/testing/src/test/java/org/aspectj/testing/AntSpec.java
+++ b/testing/src/test/java/org/aspectj/testing/AntSpec.java
@@ -207,7 +207,7 @@ public class AntSpec implements ITestStep {
}
if (m_stdErrSpec != null) {
String stderr2 = stderr.toString();
- // Working around this rediculous message that still comes out of Java7 builds:
+ // Working around this ridiculous message that still comes out of Java7 builds:
if (stderr2.indexOf("Class JavaLaunchHelper is implemented in both")!=-1 && stderr2.indexOf('\n')!=-1) {
stderr2 = stderr2.replaceAll("objc\\[[0-9]*\\]: Class JavaLaunchHelper is implemented in both [^\n]*\n","");
}
@@ -225,7 +225,11 @@ public class AntSpec implements ITestStep {
stderr2 = stderr2.replaceAll("WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\n","");
stderr2 = stderr2.replaceAll("WARNING: All illegal access operations will be denied in a future release\n","");
}
-
+ // J12
+ String msg = "Java HotSpot(TM) 64-Bit Server VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified (value = \"org.aspectj.weaver.loadtime.WeavingURLClassLoader\"). To use archived non-system classes, this property must not be set";
+ if (stderr2.contains(msg)) {
+ stderr2 = stderr2.replace(msg+"\n","");
+ }
m_stdErrSpec.matchAgainst(stderr2);
}
}
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCase.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCase.java
index 44c4ed5d8..94d31833a 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCase.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCase.java
@@ -208,6 +208,21 @@ public abstract class XMLBasedAjcTestCase extends AjcTestCase {
return result;
}
+ protected void checkVersion(String classname, int major, int minor) {
+ JavaClass jc;
+ try {
+ jc = getClassFrom(ajc.getSandboxDirectory(), classname);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalStateException("Cannot find class "+classname,e);
+ }
+ if (jc.getMajor() != major) {
+ fail("Expected major version to be " + major + " but was " + jc.getMajor());
+ }
+ if (jc.getMinor() != minor) {
+ fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
+ }
+ }
+
/*
* The rules for parsing a suite spec file. The Digester using bean properties to match attributes in the XML document to
* properties in the associated classes, so this simple implementation should be very easy to maintain and extend should you
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
index b71fc19e9..18181d60e 100644
--- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java
@@ -11,6 +11,8 @@
* ******************************************************************/
package org.aspectj.testing;
+import org.aspectj.util.LangUtil;
+
/**
* Makes sure tests are running on the right level of JDK.
*
@@ -20,9 +22,7 @@ public abstract class XMLBasedAjcTestCaseForJava11OrLater extends XMLBasedAjcTes
@Override
public void runTest(String title) {
- // Check we are on Java11
- String property = System.getProperty("java.version");
- if (!property.startsWith("11")) {
+ if (!LangUtil.is11VMOrGreater()) {
throw new IllegalStateException("These tests should be run on Java 11 or later");
}
super.runTest(title);
diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
new file mode 100644
index 000000000..c3242a36b
--- /dev/null
+++ b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java
@@ -0,0 +1,31 @@
+/* *******************************************************************
+ * Copyright (c) 2018 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
+ *
+ * Contributors:
+ * Andy Clement
+ * ******************************************************************/
+package org.aspectj.testing;
+
+import org.aspectj.util.LangUtil;
+
+/**
+ * Ensure sure tests are running on the right level of JDK.
+ *
+ * @author Andy Clement
+ */
+public abstract class XMLBasedAjcTestCaseForJava12OrLater extends XMLBasedAjcTestCase {
+
+ @Override
+ public void runTest(String title) {
+ if (!LangUtil.is12VMOrGreater()) {
+ throw new IllegalStateException("These tests should be run on Java 12 or later");
+ }
+ super.runTest(title);
+ }
+
+}
diff --git a/tests/bugs190/modules/ggg/foo2.jar b/tests/bugs190/modules/ggg/foo2.jar
new file mode 100644
index 000000000..54b354ef6
--- /dev/null
+++ b/tests/bugs190/modules/ggg/foo2.jar
Binary files differ
diff --git a/tests/features193/Switch1.java b/tests/features193/Switch1.java
new file mode 100644
index 000000000..1daeeff6f
--- /dev/null
+++ b/tests/features193/Switch1.java
@@ -0,0 +1,22 @@
+public class Switch1 {
+ public static void main(String[] argv) {
+ System.out.println(one(Color.R));
+ System.out.println(one(Color.G));
+ System.out.println(one(Color.B));
+ System.out.println(one(Color.Y));
+ }
+
+ public static int one(Color color) {
+ int result = switch(color) {
+ case R -> 0;
+ case G -> 1;
+ case B -> 2;
+ default -> 3;
+ };
+ return result;
+ }
+}
+
+enum Color {
+ R, G, B, Y;
+} \ No newline at end of file
diff --git a/tests/features193/Switch2.java b/tests/features193/Switch2.java
new file mode 100644
index 000000000..c4acc82d9
--- /dev/null
+++ b/tests/features193/Switch2.java
@@ -0,0 +1,28 @@
+public class Switch2 {
+ public static void main(String[] argv) {
+ System.out.println(one(Color.R));
+ System.out.println(one(Color.G));
+ System.out.println(one(Color.B));
+ System.out.println(one(Color.Y));
+ }
+
+ public static int one(Color color) {
+ int result = switch(color) {
+ case R -> 0;
+ case G -> 1;
+ case B -> 2;
+ default -> 3;
+ };
+ return result;
+ }
+}
+
+enum Color {
+ R, G, B, Y;
+}
+
+aspect X {
+ int around(): call(* one(..)) {
+ return proceed()*2;
+ }
+} \ No newline at end of file
diff --git a/tests/features193/Switch3.java b/tests/features193/Switch3.java
new file mode 100644
index 000000000..a99622d75
--- /dev/null
+++ b/tests/features193/Switch3.java
@@ -0,0 +1,32 @@
+public class Switch3 {
+ public static void main(String[] argv) {
+ System.out.println(one(Color.R));
+ System.out.println(one(Color.G));
+ System.out.println(one(Color.B));
+ System.out.println(one(Color.Y));
+ }
+
+ public static int one(Color color) {
+ int result = switch(color) {
+ case R -> foo(0);
+ case G -> foo(1);
+ case B -> foo(2);
+ default -> foo(3);
+ };
+ return result;
+ }
+
+ public static final int foo(int i) {
+ return i+1;
+ }
+}
+
+enum Color {
+ R, G, B, Y;
+}
+
+aspect X {
+ int around(): call(* foo(..)) {
+ return proceed()*3;
+ }
+} \ No newline at end of file
diff --git a/tests/java5/ataspectj/ajc-ant.xml b/tests/java5/ataspectj/ajc-ant.xml
index a9b215bf3..c3ac6bac8 100644
--- a/tests/java5/ataspectj/ajc-ant.xml
+++ b/tests/java5/ataspectj/ajc-ant.xml
@@ -10,7 +10,7 @@
<target name="compile:javac">
<!-- compile only javac compilable stuff, exclude the one that needs other dependencies -->
- <javac source="1.6" target="1.6" destdir="${aj.sandbox}" classpathref="aj.path"
+ <javac source="1.7" target="1.7" destdir="${aj.sandbox}" classpathref="aj.path"
srcdir="${basedir}"
includes="ataspectj/*"
excludes="ataspectj/UnweavableTest.java"
@@ -75,7 +75,7 @@
<target name="ltw.Aspect2MainTest">
<!-- javac Aspect2 -->
- <javac source="1.6" target="1.6" destdir="${aj.sandbox}" classpathref="aj.path"
+ <javac source="1.7" target="1.7" destdir="${aj.sandbox}" classpathref="aj.path"
srcdir="${basedir}"
includes="ataspectj/ltwreweavable/Aspect2.java"
debug="true">
@@ -125,7 +125,7 @@
</target>
<target name="ltw.Unweavable">
- <javac source="1.6" target="1.6" destdir="${aj.sandbox}"
+ <javac source="1.7" target="1.7" destdir="${aj.sandbox}"
srcdir="${basedir}"
includes="ataspectj/UnweavableTest.java, ataspectj/TestHelper.java"
debug="true">
@@ -171,7 +171,7 @@
<target name="ltw.Decp2">
<!-- javac compile the 2nd aspect -->
- <javac source="1.6" target="1.6" destdir="${aj.sandbox}"
+ <javac source="1.7" target="1.7" destdir="${aj.sandbox}"
srcdir="${basedir}"
includes="ataspectj/DeclareParentsImplementsReweavableTestAspect.java"
debug="true">
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc160/SanityTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc160/SanityTests.java
index 157fdc6ce..9bdb68665 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc160/SanityTests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc160/SanityTests.java
@@ -10,16 +10,14 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc160;
-import java.io.File;
-
-import junit.framework.Test;
-
import org.aspectj.apache.bcel.classfile.Attribute;
import org.aspectj.apache.bcel.classfile.Code;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.apache.bcel.classfile.Method;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import junit.framework.Test;
+
/*
* Some very trivial tests that help verify things are OK.
* Followed by some Java6 specific checks to ensure the class files are well formed.
@@ -136,16 +134,6 @@ public class SanityTests extends org.aspectj.testing.XMLBasedAjcTestCase {
return false;
}
- private void checkVersion(String classname, int major, int minor) throws ClassNotFoundException {
- JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), classname);
- if (jc.getMajor() != major) {
- fail("Expected major version to be " + major + " but was " + jc.getMajor());
- }
- if (jc.getMinor() != minor) {
- fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
- }
- }
-
// Check the stackmap stuff is removed when a method gets woven (for now...)
// public void testStackMapAttributesDeletedInWovenCode() {
// fail("Not implemented");
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java
index 8cdf93597..ac5eb14e4 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java
@@ -149,16 +149,6 @@ public class ModuleTests extends XMLBasedAjcTestCaseForJava9OrLater {
return false;
}
- private void checkVersion(String classname, int major, int minor) throws ClassNotFoundException {
- JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), classname);
- if (jc.getMajor() != major) {
- fail("Expected major version to be " + major + " but was " + jc.getMajor());
- }
- if (jc.getMinor() != minor) {
- fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
- }
- }
-
// Check the stackmap stuff is removed when a method gets woven (for now...)
// public void testStackMapAttributesDeletedInWovenCode() {
// fail("Not implemented");
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java
index edb45c513..46aaddff1 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc190;
-import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.testing.XMLBasedAjcTestCase;
import junit.framework.Test;
@@ -124,16 +123,6 @@ public class SanityTests19 extends org.aspectj.testing.XMLBasedAjcTestCase {
// return false;
// }
- private void checkVersion(String classname, int major, int minor) throws ClassNotFoundException {
- JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), classname);
- if (jc.getMajor() != major) {
- fail("Expected major version to be " + major + " but was " + jc.getMajor());
- }
- if (jc.getMinor() != minor) {
- fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
- }
- }
-
// Check the stackmap stuff is removed when a method gets woven (for now...)
// public void testStackMapAttributesDeletedInWovenCode() {
// fail("Not implemented");
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java b/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java
index 87d8b932a..c6d4bc86e 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java
@@ -7,7 +7,6 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc191;
-import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.testing.XMLBasedAjcTestCase;
import junit.framework.Test;
@@ -73,16 +72,6 @@ public class SanityTestsJava10 extends org.aspectj.testing.XMLBasedAjcTestCase {
checkVersion("A", 49, 0);
}
- private void checkVersion(String classname, int major, int minor) throws ClassNotFoundException {
- JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), classname);
- if (jc.getMajor() != major) {
- fail("Expected major version to be " + major + " but was " + jc.getMajor());
- }
- if (jc.getMinor() != minor) {
- fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
- }
- }
-
// ///////////////////////////////////////
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(SanityTestsJava10.class);
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java b/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java
index 33a5affe6..0506f90a1 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java
@@ -74,15 +74,6 @@ public class SanityTestsJava11 extends XMLBasedAjcTestCaseForJava11OrLater {
checkVersion("A", 49, 0);
}
- private void checkVersion(String classname, int major, int minor) throws ClassNotFoundException {
- JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), classname);
- if (jc.getMajor() != major) {
- fail("Expected major version to be " + major + " but was " + jc.getMajor());
- }
- if (jc.getMinor() != minor) {
- fail("Expected minor version to be " + minor + " but was " + jc.getMinor());
- }
- }
// ///////////////////////////////////////
public static Test suite() {
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java
index 62cfcccb2..ddd88372d 100644
--- a/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 Contributors
+ * Copyright (c) 2018-2019 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
@@ -17,9 +17,8 @@ public class AllTestsAspectJ193 {
public static Test suite() {
TestSuite suite = new TestSuite("AspectJ 1.9.3 tests");
- // $JUnit-BEGIN$
suite.addTest(Ajc193Tests.suite());
- // $JUnit-END$
+ suite.addTest(Java12Tests.suite());
return suite;
}
}
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/Java12Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/Java12Tests.java
new file mode 100644
index 000000000..72388ba68
--- /dev/null
+++ b/tests/src/test/java/org/aspectj/systemtest/ajc193/Java12Tests.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019 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.ajc193;
+
+import org.aspectj.apache.bcel.Constants;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.testing.XMLBasedAjcTestCaseForJava12OrLater;
+
+import junit.framework.Test;
+
+/**
+ * @author Andy Clement
+ */
+public class Java12Tests extends XMLBasedAjcTestCaseForJava12OrLater {
+
+ public void testSwitch1() {
+ runTest("switch 1");
+ checkVersion("Switch1", Constants.MAJOR_12, Constants.PREVIEW_MINOR_VERSION);
+ }
+
+ public void testSwitch2() {
+ runTest("switch 2");
+ checkVersion("Switch2", Constants.MAJOR_12, Constants.PREVIEW_MINOR_VERSION);
+ }
+
+ public void testSwitch3() {
+ runTest("switch 3");
+ checkVersion("Switch3", Constants.MAJOR_12, Constants.PREVIEW_MINOR_VERSION);
+ }
+ // ---
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Java12Tests.class);
+ }
+
+ @Override
+ protected java.net.URL getSpecFile() {
+ return getClassResource("ajc193.xml");
+ }
+
+}
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc190/ajc190.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc190/ajc190.xml
index 2936888cb..5a3dec730 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc190/ajc190.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc190/ajc190.xml
@@ -111,8 +111,12 @@
<!-- this fails because if you start working with modules you commit to the modules story and classpath
becomes irrelevant -->
<compile files="module-info.java aaa/bbb/A.java" options="-1.9" outjar="module.jar" classpath="foo.jar">
- <message kind="error" text="The import ddd cannot be resolved"/>
+ <message kind="error" text="The type ddd.D is not accessible"/>
<message kind="error" text="D cannot be resolved"/>
+ <!--
+ <message kind="error" text="The import ddd cannot be resolved"/>
+ <message kind="error" text="package ddd is not visible"/>
+ -->
</compile>
</ajc-test>
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc193/ajc193.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc193/ajc193.xml
index 2a4be40f8..c13159c30 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc193/ajc193.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc193/ajc193.xml
@@ -51,6 +51,45 @@ Method call
</run>
</ajc-test>
+ <ajc-test dir="features193" vm="12" title="switch 1">
+ <compile files="Switch1.java" options="-12 --enable-preview">
+ </compile>
+ <run class="Switch1" vmargs="--enable-preview">
+ <stdout>
+ <line text="0"/>
+ <line text="1"/>
+ <line text="2"/>
+ <line text="3"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="features193" vm="12" title="switch 2">
+ <compile files="Switch2.java" options="--enable-preview -source 12">
+ </compile>
+ <run class="Switch2" vmargs="--enable-preview">
+ <stdout>
+ <line text="0"/>
+ <line text="2"/>
+ <line text="4"/>
+ <line text="6"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="features193" vm="12" title="switch 3">
+ <compile files="Switch3.java" options="--enable-preview -source 12">
+ </compile>
+ <run class="Switch3" vmargs="--enable-preview">
+ <stdout>
+ <line text="3"/>
+ <line text="6"/>
+ <line text="9"/>
+ <line text="12"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
<ajc-test dir="bugs193/543657" vm="1.8" title="overweaving decm - reweaving">
<compile files="MoodIndicator.java,Code1.java" options="-showWeaveInfo -1.8" outjar="one.jar">
<message kind="weave" text="Mixing interface 'MoodIndicator$Moody' (MoodIndicator.java) into type 'Code1' (Code1.java)"/>
diff --git a/util/src/main/java/org/aspectj/util/LangUtil.java b/util/src/main/java/org/aspectj/util/LangUtil.java
index 82bd9426b..ee77556c8 100644
--- a/util/src/main/java/org/aspectj/util/LangUtil.java
+++ b/util/src/main/java/org/aspectj/util/LangUtil.java
@@ -161,6 +161,10 @@ public class LangUtil {
return 11 <= vmVersion;
}
+ public static boolean is12VMOrGreater() {
+ return 12 <= vmVersion;
+ }
+
/**
* Shorthand for "if null, throw IllegalArgumentException"
*
diff --git a/weaver/src/test/java/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java b/weaver/src/test/java/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java
index 58f774840..03ded4f6d 100644
--- a/weaver/src/test/java/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java
+++ b/weaver/src/test/java/org/aspectj/weaver/bcel/BcelGenericSignatureToTypeXTestCase.java
@@ -13,11 +13,14 @@ package org.aspectj.weaver.bcel;
import junit.framework.TestCase;
+import java.util.Arrays;
+
import org.aspectj.apache.bcel.Repository;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.apache.bcel.classfile.Signature;
import org.aspectj.util.GenericSignature;
import org.aspectj.util.GenericSignatureParser;
+import org.aspectj.util.LangUtil;
import org.aspectj.util.GenericSignature.ClassSignature;
import org.aspectj.weaver.UnresolvedType;
@@ -44,12 +47,19 @@ public class BcelGenericSignatureToTypeXTestCase extends TestCase {
UnresolvedType superclass = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superclassSignature,
cSig.formalTypeParameters, world);
assertEquals("Ljava/lang/Object;", superclass.getSignature());
- assertEquals("2 superinterfaces", 2, cSig.superInterfaceSignatures.length);
- UnresolvedType comparable = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superInterfaceSignatures[0],
+ System.out.println(Arrays.toString(cSig.superInterfaceSignatures));
+ if (LangUtil.is12VMOrGreater()) {
+ // [Ljava/lang/constant/Constable;, Ljava/lang/Comparable<TE;>;, Ljava/io/Serializable;]
+ assertEquals("3 superinterfaces but "+Arrays.toString(cSig.superInterfaceSignatures), 3, cSig.superInterfaceSignatures.length);
+ } else {
+ assertEquals("2 superinterfaces", 2, cSig.superInterfaceSignatures.length);
+ }
+ int idx = LangUtil.is12VMOrGreater()?1:0;
+ UnresolvedType comparable = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(cSig.superInterfaceSignatures[idx++],
cSig.formalTypeParameters, world);
assertEquals("Pjava/lang/Comparable<TE;>;", comparable.getSignature());
UnresolvedType serializable = BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(
- cSig.superInterfaceSignatures[1], cSig.formalTypeParameters, world);
+ cSig.superInterfaceSignatures[idx++], cSig.formalTypeParameters, world);
assertEquals("Ljava/io/Serializable;", serializable.getSignature());
}