aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authoracolyer <acolyer>2004-08-04 12:04:41 +0000
committeracolyer <acolyer>2004-08-04 12:04:41 +0000
commit0f211e17cac9b031ab8d9115f9030b3e65d3927a (patch)
treecabe16f0e367daaa4b28685e09f5b0bcd55bb43d /tests/src
parent9a051d348a240095e56ead5485c2dba8cf6ad4a7 (diff)
downloadaspectj-0f211e17cac9b031ab8d9115f9030b3e65d3927a.tar.gz
aspectj-0f211e17cac9b031ab8d9115f9030b3e65d3927a.zip
Spring cleaning in the test suite. Docs for AjcTestCase and XMLBasedAjcTestCase
added in docs dir.
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/org/aspectj/systemtest/AllTests.java55
-rw-r--r--tests/src/org/aspectj/systemtest/AllTests14.java30
-rw-r--r--tests/src/org/aspectj/systemtest/ajc10x/Ajc10xTests.java1165
-rw-r--r--tests/src/org/aspectj/systemtest/ajc10x/ajc10x-tests.xml2006
-rw-r--r--tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml9
-rw-r--r--tests/src/org/aspectj/systemtest/ajc11/Ajc11Tests.java480
-rw-r--r--tests/src/org/aspectj/systemtest/ajc11/ajc11-tests.xml834
-rw-r--r--tests/src/org/aspectj/systemtest/ajc11/ajc11.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/ajc120/Ajc120Tests.java244
-rw-r--r--tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml478
-rw-r--r--tests/src/org/aspectj/systemtest/ajc120/ajc120.xml11
-rw-r--r--tests/src/org/aspectj/systemtest/ajc121/Ajc121Tests.java84
-rw-r--r--tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml127
-rw-r--r--tests/src/org/aspectj/systemtest/ajc121/ajc121.xml12
-rw-r--r--tests/src/org/aspectj/systemtest/aspectpath/AspectPathTests.java116
-rw-r--r--tests/src/org/aspectj/systemtest/aspectpath/aspectpath-tests.xml198
-rw-r--r--tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml12
-rw-r--r--tests/src/org/aspectj/systemtest/base/BaseTests.java188
-rw-r--r--tests/src/org/aspectj/systemtest/base/baseTests-tests.xml263
-rw-r--r--tests/src/org/aspectj/systemtest/base/baseTests.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/design/DesignTests.java80
-rw-r--r--tests/src/org/aspectj/systemtest/design/design.xml11
-rw-r--r--tests/src/org/aspectj/systemtest/design/designtest.xml94
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/IncrementalTests.java194
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/incremental-junit-tests.xml197
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/incremental-tests.xml183
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/incremental.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/inpath/InPathTests.java96
-rw-r--r--tests/src/org/aspectj/systemtest/inpath/inpath-tests.xml296
-rw-r--r--tests/src/org/aspectj/systemtest/inpath/inpath.xml11
-rw-r--r--tests/src/org/aspectj/systemtest/java14/Java14Tests.java115
-rw-r--r--tests/src/org/aspectj/systemtest/java14/java14-tests.xml153
-rw-r--r--tests/src/org/aspectj/systemtest/java14/java14.xml11
-rw-r--r--tests/src/org/aspectj/systemtest/knownlimitations/KnownLimitationsTests.java144
-rw-r--r--tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml297
-rw-r--r--tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations.xml11
-rw-r--r--tests/src/org/aspectj/systemtest/options/OptionsTests.java44
-rw-r--r--tests/src/org/aspectj/systemtest/options/options-tests.xml37
-rw-r--r--tests/src/org/aspectj/systemtest/options/options.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/pre10x/AjcPre10xTests.java316
-rw-r--r--tests/src/org/aspectj/systemtest/pre10x/pre10x-tests.xml629
-rw-r--r--tests/src/org/aspectj/systemtest/pre10x/pre10x.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java992
-rw-r--r--tests/src/org/aspectj/systemtest/purejava/pureJava-tests.xml1894
-rw-r--r--tests/src/org/aspectj/systemtest/purejava/pureJava.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/serialVerUID/SUIDTests.java96
-rw-r--r--tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID-tests.xml165
-rw-r--r--tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml10
-rw-r--r--tests/src/org/aspectj/systemtest/xlint/XLintTests.java104
-rw-r--r--tests/src/org/aspectj/systemtest/xlint/xlint-tests.xml161
-rw-r--r--tests/src/org/aspectj/systemtest/xlint/xlint.xml10
51 files changed, 12723 insertions, 0 deletions
diff --git a/tests/src/org/aspectj/systemtest/AllTests.java b/tests/src/org/aspectj/systemtest/AllTests.java
new file mode 100644
index 000000000..21a2ea5bb
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/AllTests.java
@@ -0,0 +1,55 @@
+/*
+ * Created on 03-Aug-2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.aspectj.systemtest;
+
+import org.aspectj.systemtest.ajc10x.Ajc10xTests;
+import org.aspectj.systemtest.ajc11.Ajc11Tests;
+import org.aspectj.systemtest.ajc120.Ajc120Tests;
+import org.aspectj.systemtest.ajc121.Ajc121Tests;
+import org.aspectj.systemtest.aspectpath.AspectPathTests;
+import org.aspectj.systemtest.base.BaseTests;
+import org.aspectj.systemtest.design.DesignTests;
+import org.aspectj.systemtest.incremental.IncrementalTests;
+import org.aspectj.systemtest.inpath.InPathTests;
+import org.aspectj.systemtest.options.OptionsTests;
+import org.aspectj.systemtest.pre10x.AjcPre10xTests;
+import org.aspectj.systemtest.serialVerUID.SUIDTests;
+import org.aspectj.systemtest.xlint.XLintTests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author colyer
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class AllTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("AspectJ System Test Suite - JDK 1.3");
+ //$JUnit-BEGIN$
+ suite.addTest(Ajc121Tests.suite());
+ suite.addTest(Ajc120Tests.suite());
+ suite.addTest(Ajc11Tests.suite());
+ suite.addTest(Ajc10xTests.suite());
+ suite.addTest(AspectPathTests.suite());
+ suite.addTest(InPathTests.suite());
+ suite.addTest(BaseTests.suite());
+ suite.addTest(DesignTests.suite());
+ suite.addTest(IncrementalTests.suite());
+ //suite.addTest(KnownLimitationsTests.class);
+ suite.addTest(OptionsTests.suite());
+ suite.addTest(AjcPre10xTests.suite());
+ //suite.addTest(PureJavaTests.class);
+ suite.addTest(SUIDTests.suite());
+ suite.addTest(XLintTests.suite());
+ //$JUnit-END$
+ return suite;
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/AllTests14.java b/tests/src/org/aspectj/systemtest/AllTests14.java
new file mode 100644
index 000000000..da97c7337
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/AllTests14.java
@@ -0,0 +1,30 @@
+/*
+ * Created on 03-Aug-2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.aspectj.systemtest;
+
+import org.aspectj.systemtest.java14.Java14Tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author colyer
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class AllTests14 {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("AspectJ System Test Suite - JDK 1.4");
+ //$JUnit-BEGIN$
+ suite.addTest(AllTests.suite());
+ suite.addTest(Java14Tests.suite());
+ //$JUnit-END$
+ return suite;
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc10x/Ajc10xTests.java b/tests/src/org/aspectj/systemtest/ajc10x/Ajc10xTests.java
new file mode 100644
index 000000000..cd63392c8
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc10x/Ajc10xTests.java
@@ -0,0 +1,1165 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.ajc10x;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class Ajc10xTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc10xTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml");
+ }
+
+
+ public void test001(){
+ runTest("properly make choice between cast and parenthesis in parser");
+ }
+
+ public void test002(){
+ runTest("field from implemented interface not found in advice");
+ }
+
+ public void test003(){
+ runTest("make sure advice affects introduced methods and constructors");
+ }
+
+ public void test004(){
+ runTest("new around construct");
+ }
+
+ public void test005(){
+ runTest("aspect redefines a parameter");
+ }
+
+ public void test006(){
+ runTest("introducing extends and implements");
+ }
+
+ public void test007(){
+ runTest("(related) aspect on interface");
+ }
+
+ public void test008(){
+ runTest("advice and package visibility");
+ }
+
+ public void test009(){
+ runTest("advice and package visibility");
+ }
+
+ public void test010(){
+ runTest("advice on implied empty constructor");
+ }
+
+ public void test011(){
+ runTest("advice on * *(..) not mapping to initializers");
+ }
+
+ public void test012(){
+ runTest("three type declarations in the scope of an advice");
+ }
+
+ public void test013(){
+ runTest("introduction fails on class with an inner class that extends or implements something");
+ }
+
+ public void test014(){
+ runTest("checks that methods are introduced on the topmost class implemented");
+ }
+
+ public void test015(){
+ runTest("a couple different returns from around advice");
+ }
+
+ public void test016(){
+ runTest("member finally advice paired with signature advice");
+ }
+
+ public void test017(){
+ runTest("aspect of eachobject(instanceof(Interface))");
+ }
+
+ public void test018(){
+ runTest("final member initialization broken with JDK before 1.1.8");
+ }
+
+ public void test019(){
+ runTest("same package and var name clash in preprocessed code when aspectOf is used");
+ }
+
+ public void test020(){
+ runTest("and PR#201 advice on static methods fails javac compile with this");
+ }
+
+ public void test021(){
+ runTest("non-static advice on inner class defined inside of method body");
+ }
+
+ public void test022(){
+ runTest("simple single-threaded eachcflow test (includes aspectOf)");
+ }
+
+ public void test023(){
+ runTest("bad type resolution when var reassigned in same scope");
+ }
+
+ public void test024(){
+ runTest("generating the right throws clause for call-site advice (and around)");
+ }
+
+ public void test025(){
+ runTest("advice on calls to static methods using several syntax");
+ }
+
+ public void test026(){
+ runTest(", PR#249, PR#250 advice on constructor sites");
+ }
+
+ public void test027(){
+ runTest("test after throwing advice in several ways");
+ }
+
+ public void test028(){
+ runTest("fancy name patterns for method names");
+ }
+
+ public void test029(){
+ runTest("calls: calls(...)");
+ }
+
+ public void test030(){
+ runTest("throws Exception clause is unnecessarily added to Driver.main method");
+ }
+
+ public void test031(){
+ runTest("javac fails when this is referenced in the static main method");
+ }
+
+ public void test032(){
+ runTest("and 276 cast error generated by ajc when type not in signature");
+ }
+
+ public void test033(){
+ runTest("calls to methods to which we don't have source");
+ }
+
+ public void test034(){
+ runTest("more aspect inheritance");
+ }
+
+ public void test035(){
+ runTest("around and calls with both calling and called this params");
+ }
+
+ public void test036(){
+ runTest("compiler crashes with eachobject and named pointcuts with parameters");
+ }
+
+ public void test037(){
+ runTest("lookup rules for unqualified pointcut names");
+ }
+
+ public void test038(){
+ runTest("eachcflow only instantiated if the aspect has some advice in it");
+ }
+
+ public void test039(){
+ runTest("(DESIGN QUESTION) aspect of eachJVM advising its own initializer");
+ }
+
+ public void test040(){
+ runTest("after returning advice on calls to constructors");
+ }
+
+ public void test041(){
+ runTest("Does annotating 'new' with a type work as desired?");
+ }
+
+ public void test042(){
+ runTest("Referring to inner classes as {super}.{inner} confused ajc.");
+ }
+
+ public void test043(){
+ runTest("Advice on advice");
+ }
+
+ public void test044(){
+ runTest("Introductions on other introductions");
+ }
+
+ public void test045(){
+ runTest("Putting advice on array constructors.");
+ }
+
+ public void test046(){
+ runTest("call points within block inner classes are doubled");
+ }
+
+ public void test047(){
+ runTest("Gets and sets with other advice");
+ }
+
+ public void test048(){
+ runTest("Compiler can compile correct strictfp modifiers");
+ }
+
+ public void test049(){
+ runTest("basic test of callsto pointcuts");
+ }
+
+ public void test050(){
+ runTest("package wildcards in packages");
+ }
+
+ public void test051(){
+ runTest("around advice on calls and receptions with lots of context");
+ }
+
+ public void test052(){
+ runTest("! modifier and char in pointcut (no longer an error)");
+ }
+
+ public void test053(){
+ runTest("right number of aspect instances per cflow");
+ }
+
+ public void test054(){
+ runTest("many this's into around advice on calls");
+ }
+
+ public void test055(){
+ runTest("Ensures introduction methods can have advice placed on them");
+ }
+
+ public void test056(){
+ runTest("No boolean appearing in the 'if' clause for around advice with eachJVM()");
+ }
+
+ public void test057(){
+ runTest("Order of super introductions.");
+ }
+
+ public void test058(){
+ runTest("Ensuring backdoor methods are produced.");
+ }
+
+ public void test059(){
+ runTest("no duplicate advice methods in abstract aspects");
+ }
+
+ public void test060(){
+ runTest("no duplicate advice methods in abstract aspects extended");
+ }
+
+ public void test061(){
+ runTest("Putting after-constructor advice on the wrong types implementing the same interface.");
+ }
+
+ public void test062(){
+ runTest("Instantiating non-static inner classes in advice.");
+ }
+
+ public void test063(){
+ runTest("Referring to pointcut in of clauses");
+ }
+
+ public void test064(){
+ runTest("Confused referring to instance variables and locals");
+ }
+
+ public void test065(){
+ runTest("Parsing C+ expressions without parens in super introductions.");
+ }
+
+ public void test066(){
+ runTest("Introducing methods on classes that implements inner-interfaces with +implements.");
+ }
+
+ public void test067(){
+ runTest("Methods with the same name are generated when abstract aspects extend another abstract aspect.");
+ }
+
+ public void test068(){
+ runTest("Making sure final variables stay final.");
+ }
+
+ public void test069(){
+ runTest("Problem resolving meta-joinpoint names with around advice on methods called from around advice.");
+ }
+
+ public void test070(){
+ runTest("Make sure that names of lifted local classes are right when referenced in call-site advice");
+ }
+
+ public void test071(){
+ runTest("matching for throws clause");
+ }
+
+ public void test072(){
+ runTest("basic test of declare soft");
+ }
+
+ public void test073(){
+ runTest("advice on calls to constructors of anonymous inners and access to context");
+ }
+
+ public void test074(){
+ runTest("inner aspects can't access outer pointcuts");
+ }
+
+ public void test075(){
+ runTest("implements and extends are introduced before methods and fields");
+ }
+
+ public void test076(){
+ runTest("a static/inner aspect of a inner class of an aspect is pulled to the top level as static");
+ }
+
+ public void test077(){
+ runTest("Crashes with privileged aspect.");
+ }
+
+ public void test078(){
+ runTest("join points exist in the execution of field initializers");
+ }
+
+ public void test079(){
+ runTest("privileged aspects");
+ }
+
+ public void test080(){
+ runTest("advice on field gets in privileged aspects");
+ }
+
+ public void test081(){
+ runTest("Two anonymous classes in the same scope");
+ }
+
+ public void test082(){
+ runTest("basic tests for initializer and staticinitializer PCDs");
+ }
+
+ public void test083(){
+ runTest("introduction of an initializer into a class");
+ }
+
+ public void test084(){
+ runTest("some method accessibility tests, particularly package-protected and inheritance");
+ }
+
+ public void test085(){
+ runTest("fairly monotonous (and non-covering) tests for expanded dot patterns");
+ }
+
+ public void test086(){
+ runTest("field patterns and subtyping");
+ }
+
+ public void test087(){
+ runTest("Checking formal matching as in Roeder's bug in 0.7b10");
+ }
+
+ public void test088(){
+ runTest("Introducing synchronized methods on interfaces.");
+ }
+
+ public void test089(){
+ runTest("The pointcut params (..,int..) is not recognizing (Object,int,Object).");
+ }
+
+ public void test090(){
+ runTest("calls advice on array objects causes error in code generation");
+ }
+
+ public void test091(){
+ runTest("join points in field initializers aren't showing up.");
+ }
+
+ public void test092(){
+ runTest("Handlers problem");
+ }
+
+ public void test093(){
+ runTest("work nicely with inner class method look-up rules and call-site advice");
+ }
+
+ public void test094(){
+ runTest("strictfp modifier allowed on advice");
+ }
+
+ public void test095(){
+ runTest("No argthis was being created for calls advice.");
+ }
+
+ public void test096(){
+ runTest("Ensuring no advice with instanceof(..) is run on static methods.");
+ }
+
+ public void test097(){
+ runTest("Null pointer on gets advice showing the case causing the error");
+ }
+
+ public void test098(){
+ runTest("try to make sure that dynamic JoinPoint objects aren't generated when used inside of if (false) { ... }");
+ }
+
+ public void test099(){
+ runTest("within and withincode (doesn't all work due to local class name issues)");
+ }
+
+ public void test100(){
+ runTest("around advice on calls within inner classes (including protected method calls)");
+ }
+
+ public void test101(){
+ runTest("around advice on calls within inner classes (including protected method calls)");
+ }
+
+ public void test102(){
+ runTest("Arguments to runNext should be final when needed");
+ }
+
+ public void test103(){
+ runTest("Method introductions");
+ }
+
+ public void test104(){
+ runTest("Putting an introduced method on each interface");
+ }
+
+ public void test105(){
+ runTest("Extending interfaces");
+ }
+
+ public void test106(){
+ runTest("Introducing private methods on interfaces");
+ }
+
+ public void test107(){
+ runTest("Issuing errors for assigning variables thisJoinPoint -- not assigning thisJoinPoint.");
+ }
+
+ public void test108(){
+ runTest("Static references inside of introduced bodies get bound correctly.");
+ }
+
+ public void test109(){
+ runTest("cflow and object creations [of eachcflow]");
+ }
+
+ public void test110(){
+ runTest("Doesn't import MightHaveAspect when compiling with more than 1 file. [eachobject]");
+ }
+
+ public void test111(){
+ runTest("test binding to formals in calls to constructors (binding to null) (eachobject !!! now misnamed)");
+ }
+
+ public void test112(){
+ runTest("After advice isn't being woven into after throwing advice");
+ }
+
+ public void test113(){
+ runTest("Throwing an EmptyStackException.");
+ }
+
+ public void test114(){
+ runTest("check that MightHaveAspect interface is created correctly for an aspect in deep package");
+ }
+
+ public void test115(){
+ runTest("Defines clfow$ajc0 more once. [eachcflow]");
+ }
+
+ public void test116(){
+ runTest("Various calls, receptions, and callsto tests [callsto]");
+ }
+
+ public void test117(){
+ runTest("Was throwing exception, now just an error. [eachobject]");
+ }
+
+ public void test118(){
+ runTest("different version of aspect inheritance, particularly empty pointcuts and abstract cflows [eachcflow]");
+ }
+
+ public void test119(){
+ runTest("set advice on member initing throwing exception [eachobject]");
+ }
+
+ public void test120(){
+ runTest("Testing class names with same name's with difference case as package. [eachobject]");
+ }
+
+ public void test121(){
+ runTest("Null pointer on gets advice with coverage [painful]");
+ }
+
+ public void test122(){
+ runTest("Basic test for cflow pointcuts [eachcflow]");
+ }
+
+ public void test123(){
+ runTest("Crashing when looking up the type of array members.");
+ }
+
+ public void test124(){
+ runTest("PostfixExprs to various synthetic things are fixed correctly [eachobject]");
+ }
+
+ public void test125(){
+ runTest("Dave Binkley's problem with eachcflowroot. [eachcflow]");
+ }
+
+ public void test126(){
+ runTest("advice on an inherited method");
+ }
+
+ public void test127(){
+ runTest(", PR#115 checks the ordering of catch clauses");
+ }
+
+ public void test128(){
+ runTest("various declared exception permutations");
+ }
+
+ public void test129(){
+ runTest("ordering of advice kinds as well as cflow and dominates");
+ }
+
+ public void test130(){
+ runTest("advice on default constructor for a class only referenced via reflection");
+ }
+
+ public void test131(){
+ runTest("calling and called this params in calls points");
+ }
+
+ public void test132(){
+ runTest("primitive parameters coercable to Object just like return values are");
+ }
+
+ public void test133(){
+ runTest("join points in static/dynamic initializers aren't showing up.");
+ }
+
+ public void test134(){
+ runTest("Gets and sets on a number of variables (field access ???)");
+ }
+
+ public void test135(){
+ runTest("Joinpoints are showing up on intermediate call sites");
+ }
+
+ public void test136(){
+ runTest("Reception based on strictfp modifier");
+ }
+
+ public void test137(){
+ runTest("Subclasses that do not redefine a method are not being handled correctly");
+ }
+
+ public void test138(){
+ runTest("making sure that super calls are bound to the right methods");
+ }
+
+ public void test139(){
+ runTest("inheritance, around advice and abstract pointcuts [eachobject] (still)");
+ }
+
+ public void test140(){
+ runTest("Priviledged aspect methods are missing for privates. [eachobject]");
+ }
+
+ public void test141(){
+ runTest("exceptions thrown and caught in advice, particularly try+proceed");
+ }
+
+ public void test142(){
+ runTest("Not and And operators in pointcuts not working");
+ }
+
+ public void test143(){
+ runTest("Member initializers should run before the current class constructor");
+ }
+
+ public void test144(){
+ runTest("Coverage tests for Member initializers should run before the current class constructor and after super");
+ }
+
+ public void test145(){
+ runTest("thisJoinPoint{Static} not visible in if() pcd of named pointcut");
+ }
+
+ public void test146(){
+ runTest("pcd if() expression visibility at compile-time (minimal operation)");
+ }
+
+ public void test147(){
+ runTest("pcd if() NPE in compiler when unwinding assignment in pcd if(expr)");
+ }
+
+ public void test148(){
+ runTest("pcd if() dup methods produced when pointcut after advice etc (javac)");
+ }
+
+ public void test149(){
+ runTest("pcd if() variants: [anonymous, named] x [execution, call, callTyped, get, set, initializations] x [before, after, around]");
+ }
+
+// moved to ajcTestsFailing.xml
+// public void test150(){
+// runTest("advice on advice in usejavac mode");
+// }
+
+ public void test151(){
+ runTest("initialization order with this");
+ }
+
+ public void test152(){
+ runTest("!within and !this handling for callee-side call points");
+ }
+
+ public void test153(){
+ runTest("private inner interfaces and bytecode visibility");
+ }
+
+ public void test154(){
+ runTest("elaborated into testing of around on all join points");
+ }
+
+ public void test155(){
+ runTest("type name hygiene when code comes from aspects in different packages");
+ }
+
+ public void test156(){
+ runTest("cflowbelow dependencies (from Chris Dutchyn)");
+ }
+
+ public void test157(){
+ runTest("Compiler incorrectly flagging *1 (non-alphabetic start to signature pattern)");
+ }
+
+ public void test158(){
+ runTest("Unable to bind privately-introduced field name from introduced method in the same aspect");
+ }
+
+ public void test159(){
+ runTest("anonymous inner class with aspect");
+ }
+
+ public void test160(){
+ runTest("Arguments are not being passed in to calls advice");
+ }
+
+ public void test161(){
+ runTest("interfaces as mixins with introduction");
+ }
+
+ public void test162(){
+ runTest("functional modifiers work correctly with introduced members");
+ }
+
+ public void test163(){
+ runTest("ExceptionInInitializerError accessing cflow in aspect initialization - before variants");
+ }
+
+ public void test164(){
+ runTest("NoClassDefFoundError accessing cflow in aspect initialization - after variants");
+ }
+
+ public void test165(){
+ runTest("InternalCompilerError in JpPlan when args alone");
+ }
+
+ public void test166(){
+ runTest("compile error using pcd if() with advice on introduced methods.");
+ }
+
+ public void test167(){
+ runTest("compile errors boolean using cflow and unimplemented method using around advice on methods introduced by interface");
+ }
+
+ public void test168(){
+ runTest("aspect as member of interface");
+ }
+
+ public void test169(){
+ runTest("missing method name to synthetic invocation");
+ }
+
+ public void test170(){
+ runTest("protected subclass impl of superclass method with default access and variants");
+ }
+
+ public void test171(){
+ runTest("Exception planning advice");
+ }
+
+ public void test172(){
+ runTest("unreproduced bug with advice - probably UTR");
+ }
+
+ public void test173(){
+ runTest("introduced inner interfaces accessible inside aspect");
+ }
+
+ public void test174(){
+ runTest("validate (enclosing) join point and source locations");
+ }
+
+ public void test175(){
+ runTest("advice formals are just like method formals");
+ }
+
+ public void test176(){
+ runTest("advice formals produce errors just like method formals");
+ }
+
+ public void test177(){
+ runTest("advice throws clauses must be compatible with joinpoints they apply to");
+ }
+
+ public void test178(){
+ runTest("potential method conflicts with introductions and interfaces and PR#561");
+ }
+
+ public void test179(){
+ runTest("illegal method conflicts with introductions and interfaces and PR#561");
+ }
+
+ public void test180(){
+ runTest("AspectOf available for different aspect types");
+ }
+
+ public void test181(){
+ runTest("access to all members of class and inner class from privileged aspect");
+ }
+
+ public void test182(){
+ runTest("cflow alone with around produces compiler bcg StackOverflowError");
+ }
+
+ public void test183(){
+ runTest("get/set join points run for complex assignment operators (+=, etc.) (working)");
+ }
+
+ public void test184(){
+ runTest("this available in introduced field initializers");
+ }
+
+ public void test185(){
+ runTest("Introduced type unavailable to cast expressions in introduced methods");
+ }
+
+ public void test186(){
+ runTest("Introduced type unavailable to qualified new expressions in introduced methods");
+ }
+
+ public void test187(){
+ runTest("Introduced type unavailable to cast expressions in introduced field initializers");
+ }
+
+ public void test188(){
+ runTest("Aspect type unavailable to qualified new expressions in body of introduced methods");
+ }
+
+ public void test189(){
+ runTest("Introduced type unavailable to qualified new expressions in introduced field initializers");
+ }
+
+ public void test190(){
+ runTest("variable slots and finally/catch causing verify errors");
+ }
+
+ public void test191(){
+ runTest("after advice on static method with pcd if() using result");
+ }
+
+ public void test192(){
+ runTest("after advice on static method with pcd if() using result through pointcut");
+ }
+
+ public void test193(){
+ runTest("AbstractMethodError for introduced methods (order 1)");
+ }
+
+ public void test194(){
+ runTest("AbstractMethodError for introduced methods (order 2)");
+ }
+
+ public void test195(){
+ runTest("AbstractMethodError for introduced methods (order 3)");
+ }
+
+ public void test196(){
+ runTest("AbstractMethodError for introduced methods (order 4)");
+ }
+
+ public void test197(){
+ runTest("AbstractMethodError for introduced methods (order 5)");
+ }
+
+ public void test198(){
+ runTest("declare error and abstract pointcuts");
+ }
+
+ public void test199(){
+ runTest("Exercise runtime classes (optionally in 1.1 VM)");
+ }
+
+ public void test200(){
+ runTest("VerifyError after around advice falls off end of tryCatch");
+ }
+
+ public void test201(){
+ runTest("Named within pointcuts failing");
+ }
+
+ public void test202(){
+ runTest("aspect with private abstract pointcut");
+ }
+
+ public void test203(){
+ runTest("concrete aspect unable to access abstract package-private pointcut in parent for overriding");
+ }
+
+ public void test204(){
+ runTest("inner, outer, and outside-package subaspects of an aspect with abstract protected-, public-, and default-access pointcuts");
+ }
+
+ public void test205(){
+ runTest("inner subaspects of an aspect with private pointcut");
+ }
+
+ public void test206(){
+ runTest("outer subaspects of an aspect with private pointcut");
+ }
+
+ public void test207(){
+ runTest("abstract aspect used statically should not cause instantiation of advice or pointcut");
+ }
+
+ public void test208(){
+ runTest("private inner interface accessible in scope when declared on outer class");
+ }
+
+ public void test209(){
+ runTest("accessing protected superclass members in and outside CCC from body of method introduction");
+ }
+
+ public void test210(){
+ runTest("accessing private superclass members from body of method introduction");
+ }
+
+ public void test211(){
+ runTest("simple test for around and casting");
+ }
+
+ public void test212(){
+ runTest("aroundInner 1 - around advice inner Thread subclass running proceed but not writing field");
+ }
+
+ public void test213(){
+ runTest("aroundInner 2 - around advice inner Runnable running proceed and writing method-final proxy");
+ }
+
+ public void test214(){
+ runTest("aroundInner 3 - around advice inner class running proceed and writing field");
+ }
+
+ public void test215(){
+ runTest("aroundInner 4 - around advice inner Thread subclass running proceed and writing field");
+ }
+
+ public void test216(){
+ runTest("aroundInner 5 - around advice inner Runnable (subinterface) running proceed and writing field introduced on subinterface");
+ }
+
+ public void test217(){
+ runTest("Named local class closing over proceed invocation");
+ }
+
+ public void test218(){
+ runTest("beautiful recursive computation of factorial with around is now supported");
+ }
+
+ public void test219(){
+ runTest("multi-dispatch not used for named pcd references");
+ }
+
+ public void test220(){
+ runTest("multi-dispatch implemented through around + args");
+ }
+
+ public void test221(){
+ runTest("unrecognized aspect should not net Cloneable and Serializable warnings");
+ }
+
+ public void test222(){
+ runTest("unreachable code generated by around advice on the execution of void methods");
+ }
+
+ public void test223(){
+ runTest("Overriding method implementations using introduction on interfaces");
+ }
+
+ public void test224(){
+ runTest("more coverage for around and concrete methods on interfaces");
+ }
+
+ public void test225(){
+ runTest("invalid number and type of proceed arguments");
+ }
+
+ public void test226(){
+ runTest("after returning advice order");
+ }
+
+ public void test227(){
+ runTest("after returning advice param");
+ }
+
+ public void test228(){
+ runTest("! and declaring types with callee-side call join points");
+ }
+
+ public void test229(){
+ runTest(". Binding the wrong arguments in withincode(..).");
+ }
+
+ public void test230(){
+ runTest(". Matching arguments in cflow correctly.");
+ }
+
+ public void test231(){
+ runTest(". Binding variables with numbers in their name with pertarget(..)'s.");
+ }
+
+ public void test232(){
+ runTest("second arg in formal on shared joinpoint with pcd if() causes verify error ??");
+ }
+
+ public void test233(){
+ runTest("access to private members from privileged aspect");
+ }
+
+ public void test234(){
+ runTest("inner classes of privileged aspects cannot see target class private members");
+ }
+
+ public void test235(){
+ runTest("aspects should get package access outside the file");
+ }
+
+ public void test236(){
+ runTest("subclass advice not run for join points selected by superclass cflow-based pointcuts");
+ }
+
+ public void test237(){
+ runTest("more issues with abstract aspects and cflow pointcuts");
+ }
+
+ public void test238(){
+ runTest("compile fails for aspect derived from percflow base aspect unless pointcut excludes base aspect and subaspects");
+ }
+
+ public void test239(){
+ runTest("pertarget stack overflow getting name of anonymous (Interface) class");
+ }
+
+ public void test240(){
+ runTest("pertarget stack overflow getting name of anonymous (Object) class");
+ }
+
+ public void test241(){
+ runTest("pertarget runtime stack overflow (getting name of anonymous (Object) class?)");
+ }
+
+ public void test242(){
+ runTest("subaspect method declaration on superaspect inner interface (names)");
+ }
+
+ public void test243(){
+ runTest("subaspect method declaration on superaspect inner interface (access)");
+ }
+
+ public void test244(){
+ runTest("subaspect method declaration on superaspect inner interface (types)");
+ }
+
+ public void test245(){
+ runTest("around AST type XXX");
+ }
+
+ public void test246(){
+ runTest("around all execution with double assignment in initializer (simple)");
+ }
+
+ public void test247(){
+ runTest("around all execution with double assignment in initializer (coverage)");
+ }
+
+ public void test248(){
+ runTest("changing this in around's proceed reported by Rich Price");
+ }
+
+ public void test249(){
+ runTest("default package for aspect introductions is not the current package");
+ }
+
+ public void test250(){
+ runTest("anon class written to wrong directory");
+ }
+
+ public void test251(){
+ runTest("unqualified transitive pointcut references not resolved");
+ }
+
+ public void test252(){
+ runTest("unqualified transitive pointcut references not resolved - 2");
+ }
+
+ public void test253(){
+ runTest("direct use outside aspect of defined abstract pointcut");
+ }
+
+ public void test254(){
+ runTest("direct use outside aspect of undefined abstract pointcut");
+ }
+
+ public void test255(){
+ runTest("indirect use outside aspect of undefined abstract pointcut");
+ }
+
+ public void test256(){
+ runTest("simple call join point tests for JoinPoint SourceLocation context");
+ }
+
+ public void test257(){
+ runTest("!target with second advice on casted call");
+ }
+
+ public void test258(){
+ runTest("name binding in around cflow");
+ }
+
+ public void test259(){
+ runTest("name binding in around cflow - 2");
+ }
+
+ public void test260(){
+ runTest("around name-binding in cflows using factorial");
+ }
+
+ public void test261(){
+ runTest("replacing this or target in around advice");
+ }
+
+ public void test262(){
+ runTest("after returning from initialization and after executing constructor");
+ }
+
+ public void test263(){
+ runTest("after returning from initialization causes ExceptionInInitializer in aspect");
+ }
+
+ public void test264(){
+ runTest("name binding in before cflow containing cflowbelow");
+ }
+
+ public void test265(){
+ runTest("file order in type searching");
+ }
+
+ public void test266(){
+ runTest("simple declare warning (NPE)");
+ }
+
+ public void test267(){
+ runTest("ajc dies on cflow into field init anon class see knownbugs.txt");
+ }
+
+ public void test268(){
+ runTest("Incrementing interface-introduced field");
+ }
+
+ public void test269(){
+ runTest("The dynamic type, not the static one, should be used in if pcds");
+ }
+
+ public void test270(){
+ runTest("bad interaction with after returning, around and void methods (from Rich Price)");
+ }
+
+ public void test271(){
+ runTest("type pattern matching for inner classes (from Ken Horn)");
+ }
+
+ public void test272(){
+ runTest("static initializer member name");
+ }
+
+ public void test273(){
+ runTest("cflow pcd syntax error");
+ }
+
+ public void test274(){
+ runTest("binding args with indeterminate prefix and suffix");
+ }
+
+ public void test275(){
+ runTest("check arg types with indeterminate prefix and suffix");
+ }
+
+ public void test276(){
+ runTest("testing and binding args with single indeterminate prefix and suffix");
+ }
+
+ public void test277(){
+ runTest("binding handler args with indeterminate prefix and suffix");
+ }
+
+ public void test278(){
+ runTest("Compiling java.lang.Object with ajc yields non-verifying bytecode");
+ }
+
+ public void test279(){
+ runTest("method-local class defined in around return statement");
+ }
+
+ public void test280(){
+ runTest("CE expected for assignment to arg in if pcd");
+ }
+
+ public void test281(){
+ runTest("advising field get/sets when accessing via super");
+ }
+
+ public void test282(){
+ runTest("accessing private members in outer types");
+ }
+
+ public void test283(){
+ runTest("can't apply around advice to the execution of around advice");
+ }
+
+ public void test284(){
+ runTest("incompatible advice throws clause are a compile-time error");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/ajc10x/ajc10x-tests.xml b/tests/src/org/aspectj/systemtest/ajc10x/ajc10x-tests.xml
new file mode 100644
index 000000000..9e04c610e
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc10x/ajc10x-tests.xml
@@ -0,0 +1,2006 @@
+<!-- AspectJ v1.0.x Tests -->
+
+
+ <ajc-test dir="new"
+ title="properly make choice between cast and parenthesis in parser"
+ keywords="from-resolved_10x">
+ <compile files="JoinPointFields.java"/>
+ <run class="JoinPointFields"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="96"
+ title="field from implemented interface not found in advice"
+ keywords="from-resolved_10x">
+ <compile files="FieldFromImplementsNotFound.java"/>
+ <run class="FieldFromImplementsNotFound"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="make sure advice affects introduced methods and constructors"
+ keywords="from-resolved_10x">
+ <compile files="AdviceOnIntroduced.java"/>
+ <run class="AdviceOnIntroduced"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="new around construct"
+ keywords="from-resolved_10x">
+ <compile files="AroundAdvice.java"/>
+ <run class="AroundAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="65" title="aspect redefines a parameter"
+ keywords="from-resolved_10x">
+ <compile files="AspectRedefinesParam.java"/>
+ <run class="AspectRedefinesParam"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="introducing extends and implements"
+ keywords="from-resolved_10x">
+ <compile files="HierarchyIntroductions.java"/>
+ <run class="HierarchyIntroductions"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="104" title="(related) aspect on interface"
+ keywords="from-resolved_10x">
+ <compile files="AspectOnInterface.java"/>
+ <run class="AspectOnInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="106" title="advice and package visibility"
+ keywords="from-resolved_10x">
+ <compile
+ files="packagevisibility/PackagesAndAdvice.java,packagevisibility/testPackage/Class1.java,packagevisibility/testPackage/Class2.java"
+ options="-Xlint:ignore"/>
+ <run class="packagevisibility.PackagesAndAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="106" title="advice and package visibility"
+ keywords="from-resolved_10x">
+ <compile
+ files="packagevisibility/PackagesAndAdviceCf.java,packagevisibility/testPackage/Class1.java,packagevisibility/testPackage/Class2.java"
+ options="-Xlint:error">
+ <message kind="error" line="29"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" title="advice on implied empty constructor"
+ keywords="from-resolved_10x">
+ <compile files="AdviceOnEmptyConstructor.java"/>
+ <run class="AdviceOnEmptyConstructor"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="advice on * *(..) not mapping to initializers"
+ keywords="from-resolved_10x">
+ <compile files="InitializerAdvice.java"/>
+ <run class="InitializerAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="three type declarations in the scope of an advice"
+ keywords="from-resolved_10x">
+ <compile files="TypeDeclInAdvice.java"/>
+ <run class="TypeDeclInAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="129"
+ title="introduction fails on class with an inner class that extends or implements something"
+ keywords="from-resolved_10x">
+ <compile files="IntroductionFailsWithInnerClass.java"/>
+ <run class="IntroductionFailsWithInnerClass"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="126"
+ title="checks that methods are introduced on the topmost class implemented"
+ keywords="from-resolved_10x">
+ <compile files="TopmostImplements.java"/>
+ <run class="TopmostImplements"/>
+ </ajc-test>
+
+ <ajc-test dir="new/arndAdvRet" pr="140"
+ title="a couple different returns from around advice"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="member finally advice paired with signature advice"
+ keywords="from-resolved_10x">
+ <compile files="TryErrors.java"/>
+ <run class="TryErrors"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="aspect of eachobject(instanceof(Interface))"
+ keywords="from-resolved_10x">
+ <compile files="AspectOfInterface.java"/>
+ <run class="AspectOfInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="new/finalMemInit" pr="162"
+ title="final member initialization broken with JDK before 1.1.8"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/packageNameClash" pr="205"
+ title="same package and var name clash in preprocessed code when aspectOf is used"
+ keywords="from-resolved_10x">
+ <compile files="otherpkg/Driver.java,pkg/Aspect1.java,pkg/Class1.java"/>
+ <run class="otherpkg.Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/adviceOnStaticMeth" pr="221"
+ title="and PR#201 advice on static methods fails javac compile with this"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="non-static advice on inner class defined inside of method body"
+ keywords="from-resolved_10x">
+ <compile files="MethodInner.java"/>
+ <run class="MethodInner"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="simple single-threaded eachcflow test (includes aspectOf)"
+ keywords="from-resolved_10x">
+ <compile files="Client.java"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test dir="new/scopeTypingBug" pr="191"
+ title="bad type resolution when var reassigned in same scope"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="242"
+ title="generating the right throws clause for call-site advice (and around)"
+ keywords="from-resolved_10x">
+ <compile files="ComputedThrows.java"/>
+ <run class="ComputedThrows"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="246"
+ title="advice on calls to static methods using several syntax"
+ keywords="from-resolved_10x">
+ <compile files="StaticCalls.java"/>
+ <run class="StaticCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="248"
+ title=", PR#249, PR#250 advice on constructor sites"
+ keywords="from-resolved_10x">
+ <compile files="NewSiteAdvice.java"/>
+ <run class="NewSiteAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="test after throwing advice in several ways"
+ keywords="from-resolved_10x">
+ <compile files="AfterThrowing.java"/>
+ <run class="AfterThrowing"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="fancy name patterns for method names"
+ keywords="from-resolved_10x">
+ <compile files="WildNames.java"/>
+ <run class="WildNames"/>
+ </ajc-test>
+
+ <ajc-test dir="design/calls" title="calls: calls(...)"
+ keywords="from-resolved_10x">
+ <compile files="Simple.java" options="-Xlint:ignore"/>
+ <run class="Simple"/>
+ </ajc-test>
+
+ <ajc-test dir="new/extraThrows" pr="259"
+ title="throws Exception clause is unnecessarily added to Driver.main method"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/thisUsedInMain" pr="262"
+ title="javac fails when this is referenced in the static main method"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/badCast" pr="275"
+ title="and 276 cast error generated by ajc when type not in signature"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="285"
+ title="calls to methods to which we don't have source"
+ keywords="from-resolved_10x">
+ <compile files="ExternalCalls.java"/>
+ <run class="ExternalCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new/beforeNotRun" pr="265" title="more aspect inheritance"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="310"
+ title="around and calls with both calling and called this params"
+ keywords="from-resolved_10x">
+ <compile files="AroundAndCalls.java"/>
+ <run class="AroundAndCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new/pointcutParameter" pr="290"
+ title="compiler crashes with eachobject and named pointcuts with parameters"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/unqualifiedPointcutName" pr="304"
+ title="lookup rules for unqualified pointcut names"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="321"
+ title="eachcflow only instantiated if the aspect has some advice in it"
+ keywords="from-resolved_10x">
+ <compile files="CFlowNoAdvice.java"/>
+ <run class="CFlowNoAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="309"
+ title="(DESIGN QUESTION) aspect of eachJVM advising its own initializer"
+ keywords="from-resolved_10x">
+ <compile files="EachJVMOnSelf.java"/>
+ <run class="EachJVMOnSelf"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="302"
+ title="after returning advice on calls to constructors"
+ keywords="from-resolved_10x">
+ <compile files="AfterConstructorCalls.java"/>
+ <run class="AfterConstructorCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Does annotating 'new' with a type work as desired?"
+ keywords="from-resolved_10x">
+ <compile files="ConstructorSignatures.java"/>
+ <run class="ConstructorSignatures"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Referring to inner classes as {super}.{inner} confused ajc."
+ keywords="from-resolved_10x">
+ <compile files="InnerClassNaming.java"/>
+ <run class="InnerClassNaming"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Advice on advice" keywords="from-resolved_10x">
+ <compile files="AdviceOnAdvice.java"/>
+ <run class="AdviceOnAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Introductions on other introductions"
+ keywords="from-resolved_10x">
+ <compile files="IntroOnIntro.java"/>
+ <run class="IntroOnIntro"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Putting advice on array constructors."
+ keywords="from-resolved_10x">
+ <compile files="Orleans.java"/>
+ <run class="Orleans"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="call points within block inner classes are doubled"
+ keywords="from-resolved_10x">
+ <compile files="DoubledCalls.java"/>
+ <run class="DoubledCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Gets and sets with other advice"
+ keywords="from-resolved_10x">
+ <compile files="Counting3.java"/>
+ <run class="Counting3"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Compiler can compile correct strictfp modifiers"
+ keywords="from-resolved_10x">
+ <compile files="StrictFpCompile.java"/>
+ <run class="StrictFpCompile"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="basic test of callsto pointcuts"
+ keywords="from-resolved_10x">
+ <compile files="CallsTo.java"/>
+ <run class="CallsTo"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="package wildcards in packages"
+ keywords="from-resolved_10x">
+ <compile files="pack/PackageWildcards.java"/>
+ <run class="pack.PackageWildcards"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="around advice on calls and receptions with lots of context"
+ keywords="from-resolved_10x">
+ <compile files="AroundCalls.java"/>
+ <run class="AroundCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="208"
+ title="! modifier and char in pointcut (no longer an error)"
+ keywords="from-resolved_10x">
+ <compile files="NotCharInPointcut.java"/>
+ <run class="NotCharInPointcut"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="308"
+ title="right number of aspect instances per cflow"
+ keywords="from-resolved_10x">
+ <compile files="CFlowObjects.java"/>
+ <run class="CFlowObjects"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="310" title="many this's into around advice on calls"
+ keywords="from-resolved_10x">
+ <compile files="AroundCallsArgs.java"/>
+ <run class="AroundCallsArgs"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Ensures introduction methods can have advice placed on them"
+ keywords="from-resolved_10x">
+ <compile files="Dominates.java"/>
+ <run class="Dominates"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="355"
+ title="No boolean appearing in the 'if' clause for around advice with eachJVM()"
+ keywords="from-resolved_10x">
+ <compile files="PR355.java"/>
+ <run class="PR355"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Order of super introductions."
+ keywords="from-resolved_10x">
+ <compile files="OrderOfExtendsPlusAndImplementsPlus.java"/>
+ <run class="OrderOfExtendsPlusAndImplementsPlus"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Ensuring backdoor methods are produced."
+ keywords="from-resolved_10x">
+ <compile files="BackdoorMethods.java"/>
+ <run class="BackdoorMethods"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="no duplicate advice methods in abstract aspects"
+ keywords="from-resolved_10x">
+ <compile
+ files="GeneratingDuplicateNamedAdviceMethodsInAbstractAspects.java"/>
+ <run class="GeneratingDuplicateNamedAdviceMethodsInAbstractAspects"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="no duplicate advice methods in abstract aspects extended"
+ keywords="from-resolved_10x">
+ <compile
+ files="GeneratingDuplicateNamedAdviceMethodsInAbstractAspectsWithExtendedAspect.java"/>
+ <run class="GeneratingDuplicateNamedAdviceMethodsInAbstractAspectsWithExtendedAspect"
+ />
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Putting after-constructor advice on the wrong types implementing the same interface."
+ keywords="from-resolved_10x">
+ <compile files="AfterAdviceOnConstructorsOnTheWrongType.java"/>
+ <run class="AfterAdviceOnConstructorsOnTheWrongType"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Instantiating non-static inner classes in advice."
+ keywords="from-resolved_10x">
+ <compile files="NonstaticInnerClassesInAspects.java"/>
+ <run class="NonstaticInnerClassesInAspects"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="316" title="Referring to pointcut in of clauses"
+ keywords="from-resolved_10x">
+ <compile files="ReferringToPointcutsInAspect_PR316.java"/>
+ <run class="ReferringToPointcutsInAspect_PR316"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="191"
+ title="Confused referring to instance variables and locals"
+ keywords="from-resolved_10x">
+ <compile files="ScopesAndFields_PR191.java"/>
+ <run class="ScopesAndFields_PR191"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Parsing C+ expressions without parens in super introductions."
+ keywords="from-resolved_10x">
+ <compile files="ParsingSubtypesIntroductions.java"/>
+ <run class="ParsingSubtypesIntroductions"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Introducing methods on classes that implements inner-interfaces with +implements."
+ keywords="from-resolved_10x">
+ <compile files="IntroducingMethodsOnPlusImplementedInterfaces.java" options="-Xlint:ignore"/>
+ <run class="IntroducingMethodsOnPlusImplementedInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="464"
+ title="Methods with the same name are generated when abstract aspects extend another abstract aspect."
+ keywords="from-resolved_10x">
+ <compile
+ files="AbstractAspectsExtendingAbstractAspectsGeneratesMethodsWithTheSameName_PR464.java"/>
+ <run class="AbstractAspectsExtendingAbstractAspectsGeneratesMethodsWithTheSameName_PR464"
+ />
+ </ajc-test>
+
+ <ajc-test dir="new" title="Making sure final variables stay final."
+ keywords="from-resolved_10x">
+ <compile files="RemovingFinals.java"/>
+ <run class="RemovingFinals"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Problem resolving meta-joinpoint names with around advice on methods called from around advice."
+ keywords="from-resolved_10x">
+ <compile files="AroundAdviceOnMethodsCalledInAroundAdvice.java"/>
+ <run class="AroundAdviceOnMethodsCalledInAroundAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Make sure that names of lifted local classes are right when referenced in call-site advice"
+ keywords="from-resolved_10x">
+ <compile files="CallsAndLocalClasses.java"/>
+ <run class="CallsAndLocalClasses"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="matching for throws clause"
+ keywords="from-resolved_10x">
+ <compile files="ThrowsMatching.java"/>
+ <run class="ThrowsMatching"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="basic test of declare soft"
+ keywords="from-resolved_10x">
+ <compile files="DeclareSoft.java"/>
+ <run class="DeclareSoft"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="advice on calls to constructors of anonymous inners and access to context"
+ keywords="from-resolved_10x">
+ <compile files="NewAnonymous.java"/>
+ <run class="NewAnonymous"/>
+ </ajc-test>
+
+ <ajc-test dir="new/innerAspectAccess" pr="211"
+ title="inner aspects can't access outer pointcuts"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="implements and extends are introduced before methods and fields"
+ keywords="from-resolved_10x">
+ <compile files="IntroOrder.java"/>
+ <run class="IntroOrder"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="a static/inner aspect of a inner class of an aspect is pulled to the top level as static"
+ keywords="from-resolved_10x">
+ <compile files="StaticInnerAspect.java"/>
+ <run class="StaticInnerAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Crashes with privileged aspect."
+ keywords="from-resolved_10x">
+ <compile files="Privileged.java"/>
+ <run class="Privileged"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="join points exist in the execution of field initializers"
+ keywords="from-resolved_10x">
+ <compile files="FieldInitializerJoinPoints.java"/>
+ <run class="FieldInitializerJoinPoints"/>
+ </ajc-test>
+
+ <ajc-test dir="new/privilegedAspects" title="privileged aspects"
+ keywords="from-resolved_10x">
+ <compile
+ files="main/Main.java,fish/PrivateClass.java,fish/B.java,fowl/C.java,fowl/D.java"/>
+ <run class="main.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="advice on field gets in privileged aspects"
+ keywords="from-resolved_10x">
+ <compile files="AdviceOnPrivileged.java"/>
+ <run class="AdviceOnPrivileged"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Two anonymous classes in the same scope"
+ keywords="from-resolved_10x">
+ <compile files="TwoAnonymous.java"/>
+ <run class="TwoAnonymous"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="basic tests for initializer and staticinitializer PCDs"
+ keywords="from-resolved_10x">
+ <compile files="InitializerTest.java"/>
+ <run class="InitializerTest"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="98"
+ title="introduction of an initializer into a class"
+ keywords="from-resolved_10x">
+ <compile files="IntroductionOfInitializer.java"/>
+ <run class="IntroductionOfInitializer"/>
+ </ajc-test>
+
+ <ajc-test dir="new/access"
+ title="some method accessibility tests, particularly package-protected and inheritance"
+ keywords="from-resolved_10x">
+ <compile files="Test1.java,pc/C.java,psub/SubC.java,psub/A.java"/>
+ <run class="Test1"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="fairly monotonous (and non-covering) tests for expanded dot patterns"
+ keywords="from-resolved_10x">
+ <compile files="ExpandedDotDotPattern.java"/>
+ <run class="ExpandedDotDotPattern"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="field patterns and subtyping"
+ keywords="from-resolved_10x">
+ <compile files="FieldPatterns.java"/>
+ <run class="FieldPatterns"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Checking formal matching as in Roeder's bug in 0.7b10"
+ keywords="from-resolved_10x">
+ <compile files="FormalMatching.java"/>
+ <run class="FormalMatching"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Introducing synchronized methods on interfaces."
+ keywords="from-resolved_10x">
+ <compile files="SynchronizedMethodsOnInterfaces.java"/>
+ <run class="SynchronizedMethodsOnInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="The pointcut params (..,int..) is not recognizing (Object,int,Object)."
+ keywords="from-resolved_10x">
+ <compile files="Params.java"/>
+ <run class="Params"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="calls advice on array objects causes error in code generation"
+ keywords="from-resolved_10x">
+ <compile files="CallsToArray.java"/>
+ <run class="CallsToArray"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="join points in field initializers aren't showing up."
+ keywords="from-resolved_10x">
+ <compile files="NonexistentFieldInitializers.java"/>
+ <run class="NonexistentFieldInitializers"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="318" title="Handlers problem"
+ keywords="from-resolved_10x">
+ <compile files="PR318.java"/>
+ <run class="PR318"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="work nicely with inner class method look-up rules and call-site advice"
+ keywords="from-resolved_10x">
+ <compile files="InnerMethods.java"/>
+ <run class="InnerMethods"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="strictfp modifier allowed on advice"
+ keywords="from-resolved_10x">
+ <compile files="StrictFPAdvice.java"/>
+ <run class="StrictFPAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="415"
+ title="No argthis was being created for calls advice."
+ keywords="from-resolved_10x">
+ <compile files="PR415.java"/>
+ <run class="PR415"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Ensuring no advice with instanceof(..) is run on static methods."
+ keywords="from-resolved_10x">
+ <compile files="StaticMethodsShouldNotReceiveInstanceofAdvice.java"/>
+ <run class="StaticMethodsShouldNotReceiveInstanceofAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Null pointer on gets advice showing the case causing the error"
+ keywords="from-resolved_10x">
+ <compile files="NullPointerOnGetsSimple.java"/>
+ <run class="NullPointerOnGetsSimple"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="try to make sure that dynamic JoinPoint objects aren't generated when used inside of if (false) { ... }"
+ keywords="from-resolved_10x">
+ <compile files="IfdefsAndAdvice.java"/>
+ <run class="IfdefsAndAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="within and withincode (doesn't all work due to local class name issues)"
+ keywords="from-resolved_10x">
+ <compile files="WithinInners.java"/>
+ <run class="WithinInners"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="around advice on calls within inner classes (including protected method calls)"
+ keywords="from-resolved_10x">
+ <compile files="AroundInnerCalls13.java" options="-1.3"/>
+ <run class="AroundInnerCalls13"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="around advice on calls within inner classes (including protected method calls)"
+ keywords="from-resolved_10x">
+ <compile files="AroundInnerCalls.java" options="-1.4"/>
+ <run class="AroundInnerCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Arguments to runNext should be final when needed"
+ keywords="from-resolved_10x">
+ <compile files="Finals.java"/>
+ <run class="Finals"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Method introductions"
+ keywords="from-resolved_10x">
+ <compile files="MethodIntroductions.java"/>
+ <run class="MethodIntroductions"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Putting an introduced method on each interface"
+ keywords="from-resolved_10x">
+ <compile files="IntroducedMethodsOnEachInterface.java"/>
+ <run class="IntroducedMethodsOnEachInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Extending interfaces"
+ keywords="from-resolved_10x">
+ <compile files="BindingInterfaces.java"/>
+ <run class="BindingInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Introducing private methods on interfaces"
+ keywords="from-resolved_10x">
+ <compile files="IntroducingPrivateMethodsOnInterfaces.java"/>
+ <run class="IntroducingPrivateMethodsOnInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Issuing errors for assigning variables thisJoinPoint -- not assigning thisJoinPoint."
+ keywords="from-resolved_10x">
+ <compile files="ThisJoinPointAssignments.java"/>
+ <run class="ThisJoinPointAssignments"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Static references inside of introduced bodies get bound correctly."
+ keywords="from-resolved_10x">
+ <compile files="StaticIntroducedReferences.java"/>
+ <run class="StaticIntroducedReferences"/>
+ </ajc-test>
+
+ <ajc-test dir="new/cflowObjectCreations" pr="307"
+ title="cflow and object creations [of eachcflow]"
+ keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/twofiles"
+ title="Doesn't import MightHaveAspect when compiling with more than 1 file. [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="TheObject.java,TheAspect.java"/>
+ <run class="TheObject"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="436"
+ title="test binding to formals in calls to constructors (binding to null) (eachobject !!! now misnamed)"
+ keywords="from-resolved_10x">
+ <compile files="BindingThisInsteadOfFormal.java"/>
+ <run class="BindingThisInsteadOfFormal"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="After advice isn't being woven into after throwing advice"
+ keywords="from-resolved_10x">
+ <compile files="AfterThrowingNotWoven.java"/>
+ <run class="AfterThrowingNotWoven"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Throwing an EmptyStackException."
+ keywords="from-resolved_10x">
+ <compile files="EmptyStack.java"/>
+ <run class="EmptyStack"/>
+ </ajc-test>
+
+ <ajc-test dir="new/perThis"
+ title="check that MightHaveAspect interface is created correctly for an aspect in deep package"
+ keywords="from-resolved_10x">
+ <compile files="p/EachObjectTarget.java,the/deep/pkg/EachObjectInDeepPackage.java"/>
+ <run class="p.EachObjectTarget"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Defines clfow$ajc0 more once. [eachcflow]"
+ keywords="from-resolved_10x">
+ <compile files="Binkley.java"/>
+ <run class="Binkley"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Various calls, receptions, and callsto tests [callsto]"
+ keywords="from-resolved_10x">
+ <compile files="CallsReceptionsCallsto.java"/>
+ <run class="CallsReceptionsCallsto"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="320"
+ title="Was throwing exception, now just an error. [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="PR320.java"/>
+ <run class="PR320"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="different version of aspect inheritance, particularly empty pointcuts and abstract cflows [eachcflow]"
+ keywords="from-resolved_10x,fail-unimplemented">
+ <compile files="AspectInheritance.java"/>
+ <run class="AspectInheritance"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="339"
+ title="set advice on member initing throwing exception [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="PR339.java"/>
+ <run class="PR339"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="417"
+ title="Testing class names with same name's with difference case as package. [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="test/TraceAspect.java,test/Test.java"/>
+ <run class="test.Test"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Null pointer on gets advice with coverage [painful]"
+ keywords="from-resolved_10x">
+ <compile files="NullPointerOnGets.java"/>
+ <run class="NullPointerOnGets"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Basic test for cflow pointcuts [eachcflow]"
+ keywords="from-resolved_10x">
+ <compile files="CFlowPoints.java"/>
+ <run class="CFlowPoints"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Crashing when looking up the type of array members."
+ keywords="from-resolved_10x">
+ <compile files="ArrayCasts.java"/>
+ <run class="ArrayCasts"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="PostfixExprs to various synthetic things are fixed correctly [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="Fixes.java"/>
+ <run class="Fixes"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Dave Binkley's problem with eachcflowroot. [eachcflow]"
+ keywords="from-resolved_10x">
+ <compile files="Binkley2.java"/>
+ <run class="Binkley2"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="105" title="advice on an inherited method"
+ keywords="from-resolved_10x">
+ <compile files="AdviceOnInheritedMethod.java"/>
+ <run class="AdviceOnInheritedMethod"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="114"
+ title=", PR#115 checks the ordering of catch clauses"
+ keywords="from-resolved_10x">
+ <compile files="OrderOfCatches.java"/>
+ <run class="OrderOfCatches"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="various declared exception permutations"
+ keywords="from-resolved_10x">
+ <compile files="DeclaredExcs.java"/>
+ <run class="DeclaredExcs"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="ordering of advice kinds as well as cflow and dominates"
+ keywords="from-resolved_10x">
+ <compile files="AdviceOrdering.java"/>
+ <run class="AdviceOrdering"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="241"
+ title="advice on default constructor for a class only referenced via reflection"
+ keywords="from-resolved_10x">
+ <compile files="OddConstructors.java"/>
+ <run class="OddConstructors"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="289"
+ title="calling and called this params in calls points"
+ keywords="from-resolved_10x">
+ <compile files="CallsParams.java"/>
+ <run class="CallsParams"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="322"
+ title="primitive parameters coercable to Object just like return values are"
+ keywords="from-resolved_10x">
+ <compile files="ObjectForInt.java"/>
+ <run class="ObjectForInt"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="join points in static/dynamic initializers aren't showing up."
+ keywords="from-resolved_10x">
+ <compile files="NonexistentInitializers.java"/>
+ <run class="NonexistentInitializers"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Gets and sets on a number of variables (field access ???)"
+ keywords="from-resolved_10x">
+ <compile files="Gets.java"/>
+ <run class="Gets"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Joinpoints are showing up on intermediate call sites"
+ keywords="from-resolved_10x">
+ <compile files="Counting1.java"/>
+ <run class="Counting1"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Reception based on strictfp modifier"
+ keywords="from-resolved_10x">
+ <compile files="StrictFpReceptions.java"/>
+ <run class="StrictFpReceptions"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="353"
+ title="Subclasses that do not redefine a method are not being handled correctly"
+ keywords="from-resolved_10x">
+ <compile files="PR353b.java"/>
+ <run class="PR353b"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="making sure that super calls are bound to the right methods"
+ keywords="from-resolved_10x">
+ <compile files="SupersAndInterfaces.java"/>
+ <run class="SupersAndInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="317"
+ title="inheritance, around advice and abstract pointcuts [eachobject] (still)"
+ keywords="from-resolved_10x">
+ <compile files="OverridingPointcuts.java"/>
+ <run class="OverridingPointcuts"/>
+ </ajc-test>
+
+ <ajc-test dir="new/foemmel"
+ title="Priviledged aspect methods are missing for privates. [eachobject]"
+ keywords="from-resolved_10x">
+ <compile files="TheAspect.java,TheObject.java">
+ </compile>
+ <run class="TheObject"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="exceptions thrown and caught in advice, particularly try+proceed"
+ keywords="from-resolved_10x">
+ <compile files="TryAndProceed.java"/>
+ <run class="TryAndProceed"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Not and And operators in pointcuts not working"
+ keywords="from-resolved_10x">
+ <compile files="NotAndPointcut.java"/>
+ <run class="NotAndPointcut"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Member initializers should run before the current class constructor"
+ keywords="from-resolved_10x">
+ <compile files="MemberInitializationsAfterExplicitConstructorCalls.java"/>
+ <run class="MemberInitializationsAfterExplicitConstructorCalls"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Coverage tests for Member initializers should run before the current class constructor and after super"
+ keywords="from-resolved_10x">
+ <compile
+ files="MemberInitializationsAfterExplicitConstructorCallsCoverage.java"/>
+ <run class="MemberInitializationsAfterExplicitConstructorCallsCoverage"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="thisJoinPoint{Static} not visible in if() pcd of named pointcut"
+ keywords="from-resolved_10x">
+ <compile files="IfPCDExprJoinPointVisibleCE.java"/>
+ <run class="IfPCDExprJoinPointVisibleCE"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="pcd if() expression visibility at compile-time (minimal operation)"
+ keywords="from-resolved_10x">
+ <compile files="IfPCDExprVisibility.java" options="-Xlint:ignore"/>
+ <run class="IfPCDExprVisibility"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="pcd if() NPE in compiler when unwinding assignment in pcd if(expr)"
+ keywords="from-resolved_10x">
+ <compile files="IfPCDExprAssignUnparseFailure.java"/>
+ <run class="IfPCDExprAssignUnparseFailure"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="pcd if() dup methods produced when pointcut after advice etc (javac)"
+ keywords="from-resolved_10x">
+ <compile files="IfPCDDupMethod.java"/>
+ <run class="IfPCDDupMethod"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="pcd if() variants: [anonymous, named] x [execution, call, callTyped, get, set, initializations] x [before, after, around]"
+ keywords="from-resolved_10x">
+ <compile files="IfPCDAdviceMethods.java"/>
+ <run class="IfPCDAdviceMethods"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="476" title="initialization order with this"
+ keywords="from-resolved_10x">
+ <compile files="InitializationOrder.java"/>
+ <run class="InitializationOrder"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="496"
+ title="!within and !this handling for callee-side call points"
+ keywords="from-resolved_10x">
+ <compile files="NotThis.java"/>
+ <run class="NotThis"/>
+ </ajc-test>
+
+ <ajc-test dir="new/innerInterfaces" pr="494"
+ title="private inner interfaces and bytecode visibility"
+ keywords="from-resolved_10x">
+ <compile files="p/Driver.java,p/InnerTest.java,other/Test.java"/>
+ <run class="p.Driver"/>
+ </ajc-test>
+
+ <!-- This has a complicated set of expected join points.
+ This test should be borken up into more manageable chunks
+ and more carefully analyzed for correctness in the future.
+ -->
+ <ajc-test dir="new" pr="490"
+ title="elaborated into testing of around on all join points"
+ keywords="from-resolved_10x">
+ <compile files="AroundAll.java"/>
+ <run class="AroundAll"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="type name hygiene when code comes from aspects in different packages"
+ keywords="from-resolved_10x">
+ <compile
+ files="typeNameConflicts/Driver.java,typeNameConflicts/p1/C.java,typeNameConflicts/aspects/A.java"/>
+ <run class="typeNameConflicts.Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="cflowbelow dependencies (from Chris Dutchyn)"
+ keywords="from-resolved_10x">
+ <compile files="CflowBelowTest.java"/>
+ <run class="CflowBelowTest"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="493"
+ title="Compiler incorrectly flagging *1 (non-alphabetic start to signature pattern)"
+ keywords="from-resolved_10x">
+ <compile files="NonAlphaSignaturePatternCE.java"/>
+ <run class="NonAlphaSignaturePatternCE"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Unable to bind privately-introduced field name from introduced method in the same aspect"
+ keywords="from-resolved_10x">
+ <compile files="IntroducedFieldsNotBinding.java"/>
+ <run class="IntroducedFieldsNotBinding"/>
+ </ajc-test>
+
+ <ajc-test dir="new/anonInnerClass" pr="297"
+ title="anonymous inner class with aspect" keywords="from-resolved_10x">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="335"
+ title="Arguments are not being passed in to calls advice"
+ keywords="from-resolved_10x">
+ <compile files="PR335.java"/>
+ <run class="PR335"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro" title="interfaces as mixins with introduction"
+ keywords="from-resolved_10x">
+ <compile files="Interfaces.java"/>
+ <run class="Interfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="functional modifiers work correctly with introduced members"
+ keywords="from-resolved_10x">
+ <compile files="IntroducedModifiers.java"/>
+ <run class="IntroducedModifiers"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="ExceptionInInitializerError accessing cflow in aspect initialization - before variants"
+ keywords="from-resolved_10x">
+ <compile files="CflowInitInAspectVariantsBefore.java"/>
+ <run class="CflowInitInAspectVariantsBefore"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="NoClassDefFoundError accessing cflow in aspect initialization - after variants"
+ keywords="from-resolved_10x">
+ <compile files="CflowInitInAspectVariantsAfter.java"/>
+ <run class="CflowInitInAspectVariantsAfter"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="InternalCompilerError in JpPlan when args alone"
+ keywords="from-resolved_10x">
+ <compile files="ArgsAlone.java"/>
+ <run class="ArgsAlone"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="527"
+ title="compile error using pcd if() with advice on introduced methods."
+ keywords="from-resolved_10x">
+ <compile files="PR527.java"/>
+ <run class="PR527"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="528"
+ title="compile errors boolean using cflow and unimplemented method using around advice on methods introduced by interface"
+ keywords="from-resolved_10x">
+ <compile files="PR528.java"/>
+ <run class="PR528"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="534" title="aspect as member of interface"
+ keywords="from-resolved_10x">
+ <compile files="AspectInInterfaceCP.java"/>
+ <run class="AspectInInterfaceCP"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="535"
+ title="missing method name to synthetic invocation"
+ keywords="from-resolved_10x,new-messages-vary">
+ <compile files="PR535.java"/>
+ <run class="PR535"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="536"
+ title="protected subclass impl of superclass method with default access and variants"
+ keywords="from-resolved_10x">
+ <compile files="RestrictingVisibilityCP.java"/>
+ <run class="RestrictingVisibilityCP"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="519" title="Exception planning advice"
+ keywords="from-resolved_10x">
+ <compile files="PR519.java" options="-Xlint:ignore"/>
+ <run class="PR519"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="521"
+ title="unreproduced bug with advice - probably UTR"
+ keywords="from-resolved_10x">
+ <compile files="PR520.java"/>
+ <run class="PR520"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="494"
+ title="introduced inner interfaces accessible inside aspect"
+ keywords="from-resolved_10x">
+ <compile files="IntroduceInnerInterfaceCP.java"/>
+ <run class="IntroduceInnerInterfaceCP"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="525"
+ title="validate (enclosing) join point and source locations"
+ keywords="from-resolved_10x">
+ <compile files="NegativeSourceLocation.java" options="-Xlint:ignore"/>
+ <run class="NegativeSourceLocation"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="544"
+ title="advice formals are just like method formals"
+ keywords="from-resolved_10x">
+ <compile files="AdviceFormalsCp.java"/>
+ <run class="AdviceFormalsCp"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="544"
+ title="advice formals produce errors just like method formals"
+ keywords="from-resolved_10x">
+ <compile files="AdviceFormalsCf.java">
+ <message kind="error" line="28"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="36"/>
+ <message kind="error" line="37"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="advice throws clauses must be compatible with joinpoints they apply to"
+ keywords="from-resolved_10x">
+ <compile files="AdviceThrowsCp.java"/>
+ <run class="AdviceThrowsCp"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="570"
+ title="potential method conflicts with introductions and interfaces and PR#561"
+ keywords="from-resolved_10x">
+ <compile files="MethodConflictsCP.java"/>
+ <run class="MethodConflictsCP"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="570"
+ title="illegal method conflicts with introductions and interfaces and PR#561"
+ keywords="from-resolved_10x">
+ <compile files="MethodConflictsCF.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="28"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" title="AspectOf available for different aspect types"
+ keywords="from-resolved_10x">
+ <compile files="AspectOf.java"/>
+ <run class="AspectOf"/>
+ </ajc-test>
+
+ <ajc-test dir="new/privilegedAspects" pr="35593"
+ title="access to all members of class and inner class from privileged aspect"
+ keywords="from-resolved_10x">
+ <compile
+ files="driver/PrivilegedAspect.java,util/Util.java,pack/DefaultTarget.java,pack/PublicTarget.java"/>
+ <run class="driver.PrivilegedAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="cflow alone with around produces compiler bcg StackOverflowError"
+ keywords="from-resolved_10x">
+ <compile files="CflowAlone.java"/>
+ <run class="CflowAlone"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="get/set join points run for complex assignment operators (+=, etc.) (working)"
+ keywords="from-resolved_10x">
+ <compile files="AssignOps.java"/>
+ <run class="AssignOps"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="this available in introduced field initializers"
+ keywords="from-resolved_10x">
+ <compile files="ThisInIntroFieldInit.java"/>
+ <run class="ThisInIntroFieldInit"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="Introduced type unavailable to cast expressions in introduced methods"
+ keywords="from-resolved_10x">
+ <compile files="Cast.java,TargetClass.java,Util.java"/>
+ <run class="Cast"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="Introduced type unavailable to qualified new expressions in introduced methods"
+ keywords="from-resolved_10x">
+ <compile files="Inner.java,TargetClass.java,Util.java"/>
+ <run class="Inner"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="Introduced type unavailable to cast expressions in introduced field initializers"
+ keywords="from-resolved_10x">
+ <compile files="CastInFieldInit.java,TargetClass.java,Util.java"/>
+ <run class="CastInFieldInit"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="Aspect type unavailable to qualified new expressions in body of introduced methods"
+ keywords="from-resolved_10x">
+ <compile files="AspectInIntroducedMethod.java"/>
+ <run class="AspectInIntroducedMethod"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new/introTypeMissing"
+ title="Introduced type unavailable to qualified new expressions in introduced field initializers"
+ keywords="from-resolved_10x">
+ <compile files="InnerInFieldInit.java,TargetClass.java,Util.java"/>
+ <run class="InnerInFieldInit"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="595"
+ title="variable slots and finally/catch causing verify errors"
+ keywords="from-resolved_10final,from-resolved_10x">
+ <compile files="AfterFinally.java"/>
+ <run class="AfterFinally"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="590"
+ title="after advice on static method with pcd if() using result"
+ keywords="from-resolved_10x">
+ <compile files="PR590.java">
+ <message kind="error" line="20"/>
+ <message kind="error" line="23"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="590"
+ title="after advice on static method with pcd if() using result through pointcut"
+ keywords="from-resolved_10x">
+ <compile files="PR590a.java" options="-Xlint:ignore">
+ <message kind="error" line="29"/>
+ <message kind="error" line="31"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/PR600" pr="600"
+ title="AbstractMethodError for introduced methods (order 1)"
+ keywords="from-resolved_10x">
+ <compile files="Main.java,My_error.java,A.java,B.java,C.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR600" pr="600"
+ title="AbstractMethodError for introduced methods (order 2)"
+ keywords="from-resolved_10x">
+ <compile files="Main.java,My_error.java,C.java,A.java,B.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR600" pr="600"
+ title="AbstractMethodError for introduced methods (order 3)"
+ keywords="from-resolved_10x">
+ <compile files="My_error.java,A.java,B.java,C.java,Main.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR600" pr="600"
+ title="AbstractMethodError for introduced methods (order 4)"
+ keywords="from-resolved_10x">
+ <compile files="A.java,B.java,C.java,Main.java,My_error.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR600" pr="600"
+ title="AbstractMethodError for introduced methods (order 5)"
+ keywords="from-resolved_10x">
+ <compile files="A.java,B.java,Main.java,C.java,My_error.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="declare error and abstract pointcuts"
+ keywords="from-resolved_10x">
+ <compile files="AbstractDeclare.java">
+ <message kind="error" line="3"/>
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/runtime"
+ title="Exercise runtime classes (optionally in 1.1 VM)"
+ keywords="from-resolved_10x">
+ <compile files="AllRuntime.java,TesterDriver.java"/>
+ <run class="TesterDriver"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="VerifyError after around advice falls off end of tryCatch"
+ keywords="from-resolved_10x">
+ <compile files="TryOffEnd.java">
+ <message kind="warning" line="13"/>
+ <message kind="warning" line="21"/>
+ </compile>
+ <run class="TryOffEnd"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="635" title="Named within pointcuts failing"
+ keywords="from-resolved_10x">
+ <compile files="NamedWithinPointcuts.java"/>
+ <run class="NamedWithinPointcuts"/>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="aspect with private abstract pointcut"
+ keywords="from-resolved_10x,fail-unimplemented">
+ <compile files="PrivatePointcutCE.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="concrete aspect unable to access abstract package-private pointcut in parent for overriding"
+ keywords="from-resolved_10x"
+ comment="XXX getting error - confirm line numbers">
+ <compile files="parent/ParentCE.java,child/ChildCE.java">
+ <message kind="error" file="child/ChildCE.java" line="21"/>
+ <message kind="error" file="child/ChildCE.java" line="31"/>
+ <message kind="error" file="parent/ParentCE.java" line="8"/>
+ <message kind="error" file="parent/ParentCE.java" line="10"/>
+ <message kind="error" file="parent/ParentCE.java" line="12"/>
+ <message kind="error" file="parent/ParentCE.java" line="22"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="inner, outer, and outside-package subaspects of an aspect with abstract protected-, public-, and default-access pointcuts"
+ keywords="from-resolved_10x">
+ <compile
+ files="parent/SubAspectVisibility.java,parent/ForeignChildHelper.java,child/ForeignChildAspect.java"/>
+ <run class="parent.SubAspectVisibility"/>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="inner subaspects of an aspect with private pointcut"
+ keywords="from-resolved_10x">
+ <compile files="parent/PrivatePointcut.java"/>
+ <run class="parent.PrivatePointcut"/>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="outer subaspects of an aspect with private pointcut"
+ keywords="from-resolved_10x">
+ <compile files="parent/PrivatePointcutOuterClass.java"/>
+ <run class="parent.PrivatePointcutOuterClass"/>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="abstract aspect used statically should not cause instantiation of advice or pointcut"
+ keywords="from-resolved_10x">
+ <compile files="AbstractAspectUsedStatically.java"/>
+ <run class="AbstractAspectUsedStatically"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="private inner interface accessible in scope when declared on outer class"
+ keywords="from-resolved_10x">
+ <compile files="DeclareAccess.java"/>
+ <run class="DeclareAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="accessing protected superclass members in and outside CCC from body of method introduction"
+ keywords="from-resolved_10x">
+ <compile files="SuperInIntroduction.java"/>
+ <run class="SuperInIntroduction"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="accessing private superclass members from body of method introduction"
+ keywords="from-resolved_10x">
+ <compile files="SuperInIntroductionCE.java">
+ <message kind="error" line="25"/>
+ <message kind="error" line="26"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" title="simple test for around and casting"
+ keywords="from-resolved_10x">
+ <compile files="AroundCasting.java"/>
+ <run class="AroundCasting"/>
+ </ajc-test>
+
+ <ajc-test dir="new/aroundinner" pr="620"
+ title="aroundInner 1 - around advice inner Thread subclass running proceed but not writing field"
+ keywords="from-resolved_10x">
+ <compile files="ThreadNoField.java,Common.java"/>
+ <run class="ThreadNoField"/>
+ </ajc-test>
+
+ <ajc-test dir="new/aroundinner" pr="620"
+ title="aroundInner 2 - around advice inner Runnable running proceed and writing method-final proxy"
+ keywords="from-resolved_10x">
+ <compile files="Proxy.java,Common.java"/>
+ <run class="Proxy"/>
+ </ajc-test>
+
+ <ajc-test dir="new/aroundinner" pr="620"
+ title="aroundInner 3 - around advice inner class running proceed and writing field"
+ keywords="from-resolved_10x">
+ <compile files="Minimal.java,Common.java"/>
+ <run class="Minimal"/>
+ </ajc-test>
+
+ <ajc-test dir="new/aroundinner" pr="620"
+ title="aroundInner 4 - around advice inner Thread subclass running proceed and writing field"
+ keywords="from-resolved_10x">
+ <compile files="ThreadSub.java,Common.java"/>
+ <run class="ThreadSub"/>
+ </ajc-test>
+
+ <ajc-test dir="new/aroundinner" pr="620"
+ title="aroundInner 5 - around advice inner Runnable (subinterface) running proceed and writing field introduced on subinterface"
+ keywords="from-resolved_10x">
+ <compile files="RunnableSub.java,Common.java"/>
+ <run class="RunnableSub"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="636"
+ title="Named local class closing over proceed invocation"
+ keywords="from-resolved_10x">
+ <compile files="LocalClassClosingOverProceed.java"/>
+ <run class="LocalClassClosingOverProceed"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="beautiful recursive computation of factorial with around is now supported"
+ keywords="from-resolved_10x">
+ <compile files="CircularAdvice.java"/>
+ <run class="CircularAdvice"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="632"
+ title="multi-dispatch not used for named pcd references"
+ keywords="from-resolved_10x">
+ <compile files="MultiDispatchCf.java">
+ <message kind="error" line="54"/>
+ <message kind="error" line="57"/>
+ <message kind="error" line="60"/>
+ <message kind="error" line="71"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="632"
+ title="multi-dispatch implemented through around + args"
+ keywords="from-resolved_10x">
+ <compile files="MultiDispatchCp.java"/>
+ <run class="MultiDispatchCp"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="unrecognized aspect should not net Cloneable and Serializable warnings"
+ keywords="from-resolved_10x">
+ <compile files="UnrecognizedAspectCE.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="unreachable code generated by around advice on the execution of void methods"
+ keywords="from-resolved_10x">
+ <compile files="AroundVoid.java"/>
+ <run class="AroundVoid"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="654"
+ title="Overriding method implementations using introduction on interfaces"
+ keywords="from-resolved_10x,fail-unimplemented">
+ <compile files="IntroductionsOverriding.java" options="-Xlint:ignore" />
+ <run class="IntroductionsOverriding"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="654"
+ title="more coverage for around and concrete methods on interfaces"
+ keywords="from-resolved_10x">
+ <compile files="MultiAndAround.java" options="-Xlint:ignore"/>
+ <run class="MultiAndAround"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="invalid number and type of proceed arguments"
+ keywords="from-resolved_10x">
+ <compile files="InvalidProceedArgsCE.java">
+ <message kind="error" line="10"/>
+ <message kind="error" line="15"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="22"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="31"/>
+ <message kind="error" line="37"/>
+ <message kind="error" line="39"/>
+ <message kind="error" line="43"/>
+ <message kind="error" line="46"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="694" title="after returning advice order"
+ keywords="from-resolved_10x">
+ <compile files="Cricket.java"/>
+ <run class="Cricket"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="694" title="after returning advice param"
+ keywords="from-resolved_10x">
+ <compile files="AfterReturningParam.java"/>
+ <run class="AfterReturningParam"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="695"
+ title="! and declaring types with callee-side call join points"
+ keywords="from-resolved_10x">
+ <compile files="NotAndDeclaringTypes.java" options="-Xlint:ignore"/>
+ <run class="NotAndDeclaringTypes"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="479"
+ title=". Binding the wrong arguments in withincode(..)."
+ keywords="from-resolved_10x">
+ <compile files="BindingArgumentsInWithincode.java"/>
+ <run class="BindingArgumentsInWithincode"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="479"
+ title=". Matching arguments in cflow correctly."
+ keywords="from-resolved_10x">
+ <compile files="MatchingArgumentsInCflow.java"/>
+ <run class="MatchingArgumentsInCflow"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="480"
+ title=". Binding variables with numbers in their name with pertarget(..)'s."
+ keywords="from-resolved_10x">
+ <compile files="PerTargetAndVariablesWithNumbersInTheirNames.java"/>
+ <run class="PerTargetAndVariablesWithNumbersInTheirNames"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="554"
+ title="second arg in formal on shared joinpoint with pcd if() causes verify error ??"
+ keywords="from-resolved_10rc3">
+ <compile files="PR554.java"/>
+ <run class="PR554"/>
+ </ajc-test>
+
+ <ajc-test dir="new/privilegedAspects" pr="555"
+ title="access to private members from privileged aspect"
+ keywords="from-resolved_10rc3">
+ <compile
+ files="driver/PR555.java,util/Util.java,pack/DefaultTarget.java"/>
+ <run class="driver.PR555"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="555"
+ title="inner classes of privileged aspects cannot see target class private members"
+ keywords="from-resolved_10rc3">
+ <compile files="InnerClassInPrivilegedAspect.java"/>
+ <run class="InnerClassInPrivilegedAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new/packageAccessPR556" pr="556"
+ title="aspects should get package access outside the file"
+ keywords="from-resolved_10rc3">
+ <compile files="base1/p/C1.java,base2/p/C2.java"/>
+ <run class="p.C1"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="559"
+ title="subclass advice not run for join points selected by superclass cflow-based pointcuts"
+ keywords="from-resolved_10rc3">
+ <compile files="PR559.java"/>
+ <run class="PR559"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="559"
+ title="more issues with abstract aspects and cflow pointcuts"
+ keywords="from-resolved_10rc3,fail-unimplemented">
+ <compile files="AbstractCflows.java"/>
+ <run class="AbstractCflows"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="560"
+ title="compile fails for aspect derived from percflow base aspect unless pointcut excludes base aspect and subaspects"
+ keywords="from-resolved_10rc3">
+ <compile files="PR560.java"/>
+ <run class="PR560"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="573"
+ title="pertarget stack overflow getting name of anonymous (Interface) class"
+ keywords="from-resolved_10rc3">
+ <compile files="PR573.java"/>
+ <run class="PR573"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="573"
+ title="pertarget stack overflow getting name of anonymous (Object) class"
+ keywords="from-resolved_10rc3">
+ <compile files="PR573_1.java"/>
+ <run class="PR573_1"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="573"
+ title="pertarget runtime stack overflow (getting name of anonymous (Object) class?)"
+ keywords="from-resolved_10rc3">
+ <compile files="PR573_2.java"/>
+ <run class="PR573_2"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="685"
+ title="subaspect method declaration on superaspect inner interface (names)"
+ keywords="from-resolved_104">
+ <compile files="InnerInterfaceNames.java"/>
+ <run class="InnerInterfaceNames"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="685"
+ title="subaspect method declaration on superaspect inner interface (access)"
+ keywords="from-resolved_104">
+ <compile files="InnerInterfaceAccess.java"/>
+ <run class="InnerInterfaceAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="685"
+ title="subaspect method declaration on superaspect inner interface (types)"
+ keywords="from-resolved_104">
+ <compile files="InnerInterfaceTypes.java,InnerInterfaceTypesHelper.java"/>
+ <run class="InnerInterfaceTypes"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="691" title="around AST type XXX"
+ keywords="from-resolved_104">
+ <compile files="PR691.java"/>
+ <run class="PR691"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="687"
+ title="around all execution with double assignment in initializer (simple)"
+ keywords="from-resolved_104">
+ <compile files="AroundDoubleAssignment.java"/>
+ <run class="AroundDoubleAssignment"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="687"
+ title="around all execution with double assignment in initializer (coverage)"
+ keywords="from-resolved_104">
+ <compile files="AroundDoubleAssignmentC.java"/>
+ <run class="AroundDoubleAssignmentC"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="changing this in around's proceed reported by Rich Price"
+ keywords="from-resolved_104">
+ <compile files="AroundChangeThis.java" options="-1.4"/>
+ <run class="AroundChangeThis"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="548"
+ title="default package for aspect introductions is not the current package"
+ keywords="from-resolved_10rc3,from-resolved_104">
+ <compile
+ files="introductionPackage/two/C.java,introductionPackage/one/C.java,introductionPackage/one/Aspect.java,introductionPackage/one/TestAspect.java"/>
+ <run class="one.TestAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR569" pr="569"
+ title="anon class written to wrong directory"
+ keywords="from-resolved_104,from-resolved_104">
+ <compile files="a/IntroAnon.java,a/MyInterface.java,b/Dest.java"/>
+ <run class="a.IntroAnon"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="603"
+ title="unqualified transitive pointcut references not resolved"
+ keywords="from-resolved_104">
+ <compile files="PointcutQualification.java"/>
+ <run class="PointcutQualification"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="603"
+ title="unqualified transitive pointcut references not resolved - 2"
+ keywords="from-resolved_104">
+ <compile files="PointcutQualification2.java"/>
+ <run class="PointcutQualification2"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="619"
+ title="direct use outside aspect of defined abstract pointcut"
+ keywords="from-resolved_104">
+ <compile files="AbstractPointcutAccess.java"/>
+ <run class="AbstractPointcutAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="619"
+ title="direct use outside aspect of undefined abstract pointcut"
+ keywords="from-resolved_104">
+ <compile files="AbstractPointcutAccessCE.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="619"
+ title="indirect use outside aspect of undefined abstract pointcut"
+ keywords="from-resolved_104">
+ <compile files="AbstractPointcutIndirectCE.java">
+ <message kind="error" line="9"/>
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="658"
+ title="simple call join point tests for JoinPoint SourceLocation context"
+ keywords="from-resolved_104">
+ <compile files="SourceLocationCall.java"/>
+ <run class="SourceLocationCall"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="661"
+ title="!target with second advice on casted call"
+ keywords="from-resolved_104">
+ <compile files="CallNotTarget.java"/>
+ <run class="CallNotTarget"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="666" title="name binding in around cflow"
+ keywords="from-resolved_104">
+ <compile files="AroundCall.java"/>
+ <run class="AroundCall"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="660" title="name binding in around cflow - 2"
+ keywords="from-resolved_104">
+ <compile files="ArgsInCflow2.java"/>
+ <run class="ArgsInCflow2"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="677"
+ title="around name-binding in cflows using factorial"
+ keywords="from-resolved_104">
+ <compile files="FactorialCflow.java"/>
+ <run class="FactorialCflow"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="replacing this or target in around advice"
+ keywords="from-resolved_104">
+ <compile files="TargetObjectReplacement.java"/>
+ <run class="TargetObjectReplacement"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="after returning from initialization and after executing constructor"
+ keywords="from-resolved_104">
+ <compile files="ConstructorExecInit.java"/>
+ <run class="ConstructorExecInit"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="after returning from initialization causes ExceptionInInitializer in aspect">
+ <compile files="ConstructorExecInitFails.java"/>
+ <run class="ConstructorExecInitFails"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="659"
+ title="name binding in before cflow containing cflowbelow"
+ keywords="from-resolved_104">
+ <compile files="ArgsInCflow.java" options="!eclipse">
+ <message kind="error" line="29"/>
+ <message kind="error" line="32"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="new/pr728" pr="728" title="file order in type searching"
+ keywords="from-resolved_105">
+ <compile files="AnotherClass.java,Interface.java"/>
+ <run class="AnotherClass"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" title="simple declare warning (NPE)"
+ keywords="from-resolved_105">
+ <compile files="DeclareWarningMain.java">
+ <message kind="warning" line="5"/>
+ </compile>
+ <run class="DeclareWarningMain"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="755"
+ title="ajc dies on cflow into field init anon class see knownbugs.txt"
+ keywords="from-resolved_105">
+ <compile files="CflowOfFieldInitAnonMethods.java" options="!eclipse">
+ </compile>
+ <run class="CflowOfFieldInitAnonMethods" options="!eclipse"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="757" title="Incrementing interface-introduced field"
+ keywords="from-resolved_105">
+ <compile files="IntroducedFieldInc.java"/>
+ <run class="IntroducedFieldInc"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="The dynamic type, not the static one, should be used in if pcds"
+ keywords="from-resolved_105">
+ <compile files="StaticTypeInIf.java"/>
+ <run class="StaticTypeInIf"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="bad interaction with after returning, around and void methods (from Rich Price)"
+ keywords="from-resolved_105">
+ <compile files="AfterReturningResult.java"/>
+ <run class="AfterReturningResult"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="type pattern matching for inner classes (from Ken Horn)"
+ keywords="from-resolved_105">
+ <compile files="TypePat.java"/>
+ <run class="test.TypePat"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="771" title="static initializer member name"
+ keywords="from-resolved_105">
+ <compile files="StaticInitName.java"/>
+ <run class="StaticInitName"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="770" title="cflow pcd syntax error"
+ keywords="from-resolved_105">
+ <compile files="IllegalCflowCE.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="764"
+ title="binding args with indeterminate prefix and suffix"
+ keywords="from-resolved_105">
+ <compile files="IndeterminateArgs.java"/>
+ <run class="IndeterminateArgs"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="764"
+ title="check arg types with indeterminate prefix and suffix"
+ keywords="from-resolved_105">
+ <compile files="IndeterminateArgType.java"/>
+ <run class="IndeterminateArgType"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="764"
+ title="testing and binding args with single indeterminate prefix and suffix"
+ keywords="from-resolved_105">
+ <compile files="IndeterminateArg.java"/>
+ <run class="IndeterminateArg"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="764"
+ title="binding handler args with indeterminate prefix and suffix"
+ keywords="from-resolved_105">
+ <compile files="IndeterminateHandlerArg.java"/>
+ <run class="IndeterminateHandlerArg"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new/nolang" pr="762"
+ title="Compiling java.lang.Object with ajc yields non-verifying bytecode"
+ keywords="from-resolved_105"
+ comment="XXX weak/bad test">
+ <compile files="java/lang/Object.java,java/lang/String.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="method-local class defined in around return statement"
+ keywords="from-resolved_105">
+ <compile files="MethodLocalAroundReturns.java"/>
+ <run class="MethodLocalAroundReturns"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="CE expected for assignment to arg in if pcd"
+ keywords="from-resolved_105">
+ <compile files="IfPCDAssignmentCE.java">
+ <message kind="error" line="16"/>
+ <message kind="error" line="20"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" title="advising field get/sets when accessing via super"
+ keywords="from-resolved_105">
+ <compile files="SuperField.java"/>
+ <run class="SuperField"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="accessing private members in outer types"
+ keywords="from-resolved_105">
+ <compile files="FieldInnerAccess.java"/>
+ <run class="FieldInnerAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="29934"
+ title="can't apply around advice to the execution of around advice"
+ keywords="from-resolved_10x">
+ <compile files="CflowCycles.java"/>
+ <run class="CflowCycles"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="incompatible advice throws clause are a compile-time error"
+ keywords="from-resolved_10x">
+ <compile files="AdviceThrowsCf.java">
+ <message kind="error" line="13"/>
+ <message kind="error" line="28"/>
+ <message kind="error" line="47"/>
+ <message kind="error" line="48"/>
+ <message kind="error" line="50"/>
+
+ <message kind="error" line="70"/>
+ <message kind="error" line="74"/>
+ <message kind="error" line="76"/>
+ <message kind="error" line="78"/>
+
+ <message kind="error" line="85"/>
+ </compile>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml b/tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml
new file mode 100644
index 000000000..90198331d
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/ajc10x/ajc10x-tests.xml">
+]>
+
+<!-- AspectJ v1.0.x Tests -->
+
+<suite>
+&tests;
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc11/Ajc11Tests.java b/tests/src/org/aspectj/systemtest/ajc11/Ajc11Tests.java
new file mode 100644
index 000000000..e594d3dc5
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc11/Ajc11Tests.java
@@ -0,0 +1,480 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.ajc11;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class Ajc11Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc11Tests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/ajc11/ajc11.xml");
+ }
+
+
+ public void test001(){
+ runTest("declare interface extends class");
+ }
+
+ public void test002(){
+ runTest("declare interface implements class");
+ }
+
+ public void test003(){
+ runTest("declaring a private method on an inner interface");
+ }
+
+ public void test004(){
+ runTest("CE expected when declaring fields on arrays");
+ }
+
+ public void test005(){
+ runTest("signature of handler join point");
+ }
+
+ public void test006(){
+ runTest("source locations within expressions");
+ }
+
+ public void test007(){
+ runTest("crashes given method in declared method");
+ }
+
+ public void test008(){
+ runTest("after returning advice on interface constructor");
+ }
+
+ public void test009(){
+ runTest("after returning advice on interface constructor - error");
+ }
+
+ public void test010(){
+ runTest("after advice on static call join point");
+ }
+
+ public void test011(){
+ runTest("incompatible class change error");
+ }
+
+ public void test012(){
+ runTest("simple cflow of method execution");
+ }
+
+ public void test013(){
+ runTest("using instance as class reference to constant field");
+ }
+
+ public void test014(){
+ runTest("interface self-reference in anonymous instance");
+ }
+
+ public void test015(){
+ runTest("self-reference from (aspect-declared) method-local class");
+ }
+
+ public void test016(){
+ runTest("expect CE for unterminated declare error");
+ }
+
+ public void test017(){
+ runTest("expect CE for declaration collision between subaspects instead of domination order");
+ }
+
+ public void test018(){
+ runTest("subtype pattern in dominates should pick out aspect subtypes");
+ }
+
+ public void test019(){
+ runTest("subtype pattern in dominates will conflict with type pattern");
+ }
+
+ public void test020(){
+ runTest("after returning advice on interface and implementation constructor");
+ }
+
+ public void test021(){
+ runTest("after throwing advice with non-throwable formal");
+ }
+
+ public void test022(){
+ runTest("declare array field using postfix");
+ }
+
+ public void test023(){
+ runTest("prohibit declaring new aspect constructor with arguments");
+ }
+
+ public void test024(){
+ runTest("prohibit declaring only aspect constructor with arguments");
+ }
+
+ public void test025(){
+ runTest("declare class extends interface");
+ }
+
+ public void test026(){
+ runTest("declare class implements class");
+ }
+
+ public void test027(){
+ runTest("declare interface implements interface");
+ }
+
+ public void test028(){
+ runTest("if and cflow arg binding");
+ }
+
+ public void test029(){
+ runTest("circularity in declare dominates");
+ }
+
+ public void test030(){
+ runTest("percflow code hangs compiler");
+ }
+
+ public void test031(){
+ runTest("Verification error tracing constructor that takes arguments");
+ }
+
+ public void test032(){
+ runTest("declared exceptions in inter-type decls");
+ }
+
+ public void test033(){
+ runTest("Verify error on non-Throwable in declare soft");
+ }
+
+ public void test034(){
+ runTest("inter-type fields with array types");
+ }
+
+ public void test035(){
+ runTest("checking around join point for advice return type - numeric");
+ }
+
+ public void test036(){
+ runTest("void around advice without proceed");
+ }
+
+ public void test037(){
+ runTest("declaring method on superclass and subclass");
+ }
+
+ public void test038(){
+ runTest("introducing final fields (simple)");
+ }
+
+ public void test039(){
+ runTest("introducing final fields and using as constants");
+ }
+
+ public void test040(){
+ runTest("introducing final fields and checking errors");
+ }
+
+ public void test041(){
+ runTest("Static inner aspects cannot reference user defined pointcuts");
+ }
+
+ public void test042(){
+ runTest("Static inner aspects cannot reference user defined pointcuts");
+ }
+
+ public void test043(){
+ runTest("Declare precedence should not allow multiple * patterns");
+ }
+
+ public void test044(){
+ runTest("VerifyError on accessing objects not accessible to the weaver");
+ }
+
+ public void test045(){
+ runTest("aspect static initializers should run before instance constructed");
+ }
+
+ public void test046(){
+ runTest("super call in intertype method declaration body causes VerifyError");
+ }
+
+ public void test047(){
+ runTest("Error with certain combination of advice");
+ }
+
+ public void test048(){
+ runTest("Pointcut adviceexecution() does not work");
+ }
+
+ public void test049(){
+ runTest("problems with finalize call");
+ }
+
+ public void test050(){
+ runTest("Negation of if pointcut does not work");
+ }
+
+ public void test051(){
+ runTest("ajc reports error when encountering static declaration of nested classes");
+ }
+
+ public void test052(){
+ runTest("can't use pointcuts defined in inner aspects ");
+ }
+
+ public void test053(){
+ runTest("can't resolve nested public interfaces (also PR#32399)");
+ }
+
+ public void test054(){
+ runTest("thisJoinPoint.getArgs() causes IncompatibleClassChangeError");
+ }
+
+ public void test055(){
+ runTest("inter-type declaration of void field");
+ }
+
+ public void test056(){
+ runTest("no such constructor for proceed argument (error)");
+ }
+
+ public void test057(){
+ runTest("omnibus declare warning context with no initializer/constructor");
+ }
+
+ public void test058(){
+ runTest("omnibus declare warning context");
+ }
+
+ public void test059(){
+ runTest("cflow binding issues with ignoring state");
+ }
+
+ public void test060(){
+ runTest("cflow binding -- original weaver crash");
+ }
+
+ public void test061(){
+ runTest("type not imported in around advice");
+ }
+
+ public void test062(){
+ runTest("type not imported in aspect");
+ }
+
+ public void test063(){
+ runTest("class extending abstract aspect");
+ }
+
+ public void test064(){
+ runTest("declare soft and throw statements");
+ }
+
+ public void test065(){
+ runTest("inter-type declaration bug with abstract classes");
+ }
+
+ public void test066(){
+ runTest("Inter type declaration to base class not seen by derived class");
+ }
+
+ public void test067(){
+ runTest("Declare parents with intermediate ancestor");
+ }
+
+ public void test068(){
+ runTest("Declare parents removing ancestor");
+ }
+
+ public void test069(){
+ runTest("IllegalAccessError while accessing introduced variable / 1.1rc1");
+ }
+
+ public void test070(){
+ runTest("implemented abstract pointcut");
+ }
+
+ public void test071(){
+ runTest("privileged aspect main verify error");
+ }
+
+ public void test072(){
+ runTest("Internal compiler error with thisJoinPoint.getStaticPart()");
+ }
+
+ public void test073(){
+ runTest("Inconsistant stack height with around");
+ }
+
+ public void test074(){
+ runTest("Ajc 1.1 rc1 java.lang.VerifyError with messy arounds");
+ }
+
+ public void test075(){
+ runTest("try/finally in around advice (same as ...messy arounds?)");
+ }
+
+ public void test076(){
+ runTest("advise join points in subclass of empty interface");
+ }
+
+ public void test077(){
+ runTest("can't put around advice on interface static initializer");
+ }
+
+ public void test078(){
+ runTest("cflow concretization causing assertion failure");
+ }
+
+ public void test079(){
+ runTest("lame error message: negation doesn't allow binding");
+ }
+
+ public void test080(){
+ runTest("Error when introducing members of type Class");
+ }
+
+ public void test081(){
+ runTest("arrays via Class.forName()");
+ }
+
+ public void test082(){
+ runTest("perthis and inline arounds");
+ }
+
+ public void test083(){
+ runTest("Weaver fails with NPE for very large source files ");
+ }
+
+ public void test084(){
+ runTest("CLE: no sources");
+ }
+
+ public void test085(){
+ runTest("CLE: bad filename");
+ }
+
+ public void test086(){
+ runTest("CLE: no dir specified for sourceroots");
+ }
+
+ public void test087(){
+ runTest("CLE: no sourceroot specified for incremental");
+ }
+
+ public void test088(){
+ runTest("CLE: file specified with incremental");
+ }
+
+ public void test089(){
+ runTest("public static fields being ignored");
+ }
+
+ public void test090(){
+ runTest("can not resolve this member warning");
+ }
+
+ public void test091(){
+ runTest("try switch VerifyError, InconsistentStackHeight");
+ }
+
+ public void test092(){
+ runTest("Compiler crash in ajc 1.1 - terrible error for inaccessible constructor");
+ }
+
+ public void test093(){
+ runTest("Missing import crashes compiler");
+ }
+
+ public void test094(){
+ runTest("NPE in bcel.LazyMethodGen when delegating from one ctor to a second that includes a switch");
+ }
+
+ public void test095(){
+ runTest("switch statement in aspects crashes weaving");
+ }
+
+ public void test096(){
+ runTest("ajc stack trace on declaring hashcode() method in aspect");
+ }
+
+ public void test097(){
+ runTest("using super in method introduced on interface with multiple supertypes");
+ }
+
+ public void test098(){
+ runTest("Compiler crashes in jar and cflow (with no .jar)");
+ }
+
+ public void test099(){
+ runTest("Compiler crashes in jar and cflow (with .jar)");
+ }
+
+ public void test100(){
+ runTest("Default method impl for interface causes internal exception.");
+ }
+
+ public void test102(){
+ runTest("compile error expected for abstract pointcut outside abstract aspect");
+ }
+
+ public void test103(){
+ runTest("subtype-qualified pointcut reference");
+ }
+
+ public void test104(){
+ runTest("weaver trace on mis-qualified pointcut reference");
+ }
+
+ public void test105(){
+ runTest("compile error expected for interface pointcuts");
+ }
+
+ public void test106(){
+ runTest("interface call signatures when declaring method in aspect");
+ }
+
+ public void test107(){
+ runTest("reflective check of declared exceptions from aspect-declared methods");
+ }
+
+ public void test108(){
+ runTest("throw derivative pointcuts not advised");
+ }
+
+ public void test109(){
+ runTest("perthis and signature bad interaction");
+ }
+
+ public void test110(){
+ runTest("declare error fails on pointcuts composed from multiple classes");
+ }
+
+ public void test111(){
+ runTest("declare error fails on pointcuts composed from multiple classes");
+ }
+
+ public void test112(){
+ runTest("Interaction between pointcut binding and declare parents");
+ }
+
+ public void test113(){
+ runTest("Non-functional concretezation of ReferencePointcut");
+ }
+
+ public void test114(){
+ runTest("zip and jar suffixes for extdirs entries");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/ajc11/ajc11-tests.xml b/tests/src/org/aspectj/systemtest/ajc11/ajc11-tests.xml
new file mode 100644
index 000000000..95fe34a0b
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc11/ajc11-tests.xml
@@ -0,0 +1,834 @@
+<!-- AspectJ v1.1.x Tests -->
+
+ <ajc-test dir="new" pr="853"
+ title="declare interface extends class">
+ <compile files="DeclareInterfaceExtendsClass.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="853"
+ title="declare interface implements class">
+ <compile files="DeclareInterfaceImplementsClass.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+
+
+ <ajc-test dir="new" pr="823"
+ title="declaring a private method on an inner interface"
+ keywords="tofix">
+ <compile files="PrivateMethodOnInnerInterface.java"/>
+ <run class="PrivateMethodOnInnerInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="829"
+ title="CE expected when declaring fields on arrays" keywords="tofix">
+ <compile files="ArrayFieldDeclarationCE.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="883"
+ title="signature of handler join point">
+ <compile files="HandlerSignature.java"/>
+ <run class="HandlerSignature"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="885"
+ title="source locations within expressions">
+ <compile files="SourceLocationWithinExpr.java"/>
+ <run class="SourceLocationWithinExpr"/>
+ </ajc-test>
+
+
+
+ <ajc-test dir="new" pr="888"
+ title="crashes given method in declared method">
+ <compile files="DeclareMethodCE.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="889"
+ title="after returning advice on interface constructor">
+ <compile files="AfterReturningInterfaceConstructor.java"/>
+ <run class="AfterReturningInterfaceConstructor"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="889"
+ title="after returning advice on interface constructor - error">
+ <compile files="AfterReturningInterfaceConstructorCE.java">
+ <message kind="error" line="26"/>
+ <message kind="warning" line="30"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="900"
+ title="after advice on static call join point">
+ <compile files="AfterStaticCall.java"/>
+ <run class="AfterStaticCall"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="901"
+ title="incompatible class change error"
+ comment="XXX Jim and Erik found/fixed this - need basis">
+ <compile files="IncompatibleClassChangeErrorBug.java"/>
+ <run class="IncompatibleClassChangeErrorBug"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="903"
+ title="simple cflow of method execution">
+ <compile files="ExecutionCflow.java"/>
+ <run class="ExecutionCflow"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="909"
+ title="using instance as class reference to constant field"
+ comment="XXX need to verify run">
+ <compile files="InstanceAsClassRefToConstant.java"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="774"
+ title="interface self-reference in anonymous instance">
+ <compile files="AnonymousSelfReference.java"/>
+ <run class="AnonymousSelfReference"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="776"
+ title="self-reference from (aspect-declared) method-local class">
+ <compile files="MethodSelfReference.java"/>
+ <run class="MethodSelfReference"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="expect CE for unterminated declare error">
+ <compile files="UnterminatedDeclareErrorCE.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="expect CE for declaration collision between subaspects instead of domination order">
+ <compile files="DeclarationCollisionCE.java">
+ <message kind="error" line="10"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="27"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="subtype pattern in dominates should pick out aspect subtypes">
+ <compile files="DominatesTypePattern.java"/>
+ <run class="DominatesTypePattern"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="subtype pattern in dominates will conflict with type pattern">
+ <compile files="DominatesTypePatternCE.java">
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="827"
+ title="after returning advice on interface and implementation constructor"
+ keywords="tofix">
+ <compile files="AfterReturningConstructor.java"/>
+ <run class="AfterReturningConstructor"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="832"
+ title="after throwing advice with non-throwable formal">
+ <compile files="AfterThrowingNonThrowable.java">
+ <message kind="error" line="41"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="829" title="declare array field using postfix"
+ keywords="tofix">
+ <compile files="ArrayFieldDeclaration.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="851"
+ title="prohibit declaring new aspect constructor with arguments">
+ <compile files="DeclareAspectConstructorCE.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="851"
+ title="prohibit declaring only aspect constructor with arguments">
+ <compile files="DeclareOnlyAspectConstructorCE.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <!-- The follwing three idioms are allowed. Within a declare parents,
+ implements and extends can be used interchangably. We could
+ provide -Xlint style warnings for misuse.
+ -->
+
+ <ajc-test dir="new" pr="853"
+ title="declare class extends interface">
+ <compile files="DeclareClassExtendsInterface.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="853"
+ title="declare class implements class">
+ <compile files="DeclareClassImplementsClass.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="853"
+ title="declare interface implements interface">
+ <compile files="DeclareInterfaceImplementsInterface.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="if and cflow arg binding">
+ <compile files="CflowBinding.java">
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="902"
+ title="circularity in declare dominates">
+ <compile files="CircularDominates.java">
+ <message kind="error" line="18"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="28702" title="percflow code hangs compiler">
+ <compile files="CloseConnectionsCflow.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="28852"
+ title="Verification error tracing constructor that takes arguments">
+ <compile files="ConstructorArgTracing.java"/>
+ <run class="ConstructorArgTracing"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29106" title="declared exceptions in inter-type decls">
+ <compile files="ExceptionsOnInters.java"/>
+ <run class="ExceptionsOnInters"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="28921"
+ title="Verify error on non-Throwable in declare soft">
+ <compile files="DeclareSoftCf.java" options="-Xlint:warning">
+ <message kind="warning" line="28"/>
+ <message kind="error" line="29"/>
+ <message kind="warning"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29113" title="inter-type fields with array types">
+ <compile files="InterFieldArrays.java"/>
+ <run class="InterFieldArrays"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="838"
+ title="checking around join point for advice return type - numeric">
+ <compile files="AroundNumericCastCE.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="836" title="void around advice without proceed">
+ <compile files="VoidAround.java">
+ <message kind="error" line="11"/>
+ <message kind="error" line="29"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/PR852" pr="852"
+ title="declaring method on superclass and subclass">
+ <compile files="aspectPack/Aspect.java,target/SubClass.java,target/SuperClass.java">
+ <dir-changes added="target.SubClass,target.SuperClass"/>
+ </compile>
+ <run class="aspectPack.Aspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new/finalfield" pr="28974"
+ title="introducing final fields (simple)">
+ <compile files="Introducer.java,Receiver.java,User1.java"/>
+ <run class="User1"/>
+ </ajc-test>
+
+ <ajc-test dir="new/finalfield" pr="28974"
+ title="introducing final fields and using as constants">
+ <compile files="Introducer.java,Receiver.java,User2.java"/>
+ <run class="User2"/>
+ </ajc-test>
+
+ <ajc-test dir="new/finalfield" pr="28974"
+ title="introducing final fields and checking errors">
+ <compile files="Introducer.java,Receiver.java,UserCf.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29691"
+ title="Static inner aspects cannot reference user defined pointcuts">
+ <compile files="PcdLookup.java" />
+ <run class="PcdLookup"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29691"
+ title="Static inner aspects cannot reference user defined pointcuts">
+ <compile files="SoftWithin.java" />
+ <run class="SoftWithin"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29689"
+ title="Declare precedence should not allow multiple * patterns">
+ <compile files="CircularPrecedence.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29662"
+ title="VerifyError on accessing objects not accessible to the weaver">
+ <compile files="AroundAccess.java">
+ </compile>
+ <run class="AroundAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="804"
+ title="aspect static initializers should run before instance constructed"
+ keywords="tofix">
+ <compile files="AspectStaticInit.java"/>
+ <run class="AspectStaticInit"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29959"
+ title="super call in intertype method declaration body causes VerifyError">
+ <compile files="SuperToIntro.java"/>
+ <run class="SuperToIntro"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/crashes" pr="30168"
+ title="Error with certain combination of advice">
+ <compile files="test/Test3.java"/>
+ <run class="test.Test3"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="31423"
+ title="Pointcut adviceexecution() does not work">
+ <compile files="AdviceExec.java"/>
+ <run class="AdviceExec"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="30026"
+ title="problems with finalize call">
+ <compile files="Finalizer.java">
+ <message kind="error" line="22"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="33635"
+ title="Negation of if pointcut does not work">
+ <compile files="NotIf.java"/>
+ <run class="NotIf"/>
+ </ajc-test>
+
+
+ <ajc-test dir="bugs" pr="32463"
+ title="ajc reports error when encountering static declaration of nested classes">
+ <compile files="WeaveLocal.java"/>
+ <run class="WeaveLocal"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="32428"
+ title="can't use pointcuts defined in inner aspects ">
+ <compile files="InnerPointcut.java"/>
+ <run class="InnerPointcut"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceNames" pr="32421"
+ title="can't resolve nested public interfaces (also PR#32399)">
+ <compile files="TransactionTest.java,sub/ExecutionMonitor.java,sub/ObserverProtocol.aj"/>
+ <run class="TransactionTest"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="34210"
+ title="thisJoinPoint.getArgs() causes IncompatibleClassChangeError">
+ <compile files="ThisJoinPointAndVerifier.java"/>
+ <run class="ThisJoinPointAndVerifier"/>
+ </ajc-test>
+
+ <ajc-test dir="errors" keywords="error"
+ title="inter-type declaration of void field">
+ <compile files="VoidFieldDeclarationCE.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="binding"
+ title="no such constructor for proceed argument (error)">
+ <compile files="UnfoundConstructor.java">
+ <message kind="error" line="25"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/declare" pr="31724"
+ title="omnibus declare warning context with no initializer/constructor">
+ <compile files="DeclareWarningEmpty.java">
+ <message kind="warning" line="3" text="2 - initialization(DeclareWarningEmpty)"/>
+ <message kind="warning" line="3" text="1 - staticinitialization(DeclareWarningEmpty)"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="new/declare" pr="31724"
+ title="omnibus declare warning context">
+ <compile files="DeclareWarning.java">
+ <message kind="warning" line="5" text="staticinitialization(DeclareWarning)"/>
+ <message kind="warning" line="12" text="call(DeclareWarning.new())"/>
+ <message kind="warning" line="13" text="get staticInt"/>
+ <message kind="warning" line="14" text="get instanceInt"/>
+ <message kind="warning" line="15" text="set staticInt"/>
+ <message kind="warning" line="16" text="set instanceInt"/>
+ <message kind="warning" line="17" text="call(void run())"/>
+ <message kind="warning" line="18" text="call(void irun())"/>
+ <message kind="warning" line="21" text="execution(void run())"/>
+ <message kind="warning" line="22" text="execution(void irun())"/>
+ <message kind="warning" line="23" text="execution(DeclareWarning.new())"/>
+ <message kind="warning" line="23" text="initialization(DeclareWarning)"/>
+ <message kind="warning" line="33" text="handler(OutOfMemoryError) &amp;&amp; within(DeclareWarning)"/>
+ <message kind="warning" line="36" text="handler(Error)"/>
+ <message kind="warning" line="39" text="handler(RuntimeException) &amp;&amp; withincode(DeclareWarning.new())"/>
+ <message kind="warning" line="74" text="adviceExecution() &amp;&amp; within(A)"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="bugs" pr="34858"
+ title="cflow binding issues with ignoring state">
+ <compile files="CflowBinding.java"/>
+ <run class="CflowBinding"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="34858"
+ title="cflow binding -- original weaver crash">
+ <compile files="CflowBindingOrig.java"/>
+ <run class="CflowBindingOrig"/>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="type not imported in around advice">
+ <compile files="TypeNotImportedInAroundCE.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="type not imported in aspect">
+ <compile files="TypeInAspectNotImportedCE.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" keywords="error"
+ title="class extending abstract aspect">
+ <compile files="ClassExtendingAbstractAspectCE.java">
+ <message kind="error" line="20"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="34925"
+ title="declare soft and throw statements">
+ <compile files="ConvertToUnchecked.java"/>
+ <run class="ConvertToUnchecked"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interAbstract"
+ title="inter-type declaration bug with abstract classes"
+ pr="36046">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interInherit" pr="35725"
+ title="Inter type declaration to base class not seen by derived class">
+ <compile files="a_impl/AImpl.java,a_impl/Af.java,a_intf/A.java,b_impl/BImpl.java,b_intf/B.java"/>
+ <run class="b_impl.BImpl"/>
+ </ajc-test>
+
+ <ajc-test dir="new/declareParents"
+ title="Declare parents with intermediate ancestor"
+ keywords="from-new">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/declareParents"
+ title="Declare parents removing ancestor"
+ keywords="from-new">
+ <compile files="IllegalAdoption.java">
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interSpecials" title="IllegalAccessError while accessing introduced variable / 1.1rc1"
+ pr="36110">
+ <compile files="p1/C.java,p2/A1.java"/>
+ <run class="p2.A1"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="36736"
+ title="implemented abstract pointcut">
+ <compile files="AbstractImplementedPointcut.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/verifyError" pr="36673"
+ title="privileged aspect main verify error">
+ <compile files="Privilege.java"/>
+ <run class="Privilege"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="36564"
+ title="Internal compiler error with thisJoinPoint.getStaticPart()">
+ <compile files="tjpStaticPart/Test.java,tjpStaticPart/Exceptions.java"/>
+ <run class="tjpStaticPart.Test"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="29665"
+ title="Inconsistant stack height with around">
+ <compile files="StackError.java"/>
+ <run class="StackError"/>
+ </ajc-test>
+
+
+ <ajc-test dir="bugs/messyAround" pr="36056"
+ title="Ajc 1.1 rc1 java.lang.VerifyError with messy arounds">
+ <compile files="aspects/Trace.aj,cap/OptionList.java,DebugTrace.aj">
+ <message kind="warning" line="102"/>
+ <message kind="warning" line="124"/>
+ <message kind="warning" line="138"/>
+ </compile>
+ <run class="cap.OptionList"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="try/finally in around advice (same as ...messy arounds?)">
+ <compile files="TryFinallyInAround.java"/>
+ <run class="TryFinallyInAround"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="36778"
+ title="advise join points in subclass of empty interface">
+ <compile files="EmptyInterface.java"/>
+ <run class="EmptyInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="36778"
+ title="can't put around advice on interface static initializer"
+ comment="this tests for a nice message given a compiler limitation">
+ <compile files="EmptyInterfaceCE.java">
+ <message kind="error" line="20"/>
+ <message kind="error" line="23"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="36803"
+ title="cflow concretization causing assertion failure">
+ <compile files="CflowConcrete.java"/>
+ <run class="CflowConcrete"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" title="lame error message: negation doesn't allow binding"
+ pr="30663">
+ <compile files="BadBindingError.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interSpecials" pr="36936"
+ title="Error when introducing members of type Class">
+ <compile files="Trg.java,Asp.java"/>
+ <run class="Trg"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ comment="this is a pureJava test, but we always want to run it"
+ title="arrays via Class.forName()">
+ <compile files="ClassForName.java"/>
+ <run class="ClassForName"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/inlineAround" pr="37152"
+ title="perthis and inline arounds">
+ <compile files="aspect1/Base.java,aspect2/Concrete.java,p1/Main.java">
+ </compile>
+ <run class="p1.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="37325"
+ title="Weaver fails with NPE for very large source files ">
+ <compile files="LongFile.java"/>
+ <run class="LongFile"/>
+ </ajc-test>
+
+ <ajc-test dir="harness" keywords="command-line-error"
+ title="CLE: no sources">
+ <compile badInput="true">
+ <message kind="error" text="no sources"/>
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness"
+ keywords="command-line-error,knownLimitation-ajctaskCompiler,knownLimitation-ajdeCompiler"
+ comment="ajde omits usage"
+ title="CLE: bad filename">
+ <compile badInput="true" files="NoSuchFile.java">
+ <message kind="error" text="NoSuchFile.java"/>
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness" keywords="command-line-error"
+ comment="XXX test skipped - harness ignores -sourceroot option"
+ title="CLE: no dir specified for sourceroots">
+ <compile badInput="true" files="ErrorTest.java"
+ options="-sourceroots">
+ <message kind="error" text="no sources specified"/>
+ <message kind="error" text="bad sourceroot"/>
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness" keywords="command-line-error,knownLimitation-ajdeCompiler"
+ comment="ajde has same errors, different wording"
+ title="CLE: no sourceroot specified for incremental">
+ <compile badInput="true" options="-incremental">
+ <message kind="error" text="no sources specified"/>
+ <message kind="error" text="specify a source root"/>
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness" keywords="command-line-error,knownLimitation-ajdeCompiler"
+ comment="ajde has same errors, different wording"
+ title="CLE: file specified with incremental">
+ <compile badInput="true" files="ErrorTest.java"
+ options="-incremental">
+ <message kind="error" text="incremental mode only handles source files using -sourceroots"/>
+ <message kind="error" text="no sources specified"/>
+ <message kind="error" text="specify a source root"/>
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="bugs" pr="37304"
+ title="public static fields being ignored">
+ <compile files="FinalFields.java"/>
+ <run class="FinalFields"/>
+ </ajc-test>
+
+
+ <!-- This doesn't actually reproduce the bug, but no test case has been submitted
+ that does so this is here as a place-holder and to verify that we're mostly
+ working.
+ -->
+ <ajc-test dir="bugs/accessMethods" pr="38212"
+ title="can not resolve this member warning">
+ <compile files="p1/Base.java,p2/Derived.java"/>
+ <run class="p2.Derived"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="38345"
+ title="try switch VerifyError, InconsistentStackHeight">
+ <compile files="TrySwitch.java"/>
+ <run class="TrySwitch"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="39458"
+ title="Compiler crash in ajc 1.1 - terrible error for inaccessible constructor">
+ <compile files="NewVoid.java">
+ <message kind="error" line="17"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+
+ <message kind="error" line="28"/>
+ <message kind="warning" line="29"/>
+ <message kind="warning" line="30"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="39460"
+ title="Missing import crashes compiler">
+ <compile files="MissingImport.java">
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="39479"
+ title="NPE in bcel.LazyMethodGen when delegating from one ctor to a second that includes a switch">
+ <compile files="NewSwitch.java"/>
+ <run class="NewSwitch"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="40109"
+ title="switch statement in aspects crashes weaving">
+ <compile files="SwitchInAround.java"/>
+ <run class="SwitchInAround"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="39993"
+ title="ajc stack trace on declaring hashcode() method in aspect">
+ <compile files="OverridingInterfaceObjectMethod.java"/>
+ <run class="OverridingInterfaceObjectMethod"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="using super in method introduced on interface with multiple supertypes">
+ <compile files="MultipleSuperCf.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/cflowAndJar" pr="39462"
+ title="Compiler crashes in jar and cflow (with no .jar)">
+ <compile files="TestAspect.aj,Test.java,AbstractAspect.aj">
+ <message kind="warning" line="16"/>
+ </compile>
+ <run class="Test"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/cflowAndJar" pr="39462"
+ title="Compiler crashes in jar and cflow (with .jar)"
+ comment="make lib.jar with ajc -outjar lib.jar AbstractAspect.aj">
+ <compile files="TestAspect.aj,Test.java" aspectpath="lib.jar">
+ <message kind="warning" line="16"/>
+ </compile>
+ <run class="Test"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="40589"
+ title="Default method impl for interface causes internal exception.">
+ <compile files="CloneMethod.java"/>
+ <run class="CloneMethod"/>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="compile error expected for abstract pointcut outside abstract aspect">
+ <compile files="AbstractPointcutCE.java">
+ <message kind="error" line="5"/>
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="40876"
+ title="subtype-qualified pointcut reference">
+ <compile files="PointcutLibraryTest.java"/>
+ <run class="PointcutLibraryTest"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="40858"
+ comment="super is not permitted in pointcuts in 1.1"
+ title="weaver trace on mis-qualified pointcut reference">
+ <compile files="SuperPointcutCE.java">
+ <message kind="error" line="23"/>
+ <message kind="error" line="26"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="40814"
+ title="compile error expected for interface pointcuts">
+ <compile files="AbstractPointcutCE.java">
+ <message kind="error" line="7"/>
+ <message kind="error" line="11"/>
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="40805"
+ title="interface call signatures when declaring method in aspect">
+ <compile files="DeclareWarningAndInterfaceMethodCW.java">
+ <message kind="warning" line="27" text="call getSomething"/>
+ <message kind="warning" line="27" text="call ICanGetSomething.getSomething"/>
+ <message kind="warning" line="31" text="call getSomething"/>
+ <message kind="warning" line="31" text="call ICanGetSomething.getSomething"/>
+ <message kind="warning" line="33" text="call getSomething"/>
+ <message kind="warning" line="33" text="call ICanGetSomething.getSomething"/>
+ <message kind="warning" line="35" text="call getSomething"/>
+ <message kind="warning" line="35" text="call ICanGetSomething.getSomething"/>
+ <message kind="warning" line="38" text="call getSomething"/>
+ <message kind="warning" line="38" text="call ICanGetSomething.getSomething"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="41175"
+ title="reflective check of declared exceptions from aspect-declared methods">
+ <compile files="DeclaredExceptions.java"/>
+ <run class="DeclaredExceptions"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/throwsSignature"
+ pr="42539"
+ title="throw derivative pointcuts not advised">
+ <compile files="ExceptionBugTest.java,ExceptionAspect.java">
+ <message line="5" kind="warning" text="throws both"/>
+ <message line="5" kind="error" text="throws Exception"/>
+ <message line="7" kind="warning" text="throws both"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="42652"
+ title="perthis and signature bad interaction">
+ <compile files="InterPerCall.java"/>
+ <run class="InterPerCall"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/declareBinding"
+ pr="42740"
+ title="declare error fails on pointcuts composed from multiple classes">
+ <compile files="SampleExceptionHandling1.java">
+ <message line="2" kind="error" text="no checked exceptions"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/declareSoftWithin"
+ pr="42740"
+ title="declare error fails on pointcuts composed from multiple classes">
+ <compile files="aspects/Softener.aj,test/NoSoftener.java"/>
+ <run class="test.NoSoftener"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="42993"
+ title="Interaction between pointcut binding and declare parents">
+ <compile files="ParentsAndPointcuts.java"/>
+ <run class="ParentsAndPointcuts"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="43194"
+ title="Non-functional concretezation of ReferencePointcut">
+ <compile files="AdviceInteraction.java"/>
+ <run class="AdviceInteraction"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/extdirs"
+ pr="42574"
+ title="zip and jar suffixes for extdirs entries">
+ <compile files="extdirs-src/main/Main.java"
+ extdirs="lib/lowercase"/>
+ </ajc-test>
+ \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc11/ajc11.xml b/tests/src/org/aspectj/systemtest/ajc11/ajc11.xml
new file mode 100644
index 000000000..899dfe725
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc11/ajc11.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/ajc11/ajc11-tests.xml">
+]>
+<!-- AspectJ v1.1.x Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc120/Ajc120Tests.java b/tests/src/org/aspectj/systemtest/ajc120/Ajc120Tests.java
new file mode 100644
index 000000000..84054333a
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc120/Ajc120Tests.java
@@ -0,0 +1,244 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.ajc120;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class Ajc120Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc120Tests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/ajc120/ajc120.xml");
+ }
+
+
+ public void test001(){
+ runTest("NPE in concretization error path");
+ }
+
+ public void test002(){
+ runTest("priviledged aspects calling methods from advice");
+ }
+
+ public void test003(){
+ runTest("No error on overloaded pointcuts in class");
+ }
+
+ public void test004(){
+ runTest("No error on overloaded pointcuts unless binding variables");
+ }
+
+ public void test005(){
+ runTest("Declare soft softening other exception types");
+ }
+
+ public void test006(){
+ runTest("static method introduction on interfaces, should not be allowed");
+ }
+
+ public void test007(){
+ runTest("External pointcut refs not resolved if named pointcut used by declare");
+ }
+
+ public void test008(){
+ runTest("Appropriate message for 'after() thowing(Throwable th)' syntax error");
+ }
+
+ public void test009(){
+ runTest("Ensure we don't look for source on the classpath when binary not found");
+ }
+
+ public void test010(){
+ runTest("inner aspect containing declare soft");
+ }
+
+ public void test011(){
+ runTest("Bad parser error recovery in advice");
+ }
+
+ public void test012(){
+ runTest("Bad parser error recovery in java source");
+ }
+
+ public void test013(){
+ runTest("compiler issues error on inner aspects when privilieged");
+ }
+
+ public void test014(){
+ runTest("After throwing advice on ctors doesn't execute for inter-type decl field inits");
+ }
+
+ public void test015(){
+ runTest("Introduced abstract method on abstract class not implemented by subtype (single source file)");
+ }
+
+ public void test016(){
+ runTest("Introduced abstract method on abstract class with introduced concrete method (single source file)");
+ }
+
+ public void test017(){
+ runTest("Introduced abstract method on abstract class with existing concrete method (single source file)");
+ }
+
+ public void test018(){
+ runTest("aspect declares interface method (no modifiers)");
+ }
+
+ public void test019(){
+ runTest("aspect declares interface method (abstract)");
+ }
+
+ public void test020(){
+ runTest("aspect declares interface method (public abstract)");
+ }
+
+ public void test021(){
+ runTest("Use class implementing interface via aspect (not woven together)");
+ }
+
+ public void test022(){
+ runTest("Use class implementing interface via aspect (weave all together)");
+ }
+
+ public void test023(){
+ runTest("Use class implementing interface via aspect (only one implementer)");
+ }
+
+ public void test024(){
+ runTest("Erroneous exception conversion");
+ }
+
+ public void test025(){
+ runTest("before():execution(new(..)) does not throw NoAspectBoundException");
+ }
+
+ public void test026(){
+ runTest("Anomalous handling of inter-type declarations to abstract base classes in aspectj 1.1");
+ }
+
+ public void test027(){
+ runTest("NPE When compiling intertype declaration");
+ }
+
+ public void test028(){
+ runTest("declare warning on subtype constructor");
+ }
+
+ public void test029(){
+ runTest("CatchClauseSignature has broken operation");
+ }
+
+ public void test030(){
+ runTest("after returning with parameter: matching rules");
+ }
+
+ public void test031(){
+ runTest("binary compatibility of advice method names - expect no error");
+ }
+
+ public void test032(){
+ runTest("binary compatibility of advice method names - expect error");
+ }
+
+ public void test033(){
+ runTest("binary compatibility of advice method names - expect no error");
+ }
+
+ public void test034(){
+ runTest("mail list VerifyError with protected access");
+ }
+
+ public void test035(){
+ runTest("Polymorphic ITD fails in CVS HEAD (From ajdt 1.1.6)");
+ }
+
+ public void test036(){
+ runTest("ClasscastException on concretization of if(false)");
+ }
+
+ public void test037(){
+ runTest("ClasscastException on concretization of if(false)");
+ }
+
+ public void test038(){
+ runTest("Introduced abstract method on interface not implemented by subtype (weave altogether)");
+ }
+
+ public void test039(){
+ runTest("declare String field on interface");
+ }
+
+ public void test040(){
+ runTest("declare int field on interface");
+ }
+
+ public void test041(){
+ runTest("declare Object field on interface");
+ }
+
+ public void test042(){
+ runTest("fail in compiling aspect with overriding method introduction with different throws clause ");
+ }
+
+ public void test043(){
+ runTest("super call in anonymous class created in around advice");
+ }
+
+ public void test044(){
+ runTest("retitle warning to circular {advice} dependency at ...");
+ }
+
+ public void test045(){
+ runTest("Introduce Unknown Type to class causes Null pointer exception");
+ }
+
+ public void test046(){
+ runTest("Private members introduced via an interface are visible to the class");
+ }
+
+ public void test047(){
+ runTest("declare precedence on a class should be a compile-time error");
+ }
+
+ public void test048(){
+ runTest("declare precedence on a class should be a compile-time error");
+ }
+
+ public void test049(){
+ runTest("NPE when binary weaving a ctor ITD");
+ }
+
+ public void test050(){
+ runTest("NPE in compiler when using (an unusual) declare warning against a ctor ITD");
+ }
+
+ public void test051(){
+ runTest("InterTypeMethodDeclaration.java:104");
+ }
+
+ public void test052(){
+ runTest("nested uses of this() inside constructors not handled properly for initialization and preinitialization pointcuts");
+ }
+
+ public void test053(){
+ runTest("wrong variable binding in || pointcuts");
+ }
+
+ public void test054(){
+ runTest("error message for constructor-execution pcd");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml b/tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml
new file mode 100644
index 000000000..51f70134b
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml
@@ -0,0 +1,478 @@
+<!-- AspectJ v1.2.0 Tests -->
+
+ <ajc-test dir="bugs/concretizeNpe" pr="43033"
+ title="NPE in concretization error path"
+ keywords="poorErrorMessages">
+ <compile files="base/ExceptionHandling.java,model/ModelExceptionHandling.java">
+ <!--
+ <message line="5" kind="error" text="pointcut base.ExceptionHandling.scope() is abstract"/>
+ <message line="4" kind="error" text="inherited abstract pointcut base.ExceptionHandling.scope() is not made concrete"/>
+ <message line="8" kind="error" text="inherited abstract pointcut base.ExceptionHandling.scope() is not made concrete"/>
+ <message line="12" kind="error" />
+ <message line="13" kind="error" />
+ -->
+ <message line="12" kind="error" />
+ <message line="13" kind="error" />
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/privilege/packageProtected" pr="42711"
+ title="priviledged aspects calling methods from advice">
+ <compile files="concern/ContextUser.java,concern/BaseTarget.java,core/Base.java" />
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="49457"
+ title="No error on overloaded pointcuts in class">
+ <compile files="OverloadedPointcutsInClass.java">
+ <message kind="error" line="3" text="duplicate pointcut name: pc1"/>
+ <message kind="error" line="4" text="duplicate pointcut name: pc1"/>
+ <message kind="error" line="6" text="duplicate pointcut name: pc2"/>
+ <message kind="error" line="7" text="duplicate pointcut name: pc2"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="49457"
+ title="No error on overloaded pointcuts unless binding variables">
+ <compile files="OverloadedPointcutsInAspect.java">
+ <message kind="error" line="15" text="duplicate pointcut name: pc"/>
+ <message kind="error" line="16" text="duplicate pointcut name: pc"/>
+ <message kind="error" line="18" text="incompatible type"/>
+ <message kind="error" line="20" text="incompatible type"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="48522"
+ title="Declare soft softening other exception types">
+ <compile files="SofteningTooMuch.java">
+ <message kind="error" line="6" text="Unhandled exception"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="47754"
+ title="static method introduction on interfaces, should not be allowed">
+ <compile files="StaticInterfaceMethods.java">
+ <message kind="error" line="7" text="methods in interfaces cannot be declared static"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="45184"
+ title="External pointcut refs not resolved if named pointcut used by declare">
+ <compile files="DeclareErrorNamedPointcutCE.java">
+ <message kind="error" line="10" text="ref"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="Appropriate message for 'after() thowing(Throwable th)' syntax error"
+ pr="49638"
+ >
+ <compile
+ files="AfterThrowingAdviceSyntaxError.java" >
+ <message kind="error" line="21" />
+ <message kind="error" line="23" />
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/faultingInSource" pr="46671"
+ title="Ensure we don't look for source on the classpath when binary not found">
+ <compile files="SimpleTracing.java" classpath="." options="-verbose">
+ <message kind="warning" line="4" text="no match for this type name: SampleClass"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="46750" title="inner aspect containing declare soft">
+ <compile files="TestSoftening.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="45663"
+ title="Bad parser error recovery in advice">
+ <compile files="ParserRecoveryTest.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="45663"
+ title="Bad parser error recovery in java source">
+ <compile files="ParserRecoveryTestPureJava.java">
+ <message kind="error" line="6"/>
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="46280"
+ title="compiler issues error on inner aspects when privilieged">
+ <compile files="PrivilegedParsing.java"/>
+ <run class="PrivilegedParsing"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="44586"
+ title="After throwing advice on ctors doesn't execute for inter-type decl field inits">
+ <compile files="AfterThrowingCtor.java">
+ </compile>
+ <run class="AfterThrowingCtor"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on abstract class not implemented by subtype (single source file)">
+ <compile files="singlesource/C.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on abstract class with introduced concrete method (single source file)">
+ <compile files="singlesource/C1.java"/>
+ <run class="C1"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on abstract class with existing concrete method (single source file)">
+ <compile files="singlesource/C2.java"/>
+ <run class="C2"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interAbstract"
+ pr="49784"
+ title="aspect declares interface method (no modifiers)">
+ <compile files="InterfaceMethodDeclarationNone.java" >
+ <message kind="error" line="32" text="requires a body" />
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interAbstract"
+ pr="49784"
+ title="aspect declares interface method (abstract)">
+ <compile files="InterfaceMethodDeclarationAbstract.java">
+ <message kind="error" line="40" text="must implement" />
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interAbstract"
+ pr="49784"
+ comment="working in 1.1.1 - keep with others?"
+ title="aspect declares interface method (public abstract)">
+ <compile files="InterfaceMethodDeclarationFull.java" />
+ <run class="InterfaceMethodDeclarationFull"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceDefinition"
+ pr="43972"
+ title="Use class implementing interface via aspect (not woven together)">
+ <compile
+ files="pack/DefineInterface.java,
+ pack/InterfaceDefinition.java,
+ pack/MyInterface.java"/>
+ <run class="pack.InterfaceDefinition"/>
+ <compile
+ includeClassesDir="true"
+ files="Main.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceDefinition"
+ pr="43972"
+ title="Use class implementing interface via aspect (weave all together)">
+ <compile
+ files="pack/DefineInterface.java,
+ pack/InterfaceDefinition.java,
+ pack/MyInterface.java,
+ Main.java"/>
+ <run class="pack.InterfaceDefinition"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceDefinition"
+ pr="43972"
+ title="Use class implementing interface via aspect (only one implementer)">
+ <compile
+ files="pack/DefineInterface.java,
+ pack/InterfaceDefinition.java,
+ pack/MyInterface.java"/>
+ <run class="pack.InterfaceDefinition"/>
+ <compile
+ includeClassesDir="true"
+ files="Main1.java"/>
+ <run class="Main1"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="44587"
+ title="Erroneous exception conversion">
+ <compile files="ErroneousExceptionConversion.java">
+ </compile>
+ <run class="ErroneousExceptionConversion"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="34206"
+ title="before():execution(new(..)) does not throw NoAspectBoundException">
+ <compile files="ErroneousExceptionConversion1.java">
+ </compile>
+ <run class="ErroneousExceptionConversion1"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="38824"
+ title="Anomalous handling of inter-type declarations to abstract base classes in aspectj 1.1">
+ <compile files="AbstractBaseAndInterTypeInterface.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/caseSensitivity" pr="42515"
+ title="NPE When compiling intertype declaration">
+ <compile files="uniqueId/Numbered.java,uniqueId/Bug.aj">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="49295"
+ title="declare warning on subtype constructor">
+ <compile files="SubtypeConstructorCW.java" >
+ <message kind="warning" line="5" text="String as first"/>
+ <message kind="warning" line="10" text="String as first"/>
+ </compile>
+ <run class="SubtypeConstructorCW"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="50570"
+ title="CatchClauseSignature has broken operation">
+ <compile files="HandlerSig.java"/>
+ <run class="HandlerSig"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="42668"
+ title="after returning with parameter: matching rules">
+ <compile files="AfterReturningParamMatching.java" />
+ <run class="AfterReturningParamMatching"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/binaryCompat" pr="50641"
+ title="binary compatibility of advice method names - expect no error">
+ <compile files="Main.java,TraceV1.aj"/>
+ <run class="Main"/>
+ <compile files="TraceV2.aj"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/binaryCompat" pr="50641"
+ title="binary compatibility of advice method names - expect error">
+ <compile files="Main.java,TraceV1.aj"/>
+ <run class="Main"/>
+ <compile files="TraceRE.aj"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/binaryCompat" pr="50641"
+ title="binary compatibility of advice method names - expect no error">
+ <compile files="Main.java,TraceWithInnerV1.aj"/>
+ <run class="Main"/>
+ <compile files="TraceWithInnerV2.aj"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/protectedvf"
+ title="mail list VerifyError with protected access">
+ <compile files="main/Driver.java,main/p2/AbstractTest.aj,main/p1/ConcreteTest.aj"/>
+ <run class="main.Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="51919"
+ title="Polymorphic ITD fails in CVS HEAD (From ajdt 1.1.6)">
+ <compile files="OverloadedITDNPE.java" />
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="51320"
+ title="ClasscastException on concretization of if(false)">
+ <compile files="DecwClassCastException.java">
+
+ <!-- These are the illegal PCDs against a deow -->
+ <message kind="error" line="27" text="if() pointcut designator cannot be used"/>
+ <message kind="error" line="29" text="if() pointcut designator cannot be used"/>
+
+ <message kind="error" line="31" text="cflow() pointcut designator cannot be used"/>
+ <message kind="error" line="33" text="cflow() pointcut designator cannot be used"/>
+
+ <message kind="error" line="35" text="cflowbelow() pointcut designator cannot be used"/>
+ <message kind="error" line="37" text="cflowbelow() pointcut designator cannot be used"/>
+
+ <message kind="error" line="39" text="this() pointcut designator cannot be used"/>
+ <message kind="error" line="41" text="this() pointcut designator cannot be used"/>
+
+ <message kind="error" line="43" text="target() pointcut designator cannot be used"/>
+ <message kind="error" line="45" text="target() pointcut designator cannot be used"/>
+
+ <message kind="error" line="47" text="args() pointcut designator cannot be used"/>
+ <message kind="error" line="49" text="args() pointcut designator cannot be used"/>
+
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="51320"
+ title="ClasscastException on concretization of if(false)">
+ <compile files="DeclareSoftDynamicPCDs.java">
+
+ <!-- These are the illegal PCDs against a deow -->
+ <message kind="error" line="27" text="if() pointcut designator cannot be used"/>
+ <message kind="error" line="29" text="if() pointcut designator cannot be used"/>
+
+ <message kind="error" line="31" text="cflow() pointcut designator cannot be used"/>
+ <message kind="error" line="33" text="cflow() pointcut designator cannot be used"/>
+
+ <message kind="error" line="35" text="cflowbelow() pointcut designator cannot be used"/>
+ <message kind="error" line="37" text="cflowbelow() pointcut designator cannot be used"/>
+
+ <message kind="error" line="39" text="this() pointcut designator cannot be used"/>
+ <message kind="error" line="41" text="this() pointcut designator cannot be used"/>
+
+ <message kind="error" line="43" text="target() pointcut designator cannot be used"/>
+ <message kind="error" line="45" text="target() pointcut designator cannot be used"/>
+
+ <message kind="error" line="47" text="args() pointcut designator cannot be used"/>
+ <message kind="error" line="49" text="args() pointcut designator cannot be used"/>
+
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on interface not implemented by subtype (weave altogether)">
+ <compile files="interface/C.java,interface/A.java,interface/B.java" />
+ <run class="C"/>
+ </ajc-test>
+
+
+ <ajc-test dir="bugs/fieldsOnInterfaces"
+ pr="52107"
+ title="declare String field on interface">
+ <compile files="StringFieldOnInterface.java">
+ <message kind="warning" line="16" text="this affected type is not exposed"/>
+ <message kind="warning" line="17" text="this affected type is not exposed"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/fieldsOnInterfaces"
+ pr="52107"
+ title="declare int field on interface">
+ <compile files="IntFieldOnInterface.java">
+ <message kind="warning" line="27" text="this affected type is not exposed"/>
+ <message kind="warning" line="28" text="this affected type is not exposed"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/fieldsOnInterfaces"
+ pr="52107"
+ title="declare Object field on interface">
+ <compile files="ObjectFieldOnInterface.java">
+ <message kind="warning" line="20" text="this affected type is not exposed"/>
+ <message kind="warning" line="21" text="this affected type is not exposed"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="50776"
+ title="fail in compiling aspect with overriding method introduction with different throws clause ">
+ <compile files="IntertypeDifferentThrows.java" />
+ </ajc-test>
+
+ <ajc-test dir="new"
+ comment="in ajc 1.1.1, VerifyError Illegal use of nonvirtual function call"
+ title="super call in anonymous class created in around advice">
+ <compile files="SuperClosure.java" />
+ <run class="SuperClosure" />
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="44272"
+ title="retitle warning to circular {advice} dependency at ...">
+ <compile files="CircularAdvicePrecedence.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="5"/>
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="51322"
+ title="Introduce Unknown Type to class causes Null pointer exception" >
+ <compile files="Pr51322.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <!-- this test unreliable - can't always delete sandbox afterwards, need to get
+ to the bottom of why...
+ <ajc-test dir="bugs" pr="43714"
+ title="weaving from an input jar into that same jar.." >
+ <compile files="notAJar.jar" outjar="notAJar.jar">
+ <message kind="error" line="0"/>
+ </compile>
+ </ajc-test>
+ -->
+
+ <ajc-test dir="bugs"
+ title="Private members introduced via an interface are visible to the class"
+ pr="52928">
+ <compile
+ files="VisiblePrivateInterfaceITDs.java" >
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/declarePrecedenceWithClasses" pr="53012"
+ title="declare precedence on a class should be a compile-time error">
+ <compile files="DeclarePrecedenceTestClass.java" >
+ <message kind="error" line="10" text="Non-aspect types can only be specified"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/declarePrecedenceWithClasses" pr="53012"
+ title="declare precedence on a class should be a compile-time error">
+ <compile files="Priority.aj" />
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="59440"
+ title="NPE when binary weaving a ctor ITD">
+ <compile files="CtorITD.aj">
+ <message kind="error" line="2"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="59397"
+ title="NPE in compiler when using (an unusual) declare warning against a ctor ITD">
+ <compile files="DecwInitializationITD.java">
+ <message kind="warning" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/compileOrdering"
+ pr="59778"
+ title="InterTypeMethodDeclaration.java:104">
+ <compile files="B.java,D.java" >
+ <message kind="error" line="2" file="B.java"/>
+ </compile>
+ <compile files="D.java,B.java">
+ <message kind="error" line="2" file="B.java"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="61538" title="nested uses of this() inside constructors not handled properly for initialization and preinitialization pointcuts">
+ <compile files="ConstructorMain.java"/>
+ <run class="ConstructorMain"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="61568" title="wrong variable binding in || pointcuts">
+ <compile files="DisjunctVarBinding.java">
+ <message kind="error" line="34" text="Ambiguous binding of type B"/>
+ <message kind="error" line="34" text="Ambiguous binding of type A"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="60936" title="error message for constructor-execution pcd">
+ <compile files="InterfaceConstructor.java">
+ <message kind="warning" line="10" text="no interface constructor-execution join point"/>
+ </compile>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/ajc120/ajc120.xml b/tests/src/org/aspectj/systemtest/ajc120/ajc120.xml
new file mode 100644
index 000000000..dade07154
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc120/ajc120.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/ajc120/ajc120-tests.xml">
+]>
+
+<!-- AspectJ v1.2.0 Tests -->
+
+<suite>
+
+&tests;
+
+</suite>
diff --git a/tests/src/org/aspectj/systemtest/ajc121/Ajc121Tests.java b/tests/src/org/aspectj/systemtest/ajc121/Ajc121Tests.java
new file mode 100644
index 000000000..019dabd75
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc121/Ajc121Tests.java
@@ -0,0 +1,84 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.ajc121;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class Ajc121Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Ajc121Tests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/ajc121/ajc121.xml");
+ }
+
+
+ public void test001(){
+ runTest("false ambigous binding error (introduced in 1.2rc2)");
+ }
+
+ public void test002(){
+ runTest("An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc");
+ }
+
+ public void test003(){
+ runTest("An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc");
+ }
+
+ public void test004(){
+ runTest("An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc");
+ }
+
+ public void test005(){
+ runTest("compiler aborts with 'conflicting dominates orders' with circular declare precedences");
+ }
+
+ public void test006(){
+ runTest("'can't bind type' message has $ for . in type name for declare soft");
+ }
+
+ public void test007(){
+ runTest("Hiding of Instance Methods by static methods");
+ }
+
+ public void test008(){
+ runTest("if(false) optimisation");
+ }
+
+ public void test009(){
+ runTest("if(true) optimisation");
+ }
+
+ public void test010(){
+ runTest("java.lang.NullPointerException in WeaverMessageHandler class");
+ }
+
+ public void test011(){
+ runTest("ClassCastException at BcelRenderer.java:169");
+ }
+
+ public void test012(){
+ runTest("Front-end bug, shouldn't allow patterns of the form foo.., should be foo..*");
+ }
+
+ public void test013() {
+ runTest("Nullpointer-Exception when defining a withincode() pointcut");
+ }
+
+ public void test014() {
+ runTest("NPE, Incorrect XLint:unmatchedSuperTypeInCall warning");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml b/tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml
new file mode 100644
index 000000000..7f1a72902
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml
@@ -0,0 +1,127 @@
+<!-- AspectJ v1.2.1 Tests -->
+
+
+ <ajc-test dir="bugs"
+ pr="62073" title="false ambigous binding error (introduced in 1.2rc2)">
+ <compile files="DisjunctVarBinding_2.java,DisjunctVarBinding_3.java">
+ <message kind="error" line="25" file="DisjunctVarBinding_2.java" text="Ambiguous binding of type B"/>
+ <message kind="error" line="25" file="DisjunctVarBinding_2.java" text="Ambiguous binding of type A"/>
+ </compile>
+ <compile files="DisjunctVarBinding_3.java,DisjunctVarBinding_2.java">
+ <message kind="error" line="25" file="DisjunctVarBinding_2.java" text="Ambiguous binding of type B"/>
+ <message kind="error" line="25" file="DisjunctVarBinding_2.java" text="Ambiguous binding of type A"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/IfPerThis"
+ pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc">
+ <compile files="Testcase1.java">
+ <message kind="error" line="15" text="if() pointcut designator cannot be used directly in a per clause"/>
+ <message kind="error" line="23" text="if() pointcut designator cannot be used directly in a per clause"/>
+ <message kind="error" line="25" text="if() pointcut designator cannot be used directly in a per clause"/>
+ <message kind="error" line="27" text="if() pointcut designator cannot be used directly in a per clause"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/IfPerThis"
+ pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc">
+ <compile files="Testcase2.java"/>
+ <run class="Testcase2"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/IfPerThis"
+ pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc">
+ <compile files="Testcase3.java">
+ <message kind="error" line="2" text="if() pointcut designator cannot be used directly in a per clause"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/bug70619"
+ pr="70619" title="compiler aborts with 'conflicting dominates orders' with circular declare precedences">
+ <compile files="Precedence.java">
+ <message kind="error" line="0" text="conflicting declare precedence"/>
+ </compile>
+ <compile files="Conflict.java,Order2.aj,Order1.aj">
+ <message kind="error" line="0" text="conflicting declare precedence"/>
+ </compile>
+ <compile files="Conflict.java,Order1.aj,Order2.aj">
+ <message kind="error" line="0" text="conflicting declare precedence"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="53999" title="'can't bind type' message has $ for . in type name for declare soft">
+ <compile files="Cosmetic.java">
+ <message kind="error" line="9" text="can't bind type name 'unknown.Error'"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/intertypeOverrides"
+ pr="69459" title="Hiding of Instance Methods by static methods">
+ <compile files="IntertypeOverrides.java">
+ <message kind="error" line="8" text="void Sub.m() cannot override void Super.m(); overriding method is static"/>
+ </compile>
+ <compile files="IntertypeOverrides2.java">
+ <message kind="error" line="8" text="void Sub.m() cannot override void Super.m(); overridden method is static"/>
+ </compile>
+ <compile files="Superclass.java,Subclass.java,Aspect1.java">
+ <message file="Aspect1.java" kind="error" line="2"
+ text="void Subclass.staticMethod() cannot override void Superclass.staticMethod(); overridden method is static"/>
+ </compile>
+ <compile files="Superclass.java,Subclass.java,Aspect2.java">
+ <message file="Aspect2.java" kind="error" line="2"
+ text="void Subclass.nonstaticMethod() cannot override void Superclass.nonstaticMethod(); overriding method is static"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="if(false) optimisation" pr="48990">
+ <compile files="IfFalse.aj"/>
+ <run class="IfFalse"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="if(true) optimisation" pr="48990">
+ <compile files="IfTrue.aj"/>
+ <run class="IfTrue"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractITDs"
+ pr="64331" title="java.lang.NullPointerException in WeaverMessageHandler class">
+ <compile files="A.java,C.java" aspectpath="B.jar">
+ <message kind="error" line="1" text="must implement abstract inter-type declaration: void A.foo()"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/pr64262"
+ title="ClassCastException at BcelRenderer.java:169" pr="64262">
+ <compile files="PrimitiveCoercionInExactTypePatternMatching.java"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="61536" title="Front-end bug, shouldn't allow patterns of the form foo.., should be foo..*">
+ <compile files="EllipsesStar.java">
+ <message kind="error" line="3" text="Syntax error on token"/>
+ <message kind="error" line="4" text="Syntax error on token"/>
+ <message kind="error" line="5" text="Syntax error on token"/>
+ <message kind="error" line="6" text="Syntax error on token"/>
+ <message kind="error" line="8" text="Syntax error on token"/>
+ <message kind="error" line="10" text="Syntax error on token"/>
+ <message kind="error" line="12" text="Syntax error on token"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ pr="67774" title="Nullpointer-Exception when defining a withincode() pointcut">
+ <compile files="WithincodeNPE01.java">
+ <!-- there are 3 join points that result in decw match, but 2 are on the same line! -->
+ <message kind="warning" line="2" text="In String ctor"/>
+ <message kind="warning" line="11" text="In String ctor"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="60015"
+ title="NPE, Incorrect XLint:unmatchedSuperTypeInCall warning">
+ <compile files="IncorrectXlintOnInterface.java">
+ </compile>
+ </ajc-test>
diff --git a/tests/src/org/aspectj/systemtest/ajc121/ajc121.xml b/tests/src/org/aspectj/systemtest/ajc121/ajc121.xml
new file mode 100644
index 000000000..8ad54bf32
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc121/ajc121.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/ajc121/ajc121-tests.xml">
+]>
+
+<!-- AspectJ v1.2.1 Tests -->
+
+<suite>
+
+&tests;
+
+</suite>
+
diff --git a/tests/src/org/aspectj/systemtest/aspectpath/AspectPathTests.java b/tests/src/org/aspectj/systemtest/aspectpath/AspectPathTests.java
new file mode 100644
index 000000000..779bedec9
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/aspectpath/AspectPathTests.java
@@ -0,0 +1,116 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.aspectpath;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class AspectPathTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(AspectPathTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml");
+ }
+
+
+ public void test001(){
+ runTest("testing new options");
+ }
+
+ public void test002(){
+ runTest("aspect-declared interface members in libraries - baseline");
+ }
+
+ public void test003(){
+ runTest("aspect-declared interface members in libraries - interfaceOnly.jar");
+ }
+
+ public void test004(){
+ runTest("aspect-declared interface members in libraries - aspectOnly.jar");
+ }
+
+ public void test005(){
+ runTest("aspect-declared interface members in libraries - aspectedInterfaceOnly.jar");
+ }
+
+ public void test006(){
+ runTest("aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectOnly.jar");
+ }
+
+ public void test007(){
+ runTest("aspect-declared interface members in libraries - aspectedInterfaceOnlyBinary.jar,aspectOnly.jar");
+ }
+
+ public void test008(){
+ runTest("aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectpath=aspectOnly.jar");
+ }
+
+ public void test009(){
+ runTest("aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectpath=aspectOnly.jar");
+ }
+
+ public void test010(){
+ runTest("exception clause for aspect-declared interface methods - positive");
+ }
+
+ public void test011(){
+ runTest("exception clause for aspect-declared interface methods - negative");
+ }
+
+ public void test012(){
+ runTest("exception clause for aspect-declared class methods - positive");
+ }
+
+ public void test013(){
+ runTest("exception clause for aspect-declared class methods - negative");
+ }
+
+ public void test014(){
+ runTest("exception clause for aspect-declared interface methods - positive binary");
+ }
+
+ public void test015(){
+ runTest("exception clause for aspect-declared interface methods - negative binary");
+ }
+
+ public void test016(){
+ runTest("exception clause for aspect-declared class methods - positive binary");
+ }
+
+ public void test017(){
+ runTest("exception clause for aspect-declared class methods - negative binary");
+ }
+
+ public void test018(){
+ runTest("percflow aspects compiled from jars share one instance for all entry points");
+ }
+
+ public void test019(){
+ runTest("(using aspectpath) percflow aspects compiled from jars share one instance for all entry points");
+ }
+
+ public void test020(){
+ runTest("Introduced abstract method on abstract class not implemented by subtype");
+ }
+
+ public void test021(){
+ runTest("Introduced abstract method on interface not implemented by subtype (aspectpath)");
+ }
+
+ public void test022(){
+ runTest("weaving from an aspectpath jar into that same jar..");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/aspectpath/aspectpath-tests.xml b/tests/src/org/aspectj/systemtest/aspectpath/aspectpath-tests.xml
new file mode 100644
index 000000000..9be3b32d3
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/aspectpath/aspectpath-tests.xml
@@ -0,0 +1,198 @@
+<!-- Aspectpath Tests -->
+
+ <!-- .................................... aspectpath tests -->
+ <!-- The jars used by this test can be regenerated with
+ org.aspectj.ajdt.core/testsrc/org.aspectj.ajdt.internal.compiler.batch.BcweaverJarMaker
+ -->
+ <ajc-test dir="new/options11"
+ comment="XXX not validated correct yet"
+ title="testing new options">
+ <compile files="Main.java,injar.jar,Aspect.java"
+ aspectpath="aspectlib1.jar,aspectlib2.jar"/>
+ <!-- can't run until we support classpath including the above jars
+ <run class="Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - baseline">
+ <compile files="lib/LibraryInterface.java,
+ Client.java,
+ LibraryAspect.java"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ comment="prove that LibraryAspect is required"
+ title="aspect-declared interface members in libraries - interfaceOnly.jar">
+ <compile
+ files="Client.java"
+ aspectpath="interfaceOnly.jar">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectOnly.jar">
+ <compile
+ files="lib/LibraryInterface.java,
+ Client.java"
+ aspectpath="aspectOnly.jar"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectedInterfaceOnly.jar"
+ comment="prove aspect is required even if interface is woven"
+ >
+ <compile
+ files="Client.java"
+ classpath="aspectedInterfaceOnly.jar">
+ <message kind="error" line="0" text="LibraryAspect"/>
+ <message kind="error" line="9" text="LibraryInterface"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectOnly.jar"
+ comment="weaving required for implementations of interface?
+ XXX Would prefer to support javac compiles of Client here, mimicked with classpath only"
+ >
+ <compile
+ files="Client.java"
+ classpath="aspectedInterfaceOnly.jar,aspectOnly.jar">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectedInterfaceOnlyBinary.jar,aspectOnly.jar"
+ comment="works if aspect is only on the classpath?, i.e., no weaving XXX need javac run"
+ >
+ <compile
+ files="Client.java"
+ classpath="aspectedInterfaceOnlyBinary.jar,aspectOnly.jar">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectpath=aspectOnly.jar"
+ comment="can weave to create library, and then weave clients"
+ >
+ <compile
+ files="Client.java"
+ classpath="aspectedInterfaceOnly.jar"
+ aspectpath="aspectOnly.jar"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test dir="new/interfaceLibrary"
+ title="aspect-declared interface members in libraries - aspectedInterfaceOnly.jar,aspectpath=aspectOnly.jar"
+ comment="works if source aspect and binary classpath woven with aspect?
+ should NOT warn about affected type not since affected type is already woven?"
+ >
+ <compile
+ files="Client.java,LibraryAspect.java"
+ classpath="aspectedInterfaceOnly.jar"/>
+
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test
+ dir="bugs/interfaceLibrary"
+ title="exception clause for aspect-declared interface methods - positive">
+ <compile files="Client.java,LibraryAspect.java,lib/LibraryInterface.java"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test
+ dir="bugs/interfaceLibrary"
+ title="exception clause for aspect-declared interface methods - negative">
+ <compile files="ClientCE.java,LibraryAspect.java,lib/LibraryInterface.java">
+ <message kind="error" file="ClientCE.java" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test
+ dir="bugs/interfaceLibrary"
+ title="exception clause for aspect-declared class methods - positive">
+ <compile files="ClassClient.java,LibraryClassAspect.java,lib/LibraryClass.java"/>
+ <run class="ClassClient"/>
+ </ajc-test>
+
+ <ajc-test
+ dir="bugs/interfaceLibrary"
+ title="exception clause for aspect-declared class methods - negative">
+ <compile files="ClassClientCE.java,LibraryClassAspect.java,lib/LibraryClass.java">
+ <message kind="error" file="ClassClientCE.java" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceLibrary"
+ pr="41175"
+ title="exception clause for aspect-declared interface methods - positive binary">
+ <compile files="Client.java" aspectpath="lib.jar"/>
+ <run class="Client"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceLibrary"
+ pr="41175"
+ title="exception clause for aspect-declared interface methods - negative binary">
+ <compile files="ClientCE.java" aspectpath="lib.jar">
+ <message kind="error" file="ClientCE.java" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceLibrary"
+ pr="41175"
+ title="exception clause for aspect-declared class methods - positive binary">
+ <compile files="ClassClient.java" aspectpath="libClass.jar"/>
+ <run class="ClassClient"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interfaceLibrary"
+ pr="41175"
+ title="exception clause for aspect-declared class methods - negative binary">
+ <compile files="ClassClientCE.java" aspectpath="libClass.jar">
+ <message kind="error" file="ClassClientCE.java" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/perCflowAndJar"
+ pr="41359"
+ title="percflow aspects compiled from jars share one instance for all entry points">
+ <compile files="PerCFlowCompileFromJar.java,PerCFlowCompileFromJarTest.java"/>
+ <run class="PerCFlowCompileFromJarTest"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/perCflowAndJar"
+ pr="41359"
+ title="(using aspectpath) percflow aspects compiled from jars share one instance for all entry points">
+ <compile files="PerCFlowCompileFromJarTest.java"
+ aspectpath="lib.jar"/>
+ <run class="PerCFlowCompileFromJarTest"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on abstract class not implemented by subtype">
+ <compile files="abstractClass/C.java"
+ aspectpath="abstractClass/jars/AandB.jar">
+ <message kind="error" line="1"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on interface not implemented by subtype (aspectpath)">
+ <compile files="interface/C.java"
+ aspectpath="interface/jars/AandB.jar" />
+ <run class="C"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="43714"
+ title="weaving from an aspectpath jar into that same jar.." >
+ <compile files="WeaveLocal.java" aspectpath="notAJar.jar" outjar="notAJar.jar" >
+ </compile>
+ </ajc-test>
+
+
diff --git a/tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml b/tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml
new file mode 100644
index 000000000..ba587fe9e
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/aspectpath/aspectpath-tests.xml">
+]>
+
+<!-- Aspectpath Tests -->
+
+<suite>
+
+&tests;
+
+</suite>
+
diff --git a/tests/src/org/aspectj/systemtest/base/BaseTests.java b/tests/src/org/aspectj/systemtest/base/BaseTests.java
new file mode 100644
index 000000000..37cdd7363
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/base/BaseTests.java
@@ -0,0 +1,188 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.base;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class BaseTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(BaseTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/base/baseTests.xml");
+ }
+
+
+ public void test001(){
+ runTest("static and non-static before methods -- one file");
+ }
+
+ public void test002(){
+ runTest("static and non-static before methods -- many files");
+ }
+
+ public void test003(){
+ runTest("this redirection in non-static before methods");
+ }
+
+ public void test004(){
+ runTest("DEPRECATED: introductions");
+ }
+
+ public void test005(){
+ runTest("before constructors -- one file");
+ }
+
+ public void test006(){
+ runTest("advise weaves find methods typed to builtins or non-woven classes");
+ }
+
+ public void test007(){
+ runTest("make sure new weaves work inside of packages");
+ }
+
+ public void test008(){
+ runTest("make sure new weaves work inside of packages (again)");
+ }
+
+ public void test009(){
+ runTest("Inheritance of class and aspect vars in weaves");
+ }
+
+ public void test010(){
+ runTest("Accessibility of class and aspect members from inside weaves");
+ }
+
+ public void test011(){
+ runTest("Packaged aspects referring to packaged classes");
+ }
+
+ public void test012(){
+ runTest("Inheritance of methods advised by aspects");
+ }
+
+ public void test013(){
+ runTest("Inherited weaves on constructor");
+ }
+
+ public void test014(){
+ runTest("Initializers in Aspect and Class Bodies");
+ }
+
+ public void test015(){
+ runTest("Weaver Resolution of method names in method calls passed as args");
+ }
+
+ public void test016(){
+ runTest("DEPRECATED: Introduce constructor with class inheritance");
+ }
+
+ public void test017(){
+ runTest("empty and singular patterns on modifiers and throws");
+ }
+
+ public void test018(){
+ runTest("DEPRECATED: Introduce of constructors");
+ }
+
+ public void test019(){
+ runTest("Local declarations in advise bodies");
+ }
+
+ public void test020(){
+ runTest("advises on introduced methods and constructors");
+ }
+
+ public void test021(){
+ runTest("DEPRECATED: Method introduction into interface implemented by abstract class");
+ }
+
+ public void test022(){
+ runTest("Crossing super calls in constructors");
+ }
+
+ public void test023(){
+ runTest("empty modifier pattern");
+ }
+
+ public void test024(){
+ runTest("Alpha conversion of argument names in designators");
+ }
+
+ public void test025(){
+ runTest("advice uses its own formals to get actuals");
+ }
+
+ public void test026(){
+ runTest("DEPRECATED: introduce weaves can use this");
+ }
+
+ public void test027(){
+ runTest("DEPRECATED: introduce of abstract methods works");
+ }
+
+ public void test028(){
+ runTest("multiple arounds successfully intercept and return own values");
+ }
+
+ public void test029(){
+ runTest("proper matching of overloaded constructors");
+ }
+
+ public void test030(){
+ runTest("proper handling of formals in catch advice");
+ }
+
+ public void test031(){
+ runTest("proper values for thisJoinPoint attributes");
+ }
+
+ public void test032(){
+ runTest("supers, supers, supers");
+ }
+
+ public void test033(){
+ runTest("operations on private and protected aspect members (++, -- in partciular)");
+ }
+
+ public void test034(){
+ runTest("only register things once");
+ }
+
+ public void test035(){
+ runTest("inner aspects and around");
+ }
+
+ public void test036(){
+ runTest("aspect inheritance and advice, introduction");
+ }
+
+ public void test037(){
+ runTest("thisResultObject for primitives");
+ }
+
+ public void test038(){
+ runTest("introductions calling super.");
+ }
+
+ public void test039(){
+ runTest("allow one argument calls even when there's a comma in the arglist");
+ }
+
+ public void test040(){
+ runTest("advice on calls to static methods even works when called on super");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/base/baseTests-tests.xml b/tests/src/org/aspectj/systemtest/base/baseTests-tests.xml
new file mode 100644
index 000000000..264c03fab
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/base/baseTests-tests.xml
@@ -0,0 +1,263 @@
+<!-- Base Tests -->
+
+ <ajc-test dir="base/test100"
+ title="static and non-static before methods -- one file"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test101"
+ title="static and non-static before methods -- many files"
+ keywords="from-base">
+ <compile files="Driver.java,Foo.java,Bar.java,Pos.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test102"
+ title="this redirection in non-static before methods" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test103" title="DEPRECATED: introductions"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test104" title="before constructors -- one file"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test105"
+ title="advise weaves find methods typed to builtins or non-woven classes"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test106"
+ title="make sure new weaves work inside of packages" keywords="from-base">
+ <compile files="Driver.java,pkg/Obj.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test107"
+ title="make sure new weaves work inside of packages (again)"
+ keywords="from-base">
+ <compile
+ files="Driver.java,C1.java,C2.java,pack1/Foo.java,pack2/Foo.java,pack3/Foo.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test108"
+ title="Inheritance of class and aspect vars in weaves"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test109"
+ title="Accessibility of class and aspect members from inside weaves"
+ keywords="from-base">
+ <compile files="Driver.java,Aspect.java,Foo.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test110"
+ title="Packaged aspects referring to packaged classes"
+ keywords="from-base">
+ <compile files="Driver.java,pAspect/Aspect.java,pClass/Class.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test111"
+ title="Inheritance of methods advised by aspects" keywords="from-base">
+ <compile
+ files="Driver.java,SubClass.java,SuperClass.java,SuperAspect.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test112" title="Inherited weaves on constructor"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test113" title="Initializers in Aspect and Class Bodies"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test114"
+ title="Weaver Resolution of method names in method calls passed as args"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test115"
+ title="DEPRECATED: Introduce constructor with class inheritance"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test116"
+ title="empty and singular patterns on modifiers and throws"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test118" title="DEPRECATED: Introduce of constructors"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test119" title="Local declarations in advise bodies"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+
+ <ajc-test dir="base/test121"
+ title="advises on introduced methods and constructors"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test122"
+ title="DEPRECATED: Method introduction into interface implemented by abstract class"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test123" title="Crossing super calls in constructors"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test124" title="empty modifier pattern"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test125"
+ title="Alpha conversion of argument names in designators"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test127"
+ title="advice uses its own formals to get actuals" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test128"
+ title="DEPRECATED: introduce weaves can use this" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test129"
+ title="DEPRECATED: introduce of abstract methods works"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test130"
+ title="multiple arounds successfully intercept and return own values"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test132"
+ title="proper matching of overloaded constructors" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test134"
+ title="proper handling of formals in catch advice" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test135"
+ title="proper values for thisJoinPoint attributes" keywords="from-base">
+ <compile
+ files="Driver.java,JoinPointFields.java,TopFoo.java,pack/PackFoo.java,pack/JoinPointFields.java,pack/PackJoinPointFields.java"/>
+ <run class="test135.Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test136" title="supers, supers, supers"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test137"
+ title="operations on private and protected aspect members (++, -- in partciular)"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test138" title="only register things once"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test139" title="inner aspects and around"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test140"
+ title="aspect inheritance and advice, introduction" keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test141" title="thisResultObject for primitives"
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test142" title="introductions calling super."
+ keywords="from-base">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test143" pr="384"
+ title="allow one argument calls even when there's a comma in the arglist"
+ keywords="from-base">
+ <compile files="OneArgCallsIsOkay.java"/>
+ <run class="OneArgCallsIsOkay"/>
+ </ajc-test>
+
+ <ajc-test dir="base/test144"
+ title="advice on calls to static methods even works when called on super"
+ keywords="from-base">
+ <compile files="SuperStaticCallJoinPoint.java"/>
+ <run class="SuperStaticCallJoinPoint"/>
+ </ajc-test>
diff --git a/tests/src/org/aspectj/systemtest/base/baseTests.xml b/tests/src/org/aspectj/systemtest/base/baseTests.xml
new file mode 100644
index 000000000..420567395
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/base/baseTests.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/base/baseTests-tests.xml">
+]>
+<!-- Base Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/design/DesignTests.java b/tests/src/org/aspectj/systemtest/design/DesignTests.java
new file mode 100644
index 000000000..8a3248189
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/design/DesignTests.java
@@ -0,0 +1,80 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.design;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class DesignTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(DesignTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/design/design.xml");
+ }
+
+
+ public void test001(){
+ runTest("initial tests for new introduction style");
+ }
+
+ public void test002(){
+ runTest("overriding of introduced methods and accessibility");
+ }
+
+ public void test003(){
+ runTest("within and introductions behaves correctly");
+ }
+
+ public void test004(){
+ runTest("correct inheritance of multiple concrete methods");
+ }
+
+ public void test005(){
+ runTest("errors in inheritance of multiple concrete methods");
+ }
+
+ public void test006(){
+ runTest("declared exceptions are checked correctly on intros (errors)");
+ }
+
+ public void test007(){
+ runTest("declared exceptions are checked correctly on intros");
+ }
+
+ public void test008(){
+ runTest("Joinpoint is not created for foo(String) when before() advice is present.");
+ }
+
+ public void test009(){
+ runTest("more tests of eachobject with some difficult typing issues");
+ }
+
+ public void test010(){
+ runTest("eachobject: eachobject(receptions(...)) [eachobject]");
+ }
+
+ public void test011(){
+ runTest("Checking new joinpoints");
+ }
+
+ public void test012(){
+ runTest("eachobject: simple test [eachobject] (still)");
+ }
+
+ public void test013(){
+ runTest("scope issues with introduction (needs more work)");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/design/design.xml b/tests/src/org/aspectj/systemtest/design/design.xml
new file mode 100644
index 000000000..51cc93173
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/design/design.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd" [
+<!ENTITY designTests SYSTEM "../tests/src/org/aspectj/systemtest/design/designtest.xml">
+]>
+
+<!-- Language Design Tests -->
+
+<suite>
+
+&designTests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/design/designtest.xml b/tests/src/org/aspectj/systemtest/design/designtest.xml
new file mode 100644
index 000000000..112d9b6c1
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/design/designtest.xml
@@ -0,0 +1,94 @@
+ <ajc-test dir="design/intro"
+ title="initial tests for new introduction style" keywords="from-design">
+ <compile files="Simple.java"/>
+ <run class="Simple"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro"
+ title="overriding of introduced methods and accessibility"
+ keywords="from-design">
+ <compile files="Overriding.java"/>
+ <run class="Overriding"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro"
+ title="within and introductions behaves correctly" keywords="from-design">
+ <compile files="Within.java"/>
+ <run class="Within"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro" pr="570"
+ title="correct inheritance of multiple concrete methods"
+ keywords="from-design">
+ <compile files="MultiInheritCP.java"/>
+ <run class="MultiInheritCP"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro" pr="570"
+ title="errors in inheritance of multiple concrete methods"
+ keywords="from-design">
+ <compile files="MultiInheritCF.java">
+ <message kind="error" line="21"/>
+ <message kind="error" line="41"/>
+ <message kind="error" line="42"/>
+ <message kind="error" line="43"/>
+ <message kind="error" line="45"/>
+ <message kind="error" line="46"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="design/intro"
+ title="declared exceptions are checked correctly on intros (errors)">
+ <compile files="ExceptionsCF.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="23"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="design/intro"
+ title="declared exceptions are checked correctly on intros">
+ <compile files="ExceptionsCP.java"/>
+ <run class="ExceptionsCP"/>
+ </ajc-test>
+
+ <ajc-test dir="design/reflect"
+ title="Joinpoint is not created for foo(String) when before() advice is present."
+ keywords="from-design">
+ <compile files="SimpleAround1.java"/>
+ <run class="SimpleAround1"/>
+ </ajc-test>
+
+ <ajc-test dir="design/eachobject"
+ title="more tests of eachobject with some difficult typing issues"
+ keywords="from-design">
+ <compile files="Tricky3.java"/>
+ <run class="Tricky3"/>
+ </ajc-test>
+
+ <ajc-test dir="design/eachobject"
+ title="eachobject: eachobject(receptions(...)) [eachobject]"
+ keywords="from-design">
+ <compile files="Tricky1.java"/>
+ <run class="Tricky1"/>
+ </ajc-test>
+
+ <ajc-test dir="design/reflect" title="Checking new joinpoints"
+ keywords="from-design">
+ <compile files="Coverage.java"/>
+ <run class="Coverage"/>
+ </ajc-test>
+
+ <ajc-test dir="design/eachobject"
+ title="eachobject: simple test [eachobject] (still)"
+ keywords="from-design">
+ <compile files="Simple.java"/>
+ <run class="Simple"/>
+ </ajc-test>
+
+ <ajc-test dir="design/intro"
+ title="scope issues with introduction (needs more work)"
+ keywords="from-design">
+ <compile files="p1/ScopeIssues.java,p1/C1.java"/>
+ <run class="p1.ScopeIssues"/>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/incremental/IncrementalTests.java b/tests/src/org/aspectj/systemtest/incremental/IncrementalTests.java
new file mode 100644
index 000000000..fd7c1fa5e
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/incremental/IncrementalTests.java
@@ -0,0 +1,194 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.incremental;
+
+import java.io.File;
+
+import junit.framework.Test;
+
+import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.tools.ajc.CompilationResult;
+import org.aspectj.util.FileUtil;
+
+public class IncrementalTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(IncrementalTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/incremental/incremental.xml");
+ }
+
+
+ public void test001() throws Exception {
+ runTest("expect class added in initial incremental tests");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("src.20/main/Main.java","src/main/Main.java");
+ assertAdded("main/Target.class");
+ run("main.Main");
+ }
+
+ public void test002() throws Exception {
+ runTest("expect class removed in initial incremental tests");
+ nextIncrement(false);
+ assertAdded("main/Target.class");
+ copyFileAndDoIncrementalBuild("src.20/main/Main.java","src/main/Main.java");
+ assertDeleted("main/Target.class");
+ run("main.Main");
+ }
+
+ public void test003() throws Exception {
+ runTest("expect class updated in initial incremental tests");
+ long lastTime = nextIncrement(true);
+ copyFileAndDoIncrementalBuild("src.20/main/Main.java","src/main/Main.java");
+ assertUpdated("main/Main.class",lastTime);
+ run("main.Main");
+ }
+
+ public void test004() throws Exception {
+ runTest("add file with class");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("src.20/main/Target.java","src/main/Target.java");
+ assertAdded("main/Target.class");
+ long lastTime = nextIncrement(true);
+ copyFileAndDoIncrementalBuild("src.30/main/Main.java","src/main/Main.java");
+ assertUpdated("main/Main.class",lastTime);
+ run("main.Main");
+ }
+
+ public void test005()throws Exception {
+ runTest("delete source file before incremental compile");
+ nextIncrement(false);
+ MessageSpec messageSpec = new MessageSpec(null,newMessageList(new Message(6,"delete/Target.java",null,null)));
+ deleteFileAndDoIncrementalBuild("src/delete/DeleteMe.java",messageSpec);
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("src.30/delete/Target.java","src/delete/Target.java");
+ run("delete.Main");
+ }
+
+ public void test006() throws Exception {
+ runTest("do everything in default package (sourceroots)");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("changes/Target.20.java","src/Target.java");
+ run("Target");
+ long lastTime = nextIncrement(true);
+ copyFileAndDoIncrementalBuild("changes/Main.30.java","src/Main.java");
+ assertUpdated("Main.class",lastTime);
+ nextIncrement(false);
+ MessageSpec messageSpec = new MessageSpec(null,newMessageList(new Message(6,"Main.java",null,null)));
+ deleteFileAndDoIncrementalBuild("src/Target.java",messageSpec);
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("changes/Main.50.java","src/Main.java");
+ run("Main");
+ }
+
+ public void test007() throws Exception {
+ runTest("change sources in default package");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("changes/Main.20.java","src/Main.java");
+ run("Main");
+ }
+
+ public void test008() throws Exception {
+ runTest("change source");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("changes/Main.20.java","src/app/Main.java");
+ run("app.Main");
+ }
+
+ public void test009() throws Exception {
+ runTest("incrementally change only string literal, still expect advice");
+ long lastTime = nextIncrement(true);
+ copyFileAndDoIncrementalBuild("changes/Main.20.java","src/packageOne/Main.java");
+ assertUpdated("packageOne/Main.class",lastTime);
+ run("packageOne.Main",new String[] {"in longer packageOne.Main.main(..)",
+ "before main packageOne.Main"},
+ null);
+ }
+
+ public void test010() throws Exception {
+ runTest("add aspect source file and check world is rewoven");
+ nextIncrement(false);
+ copyFileAndDoIncrementalBuild("changes/Detour.20.java","src/Detour.java");
+ assertAdded("Detour.class");
+ run("Main");
+ }
+
+ public void test011() throws Exception {
+ runTest("make sure additional classes generated during weave are deleted with src class file");
+ nextIncrement(false);
+ assertTrue("AdviceOnIntroduced$AjcClosure1.class exists",
+ new File(ajc.getSandboxDirectory(),"AdviceOnIntroduced$AjcClosure1.class").exists());
+ deleteFileAndDoIncrementalBuild("src/AdviceOnIntroduced.java");
+ assertDeleted("AdviceOnIntroduced$AjcClosure1.class");
+ }
+
+ public void test012() throws Exception {
+ runTest("incremental with aspect-driven full rebuild");
+ nextIncrement(false);
+ MessageSpec messageSpec = new MessageSpec(newMessageList(new Message(4,"Main.java",null,null)),null);
+ copyFileAndDoIncrementalBuild("changes/Aspect.20.java","src/Aspect.java",messageSpec);
+ run("Main");
+ }
+
+ private long nextIncrement(boolean doWait) {
+ long time = System.currentTimeMillis();
+ if (doWait) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException intEx) {}
+ }
+ return time;
+ }
+
+ private void copyFileAndDoIncrementalBuild(String from, String to) throws Exception {
+ String dir = getCurrentTest().getDir();
+ FileUtil.copyFile(new File(dir + File.separator + from),
+ new File(ajc.getSandboxDirectory(),to));
+ CompilationResult result = ajc.doIncrementalCompile();
+ assertNoMessages(result,"Expected clean compile from test '" + getCurrentTest().getTitle() + "'");
+ }
+
+ private void copyFileAndDoIncrementalBuild(String from, String to, MessageSpec expectedResults) throws Exception {
+ String dir = getCurrentTest().getDir();
+ FileUtil.copyFile(new File(dir + File.separator + from),
+ new File(ajc.getSandboxDirectory(),to));
+ CompilationResult result = ajc.doIncrementalCompile();
+ assertMessages(result,"Test '" + getCurrentTest().getTitle() + "' did not produce expected messages",expectedResults);
+ }
+
+
+ private void deleteFileAndDoIncrementalBuild(String file, MessageSpec expectedResult) throws Exception {
+ new File(ajc.getSandboxDirectory(),file).delete();
+ CompilationResult result = ajc.doIncrementalCompile();
+ assertMessages(result,"Test '" + getCurrentTest().getTitle() + "' did not produce expected messages",expectedResult);
+ }
+
+ private void deleteFileAndDoIncrementalBuild(String file) throws Exception {
+ deleteFileAndDoIncrementalBuild(file,MessageSpec.EMPTY_MESSAGE_SET);
+ }
+
+ private void assertAdded(String file) {
+ assertTrue("File " + file + " should have been added",
+ new File(ajc.getSandboxDirectory(),file).exists());
+ }
+
+ private void assertDeleted(String file) {
+ assertFalse("File " + file + " should have been deleted",
+ new File(ajc.getSandboxDirectory(),file).exists());
+ }
+
+ private void assertUpdated(String file, long sinceTime) {
+ File f = new File(ajc.getSandboxDirectory(),file);
+ assertTrue("File " + file + " should have been updated",f.lastModified() > sinceTime);
+ }
+}
+
diff --git a/tests/src/org/aspectj/systemtest/incremental/incremental-junit-tests.xml b/tests/src/org/aspectj/systemtest/incremental/incremental-junit-tests.xml
new file mode 100644
index 000000000..f2f72c9f0
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/incremental/incremental-junit-tests.xml
@@ -0,0 +1,197 @@
+<!-- Incremental compilation Tests -->
+
+ <ajc-test dir="incrementalju/initialTests/classAdded"
+ title="expect class added in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="main.Main"/>
+ <!--
+ <inc-compile tag="20" >
+ <dir-changes added="main.Target"/>
+ </inc-compile>
+ <run class="main.Main" skipTester="true"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/classRemoved"
+ title="expect class removed in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="main.Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes removed="main.Target"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/classUpdated"
+ title="expect class updated in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="main.Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes updated="main.Main"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/sourceAdded"
+ title="add file with class"
+ comment="only expecting pickup if sourceroots"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="main.Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes added="main.Target"/>
+ </inc-compile>
+ <inc-compile tag="30">
+ <dir-changes updated="main.Main"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/sourceDeleted"
+ title="delete source file before incremental compile"
+ comment="build config should permit file deletions for incremental (sourceroots)"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="delete.Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes removed="delete.DeleteMe"/>
+ <message kind="error" line="6" file="delete/Target.java"/>
+ </inc-compile>
+ <inc-compile tag="30"/>
+ <run class="delete.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/defaultPackage"
+ title="do everything in default package (sourceroots)"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes added="Target"/>
+ </inc-compile>
+ <run class="Target" skipTester="true"/>
+ <inc-compile tag="30">
+ <dir-changes updated="Main"/>
+ </inc-compile>
+ <run class="Main" skipTester="true"/>
+ <inc-compile tag="40">
+ <message kind="error" line="6" file="Main.java"/>
+ </inc-compile>
+ <inc-compile tag="50"/>
+ <run class="Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/defaultPackage"
+ keywords="incremental-test"
+ title="change sources in default package">
+ <compile
+ staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="Main"/>
+ <!--
+ <inc-compile tag="20"/>
+ <run class="Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/interPackage"
+ keywords="incremental-test"
+ title="change source">
+ <compile
+ staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="app.Main"/>
+ <!--
+ <inc-compile tag="20"/>
+ <run class="app.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/stringliteral"
+ keywords="incremental-test"
+ title="incrementally change only string literal, still expect advice">
+ <compile staging="true" options="-incremental"
+ sourceroots="src"/>
+ <run class="packageOne.Main"
+ options="in packageOne.Main.main(..),before main packageOne.Main"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes updated="packageOne.Main"/>
+ </inc-compile>
+ <run class="packageOne.Main"
+ options="in longer packageOne.Main.main(..),
+ before main packageOne.Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/aspectSourceAdded"
+ title="add aspect source file and check world is rewoven"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <!--
+ <inc-compile tag="20">
+ <dir-changes added="Detour"/>
+ </inc-compile>
+ <run class="Main"/>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/initialTests/classWAroundClosureRemoved"
+ title="make sure additional classes generated during weave are deleted with src class file"
+ keywords="incremental-test">
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <!--
+ <inc-compile tag="20" >
+ <dir-changes removed="AdviceOnIntroduced$AjcClosure1"/>
+ </inc-compile>
+ -->
+ </ajc-test>
+
+ <ajc-test dir="incrementalju/full-rebuild"
+ pr="59895"
+ title="incremental with aspect-driven full rebuild">
+ <compile
+ staging="true"
+ sourceroots="src"
+ options="-incremental">
+ <message kind="error" line="3" file="Aspect.java"/>
+ </compile>
+ <!--
+ <inc-compile tag="20">
+ <message kind="warning" line="4" file="Main.java"/>
+ </inc-compile>
+ <run class="Main"/>
+ -->
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/incremental/incremental-tests.xml b/tests/src/org/aspectj/systemtest/incremental/incremental-tests.xml
new file mode 100644
index 000000000..24b7a234a
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/incremental/incremental-tests.xml
@@ -0,0 +1,183 @@
+<!-- Incremental compilation Tests -->
+
+ <ajc-test dir="incremental/initialTests/classAdded"
+ title="expect class added in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="main.Main"/>
+ <inc-compile tag="20" >
+ <dir-changes added="main.Target"/>
+ </inc-compile>
+ <run class="main.Main" skipTester="true"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/classRemoved"
+ title="expect class removed in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="main.Main"/>
+ <inc-compile tag="20">
+ <dir-changes removed="main.Target"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/classUpdated"
+ title="expect class updated in initial incremental tests"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="main.Main"/>
+ <inc-compile tag="20">
+ <dir-changes updated="main.Main"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/sourceAdded"
+ title="add file with class"
+ comment="only expecting pickup if sourceroots"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="main.Main"/>
+ <inc-compile tag="20">
+ <dir-changes added="main.Target"/>
+ </inc-compile>
+ <inc-compile tag="30">
+ <dir-changes updated="main.Main"/>
+ </inc-compile>
+ <run class="main.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/sourceDeleted"
+ title="delete source file before incremental compile"
+ comment="build config should permit file deletions for incremental (sourceroots)"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="delete.Main"/>
+ <inc-compile tag="20">
+ <dir-changes removed="delete.DeleteMe"/>
+ <message kind="error" line="6" file="delete/Target.java"/>
+ </inc-compile>
+ <inc-compile tag="30"/>
+ <run class="delete.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/expClasses"
+ title="expected class tree" >
+ <compile files="Main.java">
+ <dir-changes expDir="expected"/>
+ </compile>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/defaultPackage"
+ title="do everything in default package (sourceroots)"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <run class="Main"/>
+ <inc-compile tag="20">
+ <dir-changes added="Target"/>
+ </inc-compile>
+ <run class="Target" skipTester="true"/>
+ <inc-compile tag="30">
+ <dir-changes updated="Main"/>
+ </inc-compile>
+ <run class="Main" skipTester="true"/>
+ <inc-compile tag="40">
+ <message kind="error" line="6" file="Main.java"/>
+ </inc-compile>
+ <inc-compile tag="50"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/defaultPackage"
+ keywords="incremental-test"
+ title="change sources in default package">
+ <compile
+ staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="Main"/>
+ <inc-compile tag="20"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/interPackage"
+ keywords="incremental-test"
+ title="change source">
+ <compile
+ staging="true"
+ options="-incremental"
+ sourceroots="src"/>
+ <run class="app.Main"/>
+ <inc-compile tag="20"/>
+ <run class="app.Main"/>
+ </ajc-test>
+
+
+ <ajc-test dir="incremental/stringliteral"
+ keywords="incremental-test"
+ title="incrementally change only string literal, still expect advice">
+ <compile staging="true" options="-incremental"
+ sourceroots="src"/>
+ <run class="packageOne.Main"
+ options="in packageOne.Main.main(..),
+ before main packageOne.Main"/>
+ <inc-compile tag="20">
+ <dir-changes updated="packageOne.Main"/>
+ </inc-compile>
+ <run class="packageOne.Main"
+ options="in longer packageOne.Main.main(..),
+ before main packageOne.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/aspectSourceAdded"
+ title="add aspect source file and check world is rewoven"
+ keywords="incremental-test" >
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <inc-compile tag="20">
+ <dir-changes added="Detour"/>
+ </inc-compile>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="incremental/initialTests/classWAroundClosureRemoved"
+ title="make sure additional classes generated during weave are deleted with src class file"
+ keywords="incremental-test">
+ <compile staging="true"
+ options="-incremental"
+ sourceroots="."/>
+ <inc-compile tag="20" >
+ <dir-changes removed="AdviceOnIntroduced$AjcClosure1"/>
+ </inc-compile>
+ </ajc-test>
+
+ <ajc-test dir="incremental/full-rebuild"
+ pr="59895"
+ title="incremental with aspect-driven full rebuild">
+ <compile
+ staging="true"
+ sourceroots="src"
+ options="-incremental">
+ <message kind="error" line="3" file="Aspect.java"/>
+ </compile>
+ <inc-compile tag="20">
+ <message kind="warning" line="4" file="Main.java"/>
+ </inc-compile>
+ <run class="Main"/>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/incremental/incremental.xml b/tests/src/org/aspectj/systemtest/incremental/incremental.xml
new file mode 100644
index 000000000..39d6a6823
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/incremental/incremental.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/incremental/incremental-junit-tests.xml">
+]>
+<!-- Incremental compilation Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/inpath/InPathTests.java b/tests/src/org/aspectj/systemtest/inpath/InPathTests.java
new file mode 100644
index 000000000..6bd3bf749
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/inpath/InPathTests.java
@@ -0,0 +1,96 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.inpath;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class InPathTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(InPathTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/inpath/inpath.xml");
+ }
+
+
+ public void test001(){
+ runTest("source for options -injars");
+ }
+
+ public void test002(){
+ runTest("options -injars");
+ }
+
+ public void test003(){
+ runTest("options -injars checking declare parents interactions");
+ }
+
+ public void test004(){
+ runTest("The compiler crashes when using aspect libraries created without using -noweave");
+ }
+
+ public void test005(){
+ runTest("declare warnings on main");
+ }
+
+ public void test006(){
+ runTest("declare warnings on binary javac 1.4 classes");
+ }
+
+ public void test007(){
+ runTest("declare warnings on binary ajc 1.1 classes");
+ }
+
+ public void test008(){
+ runTest("Weaving rt.jar results in stack overflow");
+ }
+
+ public void test009(){
+ runTest("Weaving failure when using injars (no jars)");
+ }
+
+ public void test010(){
+ runTest("Weaving failure when using injars (on aspectpath)");
+ }
+
+ public void test011(){
+ runTest("Weaving failure when using injars (on classpath)");
+ }
+
+ public void test012(){
+ runTest("Weaving failure when using injars (actual injars)");
+ }
+
+ public void test013(){
+ runTest("Introduced abstract method on interface not implemented by subtype (injars)");
+ }
+
+ public void test014(){
+ runTest("error Type mismatch: cannot convert from java.lang.String to java.lang.String");
+ }
+
+ public void test015(){
+ runTest("declare error binary-weaving NPE");
+ }
+
+ public void test016(){
+ runTest("declare error binary-weaving NPE");
+ }
+
+ public void test017(){
+ runTest("Regression from 1.1: NPE in CompilationResult");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/inpath/inpath-tests.xml b/tests/src/org/aspectj/systemtest/inpath/inpath-tests.xml
new file mode 100644
index 000000000..18d78cf28
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/inpath/inpath-tests.xml
@@ -0,0 +1,296 @@
+<!-- InPath Tests -->
+
+ <!-- .................................... -injars tests -->
+
+ <ajc-test dir="options/injars/simple"
+ title="source for options -injars">
+ <compile files="Simple.java,Main.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="options/injars/simple"
+ title="options -injars">
+ <compile files="Simple.java,main.jar"
+ options="!eclipse"/>
+ <run class="Main"/>
+ </ajc-test>
+
+
+ <ajc-test dir="options/injars/simple" pr="35865"
+ title="options -injars checking declare parents interactions">
+ <compile files="DecParents.java,main.jar"
+ options="!eclipse"/>
+ <run class="DecParents"/>
+ </ajc-test>
+
+ <ajc-test dir="new/options11" pr="36329"
+ comment="the line number might change, we're really interested only in the files here"
+ title="The compiler crashes when using aspect libraries created without using -noweave">
+ <compile files="Main.java,injar.jar,Aspect.java,aspectlib1.jar,aspectlib2.jar">
+ <message kind="error" line="0"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020"
+ title="declare warnings on main">
+ <compile files="aspects/MainWarnings.java,app/Main.java">
+ <message line="6" text="staticinitialization(Main)" kind="warning" file="app/Main.java" />
+ <message line="6" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="8" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="12" text="get(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="14" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="16" text="call(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="19" text="call(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="23" text="initialization(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="23" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="23" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="26" text="execution(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="29" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="31" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="32" text="D.go withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="33" text="handler(RuntimeException)" kind="warning" file="app/Main.java" />
+ <message line="35" text="withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="42" text="withincode(void Main.stop())" kind="warning" file="app/Main.java" />
+ <message line="50" text="preinitialization(app.C.new())" kind="warning" file="app/Main.java" />
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020"
+ title="declare warnings on binary javac 1.4 classes">
+ <compile files="aspects/MainWarnings.java,../injars/app-javac-1.4.jar">
+ <message line="6" text="staticinitialization(Main)" kind="warning" file="app/Main.java" />
+ <message line="6" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="8" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="12" text="get(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="14" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="16" text="call(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="19" text="call(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="23" text="initialization(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="23" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="23" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="26" text="execution(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="29" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="31" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="32" text="D.go withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="33" text="handler(RuntimeException)" kind="warning" file="app/Main.java" />
+ <message line="35" text="withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="42" text="withincode(void Main.stop())" kind="warning" file="app/Main.java" />
+ <message line="50" text="preinitialization(app.C.new())" kind="warning" file="app/Main.java" />
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37023"
+ title="declare warnings on binary ajc 1.1 classes">
+ <compile files="aspects/MainWarnings.java,../injars/app-ajc-1.1.jar">
+ <message line="6" text="staticinitialization(Main)" kind="warning" file="app/Main.java" />
+ <message line="6" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="8" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="12" text="get(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="14" text="set(String Main.staticString)" kind="warning" file="app/Main.java" />
+ <message line="16" text="call(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="19" text="call(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="23" text="initialization(Main.new())" kind="warning" file="app/Main.java" />
+ <message line="23" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="23" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="26" text="execution(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="29" text="get(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="31" text="set(String Main.s)" kind="warning" file="app/Main.java" />
+ <message line="32" text="D.go withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="33" text="handler(RuntimeException)" kind="warning" file="app/Main.java" />
+ <message line="35" text="withincode(void Main.go(String))" kind="warning" file="app/Main.java" />
+ <message line="42" text="withincode(void Main.stop())" kind="warning" file="app/Main.java" />
+ <message line="50" text="preinitialization(app.C.new())" kind="warning" file="app/Main.java" />
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/lines" pr="37758"
+ title="Weaving rt.jar results in stack overflow">
+ <compile files="A.java,big.jar">
+ <!-- message no longer produced as a result of bug fix 44190
+ <message kind="warning" text="manifest not copied"/>
+ -->
+ </compile>
+ <run class="Big"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/moreInterfaceLibrary"
+ pr="41123"
+ title="Weaving failure when using injars (no jars)">
+ <compile
+ files="lib/ExecutionMonitor.aj,model/BusObj.java,model/MonitorBusObj.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/moreInterfaceLibrary"
+ pr="41123"
+ title="Weaving failure when using injars (on aspectpath)">
+ <compile
+ files="model/BusObj.java,model/MonitorBusObj.java"
+ aspectpath="lib.jar">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/moreInterfaceLibrary"
+ pr="41123"
+ title="Weaving failure when using injars (on classpath)">
+ <compile
+ files="model/BusObj.java,model/MonitorBusObj.java"
+ classpath="lib.jar">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/moreInterfaceLibrary"
+ pr="41123"
+ title="Weaving failure when using injars (actual injars)">
+ <compile
+ files="model/BusObj.java,model/MonitorBusObj.java,lib.jar">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/abstractMethods" pr="49784"
+ title="Introduced abstract method on interface not implemented by subtype (injars)">
+ <compile files="interface/C.java,interface/jars/AandB.jar">
+ <message kind="error" line="1"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/StringToString" pr="55341"
+ title="error Type mismatch: cannot convert from java.lang.String to java.lang.String"
+ comment="make helloworld.jar with 'ajc -outjar helloworld.jar HW.java' or run BcweaverJarMaker"
+ keywords="">
+ <compile files="X.java" classpath="helloworld.jar">
+ <message kind="warning" line="3"/>
+ <message kind="warning" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/systemouts"
+ pr="57432"
+ title="declare error binary-weaving NPE">
+ <compile files="injar-debug.jar,A.java">
+ <message kind="error" line="12" file="X.java"/>
+ <message kind="error" line="13" file="X.java"/>
+ <message kind="error" line="20" file="X.java"/>
+ <message kind="error" line="22" file="X.java"/>
+ <message kind="error" line="23" file="X.java"/>
+ <message kind="error" line="27" file="X.java"/>
+ <message kind="error" line="28" file="X.java"/>
+ <message kind="error" line="29" file="X.java"/>
+ <message kind="error" line="30" file="X.java"/>
+ <message kind="error" line="31" file="X.java"/>
+ <message kind="error" line="32" file="X.java"/>
+ <message kind="error" line="33" file="X.java"/>
+ <message kind="error" line="34" file="X.java"/>
+ <message kind="error" line="35" file="X.java"/>
+ <message kind="error" line="36" file="X.java"/>
+ <message kind="error" line="37" file="X.java"/>
+ <message kind="error" line="38" file="X.java"/>
+ <message kind="error" line="39" file="X.java"/>
+ <message kind="error" line="40" file="X.java"/>
+ <message kind="error" line="41" file="X.java"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/systemouts"
+ pr="57432"
+ title="declare error binary-weaving NPE">
+ <compile files="injar-nodebug.jar,A.java">
+ <message kind="error" line="0"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/tooManyErrors"
+ pr="58679"
+ title="Regression from 1.1: NPE in CompilationResult">
+ <compile files="Joinpoints101.jar,DecErrors.aj">
+
+ <message kind="error" line="10"/><message kind="error" line="11"/>
+ <message kind="error" line="12"/><message kind="error" line="13"/>
+ <message kind="error" line="14"/>
+
+ <message kind="error" line="16"/><message kind="error" line="17"/>
+ <message kind="error" line="18"/><message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+
+ <message kind="error" line="22"/><message kind="error" line="23"/>
+ <message kind="error" line="24"/><message kind="error" line="25"/>
+ <message kind="error" line="26"/>
+
+ <message kind="error" line="28"/><message kind="error" line="29"/>
+ <message kind="error" line="30"/><message kind="error" line="31"/>
+ <message kind="error" line="32"/>
+
+ <message kind="error" line="34"/><message kind="error" line="35"/>
+ <message kind="error" line="36"/><message kind="error" line="37"/>
+ <message kind="error" line="38"/>
+
+ <message kind="error" line="40"/><message kind="error" line="41"/>
+ <message kind="error" line="42"/><message kind="error" line="43"/>
+ <message kind="error" line="44"/>
+
+ <message kind="error" line="46"/><message kind="error" line="47"/>
+ <message kind="error" line="48"/><message kind="error" line="49"/>
+ <message kind="error" line="50"/>
+
+ <message kind="error" line="52"/><message kind="error" line="53"/>
+ <message kind="error" line="54"/><message kind="error" line="55"/>
+ <message kind="error" line="56"/>
+
+ <message kind="error" line="58"/><message kind="error" line="59"/>
+ <message kind="error" line="60"/><message kind="error" line="61"/>
+ <message kind="error" line="62"/>
+
+ <message kind="error" line="64"/><message kind="error" line="65"/>
+ <message kind="error" line="66"/><message kind="error" line="67"/>
+ <message kind="error" line="68"/>
+
+ <message kind="error" line="70"/><message kind="error" line="71"/>
+ <message kind="error" line="72"/><message kind="error" line="73"/>
+ <message kind="error" line="74"/>
+
+ <message kind="error" line="76"/><message kind="error" line="77"/>
+ <message kind="error" line="78"/><message kind="error" line="79"/>
+ <message kind="error" line="80"/>
+
+ <message kind="error" line="82"/><message kind="error" line="83"/>
+ <message kind="error" line="84"/><message kind="error" line="85"/>
+ <message kind="error" line="86"/>
+
+ <message kind="error" line="88"/><message kind="error" line="89"/>
+ <message kind="error" line="90"/><message kind="error" line="91"/>
+ <message kind="error" line="92"/>
+
+ <message kind="error" line="94"/><message kind="error" line="95"/>
+ <message kind="error" line="96"/><message kind="error" line="97"/>
+ <message kind="error" line="98"/>
+
+ <message kind="error" line="100"/><message kind="error" line="101"/>
+ <message kind="error" line="102"/><message kind="error" line="103"/>
+ <message kind="error" line="104"/>
+
+ <message kind="error" line="106"/><message kind="error" line="107"/>
+ <message kind="error" line="108"/><message kind="error" line="109"/>
+ <message kind="error" line="110"/>
+
+ <message kind="error" line="112"/><message kind="error" line="113"/>
+ <message kind="error" line="114"/><message kind="error" line="115"/>
+ <message kind="error" line="116"/>
+
+ <message kind="error" line="118"/><message kind="error" line="119"/>
+ <message kind="error" line="120"/><message kind="error" line="121"/>
+ <message kind="error" line="122"/>
+
+ <message kind="error" line="124"/><message kind="error" line="125"/>
+ <message kind="error" line="126"/><message kind="error" line="127"/>
+ <message kind="error" line="128"/>
+
+ <message kind="error" line="130"/>
+
+ </compile>
+ </ajc-test>
+ \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/inpath/inpath.xml b/tests/src/org/aspectj/systemtest/inpath/inpath.xml
new file mode 100644
index 000000000..2c0eac4c7
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/inpath/inpath.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/inpath/inpath-tests.xml">
+]>
+
+<!-- InPath Tests -->
+
+<suite>
+
+&tests;
+
+</suite>
diff --git a/tests/src/org/aspectj/systemtest/java14/Java14Tests.java b/tests/src/org/aspectj/systemtest/java14/Java14Tests.java
new file mode 100644
index 000000000..8bedab1ec
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/java14/Java14Tests.java
@@ -0,0 +1,115 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.java14;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class Java14Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(Java14Tests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/java14/java14.xml");
+ }
+
+
+ public void test001(){
+ runTest("assert flow");
+ }
+
+ public void test002(){
+ runTest("assert flow - 2");
+ }
+
+ public void test003(){
+ runTest("assert typing");
+ }
+
+// bug in eclipse compiler, moved to ajcTestsFailing.xml
+// public void test004(){
+// runTest("assert coverage tests [requires 1.4]");
+// }
+
+// bug in eclipse compiler, moved to ajcTestsFailing.xml
+// public void test005(){
+// runTest("assert coverage tests in one package [requires 1.4]");
+// }
+
+ public void test006(){
+ runTest("compiling asserts in methods");
+ }
+
+ public void test007(){
+ runTest("asserts");
+ }
+
+ public void test008(){
+ runTest("asserts in aspect and declared methods [requires 1.4]");
+ }
+
+ public void test009(){
+ runTest("Does the matrix coverage thing for the new method signatures");
+ }
+
+ public void test010(){
+ runTest("correct types of parameters at call-sites");
+ }
+
+ public void test011(){
+ runTest("target type matching with messy interface hierarchies");
+ }
+
+ public void test012(){
+ runTest("assert tests in introduction [requires 1.4]");
+ }
+
+ public void test013(){
+ runTest("various forms of package name pattern matching work");
+ }
+
+ public void test014(){
+ runTest("assert statement in advice coverage [requires 1.4]");
+ }
+
+ public void test015(){
+ runTest("assert statement in advice [requires 1.4]");
+ }
+
+ public void test016(){
+ runTest("assert and pertarget crashes compiler");
+ }
+
+ public void test017(){
+ runTest("testing that assert works like .class");
+ }
+
+ public void test018(){
+ runTest("JoinPoint Optimization when targetting 1.4");
+ }
+
+ public void test019(){
+ runTest("XLint warning for call PCD's using subtype of defining type (-1.4 -Xlint:ignore)");
+ }
+
+ public void test020(){
+ runTest("XLint warning for call PCD's using subtype of defining type (-1.4)");
+ }
+
+ public void test021(){
+ runTest("Class Literals as non final fields (also assert, and this$0)");
+ }
+
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/java14/java14-tests.xml b/tests/src/org/aspectj/systemtest/java14/java14-tests.xml
new file mode 100644
index 000000000..364c28e4f
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/java14/java14-tests.xml
@@ -0,0 +1,153 @@
+<!-- Java 1.4 Specific Tests -->
+
+ <ajc-test dir="pureJava" title="assert flow"
+ keywords="from-14tests,purejava">
+ <compile options="-source,1.4" files="AssertsCF.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="11"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="assert flow - 2"
+ keywords="from-14tests,purejava">
+ <compile options="-source,1.4" files="AssertsCF2.java">
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="assert typing"
+ keywords="from-14tests,purejava,fail-publicType">
+ <compile options="-source,1.4" files="AssertsCF1.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="compiling asserts in methods"
+ keywords="from-14tests,purejava">
+ <compile options="-source,1.4" files="AssertInMethod.java"/>
+ <run class="AssertInMethod" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="asserts" keywords="from-14tests">
+ <compile options="-source,1.4" files="Asserts.java"/>
+ <run class="Asserts" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="725"
+ title="asserts in aspect and declared methods [requires 1.4]"
+ keywords="from-14tests" comment="not pure java!">
+ <compile options="-source,1.4"
+ files="IntroducedAssertion.java"/>
+ <run class="IntroducedAssertion" vm="1.4"/>
+ </ajc-test>
+
+ <!-- This test case requires bytecode generated according to the declaring type
+ rules in JLS 2nd edition. -1.4 must be passed to the eclipse compiler for
+ this behavior. -->
+ <ajc-test dir="new"
+ title="Does the matrix coverage thing for the new method signatures"
+ keywords="from-resolved_10x">
+ <compile files="MethodSignatures.java" options="-1.4,-Xlint:ignore"/>
+ <run class="MethodSignatures" vm="1.4"/>
+ </ajc-test>
+
+ <!-- This test case requires bytecode generated according to the declaring type
+ rules in JLS 2nd edition. -1.4 must be passed to the eclipse compiler for
+ this behavior. -->
+ <ajc-test dir="new" title="correct types of parameters at call-sites"
+ keywords="from-resolved_10x">
+ <compile files="CallTypes.java" options="-1.4,-Xlint:ignore"/>
+ <run class="CallTypes" vm="1.4"/>
+ </ajc-test>
+
+ <!-- This test case requires bytecode generated according to the declaring type
+ rules in JLS 2nd edition. -1.4 must be passed to the eclipse compiler for
+ this behavior. That means that this case will only work under 1.4. -->
+ <ajc-test dir="new"
+ title="target type matching with messy interface hierarchies"
+ keywords="from-resolved_10x">
+ <compile files="CallTypesI.java" options="-1.4,-Xlint:ignore"/>
+ <run class="CallTypesI" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="assert tests in introduction [requires 1.4]"
+ keywords="from-14tests,fail-unimplemented">
+ <compile options="-source,1.4" files="AssertInIntro.java"/>
+ <run class="AssertInIntro" vm="1.4"/>
+ </ajc-test>
+
+
+ <ajc-test dir="base/test131"
+ title="various forms of package name pattern matching work"
+ keywords="from-broken14usejavac">
+ <compile files="Driver.java,p1/C1.java,p1/p2/C2.java" />
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="657"
+ title="assert statement in advice coverage [requires 1.4]"
+ keywords="from-14tests,fail-in-eclipse">
+ <compile options="-source,1.4" files="AssertInAdvice.java"/>
+ <run class="AssertInAdvice" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="657"
+ title="assert statement in advice [requires 1.4]"
+ keywords="from-14tests,fail-in-eclipse">
+ <compile options="-source,1.4" files="AssertInAdviceBug.java"/>
+ <run class="AssertInAdviceBug" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="28703" title="assert and pertarget crashes compiler">
+ <compile files="EnsureOverriding.java" options="-source,1.4"/>
+ <run class="EnsureOverriding" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/interSpecials" title="testing that assert works like .class"
+ pr="36110">
+ <compile files="p1/C.java,p2/A2.java" options="-source,1.4"/>
+ <run class="p2.A2" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/jpOptimization"
+ pr="45441"
+ title="JoinPoint Optimization when targetting 1.4">
+ <compile
+ files="de/test/MyMain.java,
+ de/test/MyAspect.java"
+ options="-1.4"/>
+ <run class="de.test.MyMain"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="XLint warning for call PCD's using subtype of defining type (-1.4 -Xlint:ignore)"
+ pr="41952"
+ >
+ <compile
+ options="-Xlint:ignore,-1.4"
+ files="DeclaringTypeWarning.java" >
+ <message kind="warning" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="XLint warning for call PCD's using subtype of defining type (-1.4)"
+ pr="41952"
+ >
+ <compile
+ options="-1.4"
+ files="DeclaringTypeWarning.java" >
+ <message kind="warning" line="6" text="declaring type">
+ <source line="14" file="DeclaringTypeWarning.java"/>
+ </message>
+ <message kind="warning" line="12" text="declare warning">
+ <source line="19" file="DeclaringTypeWarning.java"/>
+ </message>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="39711"
+ title="Class Literals as non final fields (also assert, and this$0)">
+ <compile files="ClassLiteralField.java" options="-source,1.4"/>
+ <run vm="1.4" class="ClassLiteralField"/>
+ </ajc-test>
+ \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/java14/java14.xml b/tests/src/org/aspectj/systemtest/java14/java14.xml
new file mode 100644
index 000000000..c25b999cf
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/java14/java14.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/java14/java14-tests.xml">
+]>
+
+<!-- Tests requiring JDK 1.4 or above -->
+
+<suite>
+
+&tests;
+
+</suite>
diff --git a/tests/src/org/aspectj/systemtest/knownlimitations/KnownLimitationsTests.java b/tests/src/org/aspectj/systemtest/knownlimitations/KnownLimitationsTests.java
new file mode 100644
index 000000000..481827125
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/knownlimitations/KnownLimitationsTests.java
@@ -0,0 +1,144 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.knownlimitations;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class KnownLimitationsTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(KnownLimitationsTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/knownlimitations/knownlimitations.xml");
+ }
+
+
+ public void test001(){
+ runTest("DEPRECATED: introduce of variables");
+ }
+
+ public void test002(){
+ runTest("checking the contra-variant errors for typing of proceed");
+ }
+
+ public void test003(){
+ runTest("introduction of static methods and fields on classes and interfaces");
+ }
+
+ public void test004(){
+ runTest("advice on catch clauses");
+ }
+
+ public void test005(){
+ runTest("holding onto proceed calls in a closure-like way");
+ }
+
+ public void test006(){
+ runTest("PR#458 Compiler was incorrectly flagging error in advice on initialization and static initialization");
+ }
+
+ public void test007(){
+ runTest("Introduced type unavailable to instanceof expressions in introduced methods");
+ }
+
+ public void test008(){
+ runTest("enclosing join point not exported properly in pre-initialization join point");
+ }
+
+ public void test009(){
+ runTest("cyclic pointcut definitions");
+ }
+
+ public void test010(){
+ runTest("package typepattern with no packages (in default package)");
+ }
+
+ public void test011(){
+ runTest("flag errors when binding args with indeterminate prefix and suffix");
+ }
+
+ public void test012(){
+ runTest("around and return types + inlining optimizations");
+ }
+
+ public void test013(){
+ runTest("source locations within expressions (hard case of constructor start)");
+ }
+
+ public void test014(){
+ runTest("declaring method on superclass and subclass");
+ }
+
+ public void test015(){
+ runTest("illegal name binding in around cflow");
+ }
+
+ public void test016(){
+ runTest("incrementally change string size and wire in injar classes");
+ }
+
+ public void test017(){
+ runTest("before():execution(new(..)) does not throw NoAspectBoundException");
+ }
+
+ public void test018(){
+ runTest("declare error on handler/method execution with no code on binary ajc 1.1 classes");
+ }
+
+ public void test019(){
+ runTest("declare error on handler/method execution with no code on binary javac 1.4 classes");
+ }
+
+ public void test020(){
+ runTest("CLE: -help usage");
+ }
+
+ public void test021(){
+ runTest("declare warnings on main - constructor execution");
+ }
+
+ public void test022(){
+ runTest("declare warnings on binary javac 1.4 main - constructor execution");
+ }
+
+ public void test023(){
+ runTest("declare warnings on binary ajc 1.1 main - constructor execution");
+ }
+
+ public void test024(){
+ runTest("advice on handler join points should not throw unpermitted checked exceptions");
+ }
+
+ public void test025(){
+ runTest("-nowarn suppresses XLint warnings");
+ }
+
+ public void test026(){
+ runTest("warn:none suppresses XLint warnings");
+ }
+
+ public void test027(){
+ runTest("-nowarn suppresses declare warnings");
+ }
+
+ public void test028(){
+ runTest("-warn:none suppresses declare warnings");
+ }
+
+ public void test029(){
+ runTest("insertion of lots of advice code can make branch offset for if too large");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml b/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml
new file mode 100644
index 000000000..d420885de
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml
@@ -0,0 +1,297 @@
+<!-- Known Limitations -->
+
+ <!-- we're not implementing static inter-type fields on interfaces in 1.1 -->
+ <ajc-test dir="knownLimitations/test117" title="DEPRECATED: introduce of variables"
+ keywords="from-base,knownLimitation">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <!-- we're not implementing this error check in 1.1 -->
+ <ajc-test dir="errors"
+ title="checking the contra-variant errors for typing of proceed"
+ keywords="from-errors,knownLimitation">
+ <compile files="BadAround.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="15"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="22"/>
+ </compile>
+ </ajc-test>
+
+ <!-- we're not implementing static inter-type fields on interfaces in 1.1 -->
+ <ajc-test dir="design/intro"
+ title="introduction of static methods and fields on classes and interfaces"
+ keywords="from-design,knownLimitation">
+ <compile files="Statics.java"/>
+ <run class="Statics"/>
+ </ajc-test>
+
+ <!-- only before advice implemented for handler join points in 1.1 -->
+ <ajc-test dir="new" title="advice on catch clauses"
+ keywords="from-resolved_10x,knownLimitation">
+ <compile files="CatchAdvice.java"/>
+ <run class="CatchAdvice"/>
+ </ajc-test>
+
+ <!-- we will handle this by signalling a weave-time error for any around
+ advice that is applied to a join point which throws checked exceptions
+ that it can't handle. proceeds in closures change the exceptions that
+ around advice can handle to include the greatest lower bound of the
+ checked exceptions that are legally throwable by the proceed.
+ Ideally their should be an -Xlint compile-time warning for ALL
+ cases that could produce weave-time errors.
+ -->
+ <ajc-test dir="new" title="holding onto proceed calls in a closure-like way"
+ keywords="from-resolved_10x,knownLimitation">
+ <compile files="HoldProceed.java"/>
+ <run class="HoldProceed"/>
+ </ajc-test>
+
+ <!-- around advice not implemented on initializer join points -->
+ <ajc-test dir="new" pr="490"
+ title="PR#458 Compiler was incorrectly flagging error in advice on initialization and static initialization"
+ keywords="from-resolved_10x,knownLimitation">
+ <compile files="StaticInitCE.java"/>
+ <run class="StaticInitCE"/>
+ </ajc-test>
+
+ <!-- This behavior is different from 1.0, but we might want to consider allowing it
+ Using the eclipse compiler it would be much easier to permit than forbid. -->
+ <ajc-test dir="new/introTypeMissing"
+ title="Introduced type unavailable to instanceof expressions in introduced methods"
+ keywords="from-resolved_10x,knownLimitation">
+ <compile files="InstanceOf.java,TargetClass.java,Util.java">
+ <message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ <message kind="error" line="22"/>
+ <message kind="error" line="23"/>
+ <message kind="error" line="24"/>
+ <message kind="error" line="25"/>
+ <message kind="error" line="26"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="enclosing join point not exported properly in pre-initialization join point"
+ keywords="from-resolved_10x,knownLimitation">
+ <compile files="PreInitialization.java"/>
+ <run class="PreInitialization"/>
+ </ajc-test>
+
+ <!-- pointcuts aren't checked for circularities unless they're used -->
+ <ajc-test dir="new" pr="568" title="cyclic pointcut definitions"
+ keywords="from-resolved_10rc3,knownLimitation">
+ <compile files="CyclicPointcuts.java">
+ <message kind="error" line="11"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="32"/>
+ <message kind="error" line="43"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="package typepattern with no packages (in default package)"
+ keywords="from-resolved_105,knownLimitation">
+ <compile options="-Xlint" files="TypeNames.java">
+ <message kind="warning" line="34"/>
+ <message kind="warning" line="39"/>
+ <message kind="warning" line="43"/>
+ <message kind="warning" line="47"/>
+ </compile>
+ <run class="TypeNames"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="764"
+ title="flag errors when binding args with indeterminate prefix and suffix"
+ keywords="from-resolved_105,knownLimitation">
+ <compile files="IndeterminateArgsCE.java">
+ <message kind="error" line="67"/>
+ <message kind="error" line="68"/>
+ <message kind="error" line="70"/>
+ <message kind="error" line="72"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="design/around"
+ title="around and return types + inlining optimizations"
+ comment="-XOcodeSize not in 1.1, source uses 1.4 APIs"
+ keywords="from-14tests,knownLimitation">
+ <compile options="-XOcodeSize,-source,1.4"
+ files="ReturnCastProceed.java,StackChecker.java">
+ <message kind="warning" line="68"/>
+ </compile>
+ <run class="ReturnCastProceed" vm="1.4"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="885" keywords="knownLimitation"
+ comment="this behaves differently in 1.3 from 1.4 for unknown reasons, merge with above when resolved"
+ title="source locations within expressions (hard case of constructor start)">
+ <compile files="SourceLocationWithinExprHard.java"/>
+ <run class="SourceLocationWithinExprHard"/>
+ </ajc-test>
+
+ <!-- Can't handle packages named 'aspect' in parser
+ -->
+ <ajc-test dir="new/PR852" pr="852"
+ title="declaring method on superclass and subclass"
+ keywords="knownLimitation">
+ <compile files="aspect/Aspect.java,target/SubClass.java,target/SuperClass.java">
+ <dir-changes added="target.SubClass,target.SuperClass"/>
+ </compile>
+ <run class="aspect.Aspect"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="660" title="illegal name binding in around cflow"
+ keywords="from-resolved_104,knownLimitation">
+ <compile files="ArgsInCflowCf.java">
+ <message kind="error" line="19"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="35"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="incremental/stringliteral"
+ keywords="knownLimitation"
+ title="incrementally change string size and wire in injar classes">
+ <compile staging="true" options="-incremental"
+ files="oneInjar.jar,twoInjar.jar"
+ sourceroots="src"/>
+ <run class="packageOne.Main"
+ options="in packageOne.Main.main(..),
+ before main packageOne.Main"/>
+ <inc-compile tag="20">
+ <dir-changes updated="packageOne.Main"/>
+ </inc-compile>
+ <!-- now failing here. This step passes in non-injar variant. -->
+ <run class="packageOne.Main"
+ options="in longer packageOne.Main.main(..),
+ before main packageOne.Main"/>
+ <inc-compile tag="30">
+ <dir-changes added="RunInjarMains"/>
+ </inc-compile>
+ <run class="packageOne.Main"
+ options="in longer packageOne.Main.main(..),
+ before main InjarOneMain,
+ before main InjarTwoMain,
+ before main packageOne.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="34206"
+ keywords="knownLimitation"
+ title="before():execution(new(..)) does not throw NoAspectBoundException"
+ comment="correct behavior of this case needs to be thought through">
+ <compile files="AspectInitError.java"/>
+ <run class="AspectInitError"/>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020"
+ keywords="knownLimitation"
+ comment="source loc of binary jp depends on first code, not block start"
+ title="declare error on handler/method execution with no code on binary ajc 1.1 classes">
+ <compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-ajc-1.1.jar">
+ <message kind="error" file="app/MainExecStartLines.java"
+ line="6" text="execution(void MainExecStartLines.main(String[]))"/>
+ <message kind="error" file="app/MainExecStartLines.java"
+ line="17" text="handler(RuntimeException)"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020"
+ keywords="knownLimitation"
+ comment="source loc of binary jp depends on first code, not block start; XXX need javac inlining example"
+ title="declare error on handler/method execution with no code on binary javac 1.4 classes">
+ <compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-javac-1.4.jar">
+ <message kind="error" file="app/MainExecStartLines.java"
+ line="6" text="execution(void MainExecStartLines.main(String[]))"/>
+ <message kind="error" file="app/MainExecStartLines.java"
+ line="17" text="handler(RuntimeException)"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness"
+ keywords="command-line-error,knownLimitation"
+ comment="can't test -help: has to abort, but returns 0, normal status"
+ title="CLE: -help usage">
+ <compile badInput="true" options="-help">
+ <message kind="abort" text="Usage"/>
+ </compile>
+ </ajc-test>
+
+ <!-- The next three tests are all about the same issue. The source
+ line for a constructor execution is returned as the first executable
+ line within the constructor-execution join point rather than the declaration
+ line of the constructor. Any other definition will require collusion between
+ the source->bytecode compiler and the weaver and will only work in
+ those case where such collusion is possible.
+ -->
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation"
+ title="declare warnings on main - constructor execution">
+ <compile files="aspects/ConstructorExecutionWarning.java,app/Main.java">
+ <message kind="warning" file="app/Main.java"
+ line="23" text="execution(Main.new())"/>
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation"
+ title="declare warnings on binary javac 1.4 main - constructor execution">
+ <compile files="aspects/ConstructorExecutionWarning.java,../injars/app-javac-1.4.jar">
+ <message kind="warning" file="app/Main.java"
+ line="23" text="execution(Main.new())"/>
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation"
+ title="declare warnings on binary ajc 1.1 main - constructor execution">
+ <compile files="aspects/ConstructorExecutionWarning.java,../injars/app-ajc-1.1.jar">
+ <message kind="warning" file="app/Main.java"
+ line="23" text="execution(Main.new())"/>
+ </compile>
+ <run class="app.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/handlers" pr="37898" keywords="knownLimitation"
+ title="advice on handler join points should not throw unpermitted checked exceptions">
+ <compile files="ExceptionCheckCE.java">
+ <message kind="warning" line="8" text="expected"/>
+ <message kind="error" line="25" text="throw checked exception" />
+ <message kind="error" line="8" text="throw checked exception" />
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness" pr="38134" keywords="knownLimitation"
+ comment="behavior is correct for 1.1 - revisit for 1.2"
+ title="-nowarn suppresses XLint warnings">
+ <compile files="XLintWarningTest.java" options="-nowarn"/>
+ </ajc-test>
+
+ <ajc-test dir="harness" pr="38134" keywords="knownLimitation"
+ comment="behavior is correct for 1.1 - revisit for 1.2"
+ title="warn:none suppresses XLint warnings">
+ <compile files="XLintWarningTest.java" options="-warn:none"/>
+ </ajc-test>
+
+ <ajc-test dir="harness" pr="38134" keywords="knownLimitation"
+ comment="behavior is correct for 1.1 - revisit for 1.2"
+ title="-nowarn suppresses declare warnings">
+ <compile files="WarningTest.java" options="-nowarn"/>
+ </ajc-test>
+
+ <ajc-test dir="harness" pr="38134" keywords="knownLimitation"
+ comment="behavior is correct for 1.1 - revisit for 1.2"
+ title="-warn:none suppresses declare warnings">
+ <compile files="WarningTest.java" options="-warn:none"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="38168" keywords="knownLimitation"
+ title="insertion of lots of advice code can make branch offset for if too large">
+ <compile files="WideJumps.java"/>
+ <run class="WideJumps"/>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations.xml b/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations.xml
new file mode 100644
index 000000000..25d99f6e4
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml">
+]>
+
+<!-- Known Limitations -these tests will fail -->
+
+<suite>
+
+&tests;
+
+</suite>
diff --git a/tests/src/org/aspectj/systemtest/options/OptionsTests.java b/tests/src/org/aspectj/systemtest/options/OptionsTests.java
new file mode 100644
index 000000000..746c51011
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/options/OptionsTests.java
@@ -0,0 +1,44 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.options;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class OptionsTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(OptionsTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/options/options.xml");
+ }
+
+
+ public void test001(){
+ runTest("options -warn:deprecation");
+ }
+
+ public void test002(){
+ runTest("options -warn:deprecation not enabled");
+ }
+
+ public void test003(){
+ runTest("setting -warn:constructorName works");
+ }
+
+ public void test004(){
+ runTest("-deprecation not working?");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/options/options-tests.xml b/tests/src/org/aspectj/systemtest/options/options-tests.xml
new file mode 100644
index 000000000..d109cd2d0
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/options/options-tests.xml
@@ -0,0 +1,37 @@
+<!-- Options Tests -->
+
+ <!-- .................................... option tests -->
+ <!-- .................................... -warn tests -->
+ <ajc-test dir="options/deprecated"
+ title="options -warn:deprecation">
+ <compile files="WarnDeprecated.java,OldStuff.java"
+ options="!eclipse,-warn:deprecation">
+ <message kind="warning" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options/deprecated"
+ title="options -warn:deprecation not enabled">
+ <compile files="WarnDeprecated.java,OldStuff.java"
+ options="!eclipse">
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="harness"
+ title="setting -warn:constructorName works">
+ <compile files="ConstructorNameWarning.java"
+ options="-warn:constructorName">
+ <message kind="warning" line="5" text="constructor name"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/deprecated" pr="54098"
+ title="-deprecation not working?" >
+ <compile files="Deprecation.java, Deprecated.java" options="-deprecation">
+ <message kind="warning" line="5"/>
+ <message kind="warning" line="6"/>
+ </compile>
+ </ajc-test>
+
+ \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/options/options.xml b/tests/src/org/aspectj/systemtest/options/options.xml
new file mode 100644
index 000000000..d877da040
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/options/options.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/options/options-tests.xml">
+]>
+<!-- Options Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/pre10x/AjcPre10xTests.java b/tests/src/org/aspectj/systemtest/pre10x/AjcPre10xTests.java
new file mode 100644
index 000000000..264b4f55e
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/pre10x/AjcPre10xTests.java
@@ -0,0 +1,316 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.pre10x;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class AjcPre10xTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(AjcPre10xTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/pre10x/pre10x.xml");
+ }
+
+
+ public void test001(){
+ runTest("Using 'aspect' as identifier is legal TODO");
+ }
+
+ public void test002(){
+ runTest("Using 'pointcut' as identifier is legal TODO");
+ }
+
+ public void test003(){
+ runTest("CF expected when enclosing class superclass used as this qualifier in inner class");
+ }
+
+ public void test004(){
+ runTest("enclosing class may be used as this qualifier in inner class");
+ }
+
+ public void test005(){
+ runTest("reasonable error for crosscut reference with no formals specified");
+ }
+
+ public void test006(){
+ runTest("reasonable error for introduction on type whose source isn't found");
+ }
+
+ public void test007(){
+ runTest("handle errors in crosscut designators, insist that they end with a semicolon");
+ }
+
+ public void test008(){
+ runTest("try to return from a before, after, after throwing and after returning");
+ }
+
+ public void test009(){
+ runTest("the designator has a wildcard for method name but no return type specified");
+ }
+
+ public void test010(){
+ runTest("the designator for the introduction has no type after the | charcter");
+ }
+
+ public void test011(){
+ runTest("crosscut signature does not match");
+ }
+
+ public void test012(){
+ runTest("proper exit conditions when errors fall through to javac");
+ }
+
+ public void test013(){
+ runTest("mismatched parens on advice (wasn't binding Tester)");
+ }
+
+ public void test014(){
+ runTest("Non-static advice silently ignored");
+ }
+
+ public void test015(){
+ runTest("extra closing brace");
+ }
+
+ public void test016(){
+ runTest("decent errors for around return type not matching target point");
+ }
+
+ public void test017(){
+ runTest("eachobject: can't call new on an aspect of");
+ }
+
+ public void test018(){
+ runTest("eachobject: only zero-argument constructors allowed in an aspect");
+ }
+
+ public void test019(){
+ runTest("eachobject: can't extend a concrete aspect");
+ }
+
+ public void test020(){
+ runTest("instanceof used without a class");
+ }
+
+ public void test021(){
+ runTest("wildcard used for returns clause");
+ }
+
+ public void test022(){
+ runTest("no return statement in around advice");
+ }
+
+ public void test023(){
+ runTest("inner aspects must be static (no longer matches PR#286)");
+ }
+
+ public void test024(){
+ runTest("Casting class declarations as interfaces");
+ }
+
+ public void test025(){
+ runTest("omits a variable name and crashes with a null pointer");
+ }
+
+ public void test026(){
+ runTest("Not generating an error for using new as a method name");
+ }
+
+ public void test027(){
+ runTest("ClassCastException on the int literal");
+ }
+
+ public void test028(){
+ runTest("Wrong strictfp keyword usage in interface function prototype [TODO: move to errors]");
+ }
+
+ public void test029(){
+ runTest("Wrong strictfp keyword usage in field declaration [TODO: move to errors]");
+ }
+
+ public void test030(){
+ runTest("Wrong strictfp keyword usage in constructor declaration [TODO: move to errors]");
+ }
+
+ public void test031(){
+ runTest("Incorrect static casts to primitively foldable arguments should not crash the compiler.");
+ }
+
+ public void test032(){
+ runTest("Dominates with commas should signal an error.");
+ }
+
+ public void test033(){
+ runTest("stack overflow with recursive crosscut specifier");
+ }
+
+ public void test034(){
+ runTest("Throwing a NullPointerException when formals can't be bound in named pointcut");
+ }
+
+ public void test035(){
+ runTest("disallow defining more than one pointcut with the same name");
+ }
+
+ public void test036(){
+ runTest("pre 0.7 introduction form outside aspect body causes an EmptyStackException");
+ }
+
+ public void test037(){
+ runTest("a class can't extend an aspect");
+ }
+
+ public void test038(){
+ runTest("a before() clause at the class-level causes an EmptyStackException");
+ }
+
+ public void test039(){
+ runTest("an after() clause at the class-level causes an EmptyStackException");
+ }
+
+ public void test040(){
+ runTest("an around() clause at the class-level causes an EmptyStackException");
+ }
+
+ public void test041(){
+ runTest("Doesn't detect cyclic inheritance of aspects.");
+ }
+
+ public void test042(){
+ runTest("Binds the pointcut formals to member variables instead of pointcut formals.");
+ }
+
+ public void test043(){
+ runTest("ambiguous formal in formals pattern");
+ }
+
+ public void test044(){
+ runTest("good error for field name instead of type name");
+ }
+
+ public void test045(){
+ runTest("errors in aspect inheritance - 1");
+ }
+
+ public void test046(){
+ runTest("errors in aspect inheritance - 2");
+ }
+
+ public void test047(){
+ runTest("errors in aspect inheritance - 3");
+ }
+
+ public void test048(){
+ runTest("errors in aspect inheritance - 4");
+ }
+
+ public void test049(){
+ runTest("circular dominates leading to irresolvable advice precedence");
+ }
+
+ public void test050(){
+ runTest("Should issue an error for using 'class' instead of 'aspect'");
+ }
+
+ public void test051(){
+ runTest("Should signal an error when we need an exposed value but don't provide it");
+ }
+
+ public void test052(){
+ runTest("StackOverFlowException with circular +implements's.");
+ }
+
+ public void test053(){
+ runTest("Introducing protected methods is causing a crash");
+ }
+
+ public void test054(){
+ runTest("Introducing protected fields is causing a crash");
+ }
+
+ public void test055(){
+ runTest("two classes with the same fully-qualified names [eachjvm]");
+ }
+
+ public void test056(){
+ runTest("Undefined pointcuts were throwing exceptions in 07b11 [callsto]");
+ }
+
+ public void test057(){
+ runTest("advice on abstract pointcuts");
+ }
+
+ public void test058(){
+ runTest("Whoops, I forgot to put a class in the field access PCD.");
+ }
+
+ public void test059(){
+ runTest("the arounds return something but there is no returns statement");
+ }
+
+ public void test060(){
+ runTest("multiple conflicting introductions");
+ }
+
+ public void test061(){
+ runTest("referencing non-static pointcuts in outer aspects");
+ }
+
+ public void test062(){
+ runTest("javac correct compiler error if there is no return in around returning result");
+ }
+
+ public void test063(){
+ runTest("should give an error for introducing two members with the same name");
+ }
+
+ public void test064(){
+ runTest("wimpy test for undeclared and uncaught exceptions");
+ }
+
+ public void test065(){
+ runTest("Given non-matching TypePattern, CE flags use of non-introduced method rather than failure to introduce");
+ }
+
+ public void test066(){
+ runTest("Compiler should suggest using aspect when advice, pointcuts, or introduction is in a class");
+ }
+
+ public void test067(){
+ runTest("declare error working with pointcut and-not (amp,amp,bang)");
+ }
+
+ public void test068(){
+ runTest("aspect as member of interface (private and protected)");
+ }
+
+ public void test069(){
+ runTest("introduced inner interfaces - compile should fail to bind interface name outside of Aspect or if implementing method is not public");
+ }
+
+ public void test070(){
+ runTest("aspects may not implement Serializable or Cloneable");
+ }
+
+ public void test071(){
+ runTest("explicit constructor calls can throw exceptions");
+ }
+
+ public void test072(){
+ runTest("bad proceed args good error messages");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/pre10x/pre10x-tests.xml b/tests/src/org/aspectj/systemtest/pre10x/pre10x-tests.xml
new file mode 100644
index 000000000..90a1de463
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/pre10x/pre10x-tests.xml
@@ -0,0 +1,629 @@
+<!-- AspectJ v0.8 - 0.99 Tests -->
+
+
+ <ajc-test dir="pureJava" title="Using 'aspect' as identifier is legal TODO"
+ keywords="from-java" comment="keep this test in main suite">
+ <compile files="KeywordAspect.java"/>
+ <run class="KeywordAspect"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Using 'pointcut' as identifier is legal TODO"
+ keywords="from-java" comment="keep this test in main suite">
+ <compile files="KeywordPointcut.java"/>
+ <run class="KeywordPointcut"/>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="CF expected when enclosing class superclass used as this qualifier in inner class"
+ keywords="from-java">
+ <compile files="TargetClassCF.java,Util.java">
+ <message kind="error" line="22"/>
+ <message kind="error" line="23"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="28"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="enclosing class may be used as this qualifier in inner class"
+ keywords="from-java">
+ <compile files="TargetClassCP.java,Util.java"/>
+ <run class="TargetClassCP"/>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="reasonable error for crosscut reference with no formals specified"
+ keywords="from-errors">
+ <compile files="NoFormalsCrosscut.java">
+ <message kind="error" line="6"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="reasonable error for introduction on type whose source isn't found"
+ keywords="from-errors">
+ <compile files="NoSource.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="errors"
+ title="handle errors in crosscut designators, insist that they end with a semicolon"
+ keywords="from-errors">
+ <compile files="BadDesignator.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="errors"
+ title="try to return from a before, after, after throwing and after returning"
+ keywords="from-errors">
+ <compile files="InvalidReturn.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="22"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="130"
+ title="the designator has a wildcard for method name but no return type specified"
+ keywords="from-errors">
+ <compile files="NoReturnTypeInDesignator.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="the designator for the introduction has no type after the | charcter"
+ keywords="from-errors">
+ <compile files="BadIntroductionDesignator.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="140" title="crosscut signature does not match"
+ keywords="from-errors">
+ <compile files="BadCCutSig.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="proper exit conditions when errors fall through to javac"
+ keywords="from-errors">
+ <compile files="FromJavac.java">
+ <message kind="error" line="11"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="213"
+ title="mismatched parens on advice (wasn't binding Tester)"
+ keywords="from-errors">
+ <compile files="MismatchedParens.java">
+ <message kind="error" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="209" title="Non-static advice silently ignored"
+ keywords="from-errors">
+ <compile files="BadPointcutName.java">
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="219" title="extra closing brace"
+ keywords="from-errors">
+ <compile files="ExtraClosingBrace.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="244"
+ title="decent errors for around return type not matching target point"
+ keywords="from-errors">
+ <compile files="AroundReturnType.java">
+ <message kind="error" line="3"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="21"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="eachobject: can't call new on an aspect of"
+ keywords="from-errors">
+ <compile files="CantCallConstructorOnAspects.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="eachobject: only zero-argument constructors allowed in an aspect"
+ keywords="from-errors,fail-unimplemented">
+ <compile files="AspectsCantHaveYesArgumentConstructors.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="eachobject: can't extend a concrete aspect"
+ keywords="from-errors,fail-unimplemented">
+ <compile files="SubAspectsCantExtendNonAbstractAspects.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="271" title="instanceof used without a class"
+ keywords="from-errors">
+ <compile files="InstanceofWithoutClass.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="280" title="wildcard used for returns clause"
+ keywords="from-errors">
+ <compile files="WildcardForReturns.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="280" title="no return statement in around advice"
+ keywords="from-errors,new-messages-vary">
+ <compile files="NoReturnStatement.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="286"
+ title="inner aspects must be static (no longer matches PR#286)"
+ keywords="from-errors,fail-unimplemented">
+ <compile files="AbstractAspectOf.java">
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Casting class declarations as interfaces"
+ keywords="from-errors">
+ <compile files="InterfaceCast.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="omits a variable name and crashes with a null pointer"
+ keywords="from-errors">
+ <compile files="BindingNullPointer.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Not generating an error for using new as a method name"
+ keywords="from-errors">
+ <compile files="New.java">
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="ClassCastException on the int literal"
+ keywords="from-errors">
+ <compile files="IntLiteral.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Wrong strictfp keyword usage in interface function prototype [TODO: move to errors]"
+ keywords="from-errors">
+ <compile files="StrictFpCErr1.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Wrong strictfp keyword usage in field declaration [TODO: move to errors]"
+ keywords="from-errors">
+ <compile files="StrictFpCErr2.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Wrong strictfp keyword usage in constructor declaration [TODO: move to errors]"
+ keywords="from-errors">
+ <compile files="StrictFpCErr3.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Incorrect static casts to primitively foldable arguments should not crash the compiler."
+ keywords="from-errors">
+ <compile files="BadStaticCast.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Dominates with commas should signal an error."
+ keywords="from-errors">
+ <compile files="DominatesWithCommas.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="95"
+ title="stack overflow with recursive crosscut specifier"
+ keywords="from-errors">
+ <compile files="RecursiveCCutSpecifier.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Throwing a NullPointerException when formals can't be bound in named pointcut"
+ keywords="from-errors">
+ <compile files="BadFormalsToCalls.java">
+ <message kind="error" line="22"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="385"
+ title="disallow defining more than one pointcut with the same name"
+ keywords="from-errors,fail-unimplemented">
+ <compile files="OverloadedPointcuts.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="pre 0.7 introduction form outside aspect body causes an EmptyStackException"
+ keywords="from-errors">
+ <compile files="BadIntroduction.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="a class can't extend an aspect"
+ keywords="from-errors,fail-unimplemented">
+ <compile files="ClassExtendingAspect.java">
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="a before() clause at the class-level causes an EmptyStackException"
+ keywords="from-errors">
+ <compile files="TopLevelBefore.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="an after() clause at the class-level causes an EmptyStackException"
+ keywords="from-errors">
+ <compile files="TopLevelAfter.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="an around() clause at the class-level causes an EmptyStackException"
+ keywords="from-errors">
+ <compile files="TopLevelAround.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Doesn't detect cyclic inheritance of aspects."
+ keywords="from-errors">
+ <compile files="CircularExtendsAspect.java">
+ <message kind="error" line="18"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Binds the pointcut formals to member variables instead of pointcut formals."
+ keywords="from-errors">
+ <compile files="PointcutFormals.java" options="-Xlint:warning">
+ <message kind="error" line="14"/>
+ <message kind="error" line="15"/>
+ <message kind="warning" line="16"/>
+ <message kind="warning" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="ambiguous formal in formals pattern"
+ keywords="from-errors">
+ <compile files="AmbiguousFormal.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="good error for field name instead of type name"
+ keywords="from-errors">
+ <compile files="BadTypeName.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="4"/>
+ <message kind="error" line="6"/>
+ <message kind="error" line="8"/>
+ <message kind="error" line="10"/>
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="errors in aspect inheritance - 1"
+ keywords="from-errors">
+ <compile files="AspectInheritance1.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="errors in aspect inheritance - 2"
+ keywords="from-errors">
+ <compile files="AspectInheritance2.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="26"/>
+ <message kind="error" line="30"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="errors in aspect inheritance - 3"
+ keywords="from-errors">
+ <compile files="AspectInheritance3.java">
+ <message kind="error" line="19"/>
+ <message kind="error" line="24"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="errors in aspect inheritance - 4"
+ keywords="from-errors">
+ <compile files="AspectInheritance4.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="circular dominates leading to irresolvable advice precedence"
+ keywords="from-errors">
+ <compile files="CircularDominates.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="20"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Should issue an error for using 'class' instead of 'aspect'"
+ keywords="from-errors">
+ <compile files="NoAspect.java">
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Should signal an error when we need an exposed value but don't provide it"
+ keywords="from-errors">
+ <compile files="MissingExposure.java">
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="StackOverFlowException with circular +implements's."
+ keywords="from-errors">
+ <compile files="CircularPlusImplementsIntros.java">
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Introducing protected methods is causing a crash"
+ keywords="from-errors">
+ <compile files="ProtectedIntro.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Introducing protected fields is causing a crash"
+ keywords="from-errors">
+ <compile files="ProtectedFieldIntro.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="388"
+ title="two classes with the same fully-qualified names [eachjvm]"
+ keywords="from-errors"
+ comment="XXX error not flagging initial type">
+ <compile files="DuplicatedNames.java">
+ <message kind="error" line="3"/>
+ <message kind="error" line="5"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="396"
+ title="Undefined pointcuts were throwing exceptions in 07b11 [callsto]"
+ keywords="from-errors">
+ <compile files="UndefinedPointCut_PR396.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="240" title="advice on abstract pointcuts"
+ keywords="from-errors">
+ <compile files="StaticAdviceOnAbstract.java">
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Whoops, I forgot to put a class in the field access PCD."
+ keywords="from-errors">
+ <compile files="BadGetPCD.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="138"
+ title="the arounds return something but there is no returns statement"
+ keywords="from-errors">
+ <compile files="MissingReturns.java">
+ <message kind="error" line="14"/>
+ <message kind="error" line="20"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="multiple conflicting introductions"
+ keywords="from-errors">
+ <compile files="MultipleIntros.java">
+ <message kind="error" line="5"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="22"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="30"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="referencing non-static pointcuts in outer aspects"
+ keywords="from-errors">
+ <compile files="StaticPointcutRefs.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="javac correct compiler error if there is no return in around returning result"
+ keywords="from-errors">
+ <compile files="NoReturnInProceed.java">
+ <message kind="error" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="should give an error for introducing two members with the same name"
+ keywords="from-errors">
+ <compile files="TwoIntros.java">
+ <message kind="error" line="10"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="wimpy test for undeclared and uncaught exceptions"
+ keywords="from-errors">
+ <compile files="UndeclaredThrows.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="18"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Given non-matching TypePattern, CE flags use of non-introduced method rather than failure to introduce"
+ keywords="from-errors">
+ <compile
+ files="typepatternmatch/pack1/IntroErrorLocation.java,typepatternmatch/pack2/TargetClass.java">
+ <message kind="error" line="28"
+ file="pack1/IntroErrorLocation.java"
+ text="TargetClass cannot be resolved"/>
+ <message kind="warning" line="33"
+ file="pack1/IntroErrorLocation.java"
+ text="no match for this type name: TargetClass"/>
+ <message kind="error" line="39"
+ file="pack1/IntroErrorLocation.java"
+ text="undefined for the type TargetClass"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="457"
+ title="Compiler should suggest using aspect when advice, pointcuts, or introduction is in a class"
+ keywords="from-errors,poorErrorMessages">
+ <compile files="RecognizeAspectCE.java">
+ <message kind="error" line="3"
+ file="RecognizeAspectCE.java"
+ text="Syntax error"/>
+ <message kind="error" line="6"
+ file="RecognizeAspectCE.java"
+ text="Syntax error"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="declare error working with pointcut and-not (amp,amp,bang)"
+ keywords="from-errors">
+ <compile files="DeclareError.java">
+ <message kind="error" line="5"/>
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="534"
+ title="aspect as member of interface (private and protected)"
+ keywords="from-errors">
+ <compile files="AspectInInterfaceCF.java">
+ <message kind="error" line="11"/>
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="494"
+ title="introduced inner interfaces - compile should fail to bind interface name outside of Aspect or if implementing method is not public"
+ keywords="from-errors">
+ <compile files="IntroduceInnerInterfaceCF.java" options="-Xlint:ignore">
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="24"/>
+ <message kind="error" line="42"/>
+ <message kind="error" line="45"/>
+ <message kind="error" line="48"/>
+ <message kind="error" line="50"/>
+ <message kind="error" line="58"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="aspects may not implement Serializable or Cloneable"
+ keywords="from-errors">
+ <compile files="AspectInterfaces.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="5"/>
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="explicit constructor calls can throw exceptions"
+ keywords="from-errors">
+ <compile files="ExplicitConstructorThrows.java">
+ <message kind="error" line="3"/>
+ <message kind="error" line="12"/>
+ <message kind="error" line="18"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="664" title="bad proceed args good error messages"
+ keywords="from-errors">
+ <compile files="ProceedArgsCE.java">
+ <message kind="error" line="13"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+
diff --git a/tests/src/org/aspectj/systemtest/pre10x/pre10x.xml b/tests/src/org/aspectj/systemtest/pre10x/pre10x.xml
new file mode 100644
index 000000000..cfaa7480d
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/pre10x/pre10x.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/pre10x/pre10x-tests.xml">
+]>
+<!-- AspectJ v0.8 - 0.99 Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java b/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java
new file mode 100644
index 000000000..d692464f5
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java
@@ -0,0 +1,992 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.purejava;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class PureJavaTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(PureJavaTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/pureJava/pureJava.xml");
+ }
+
+
+ public void test001(){
+ runTest("unicodes and literals");
+ }
+
+ public void test002(){
+ runTest("For Statement");
+ }
+
+ public void test003(){
+ runTest("correct super call lookup for method().name()");
+ }
+
+ public void test004(){
+ runTest("combined logic expression (handling coericions vs. parens)");
+ }
+
+ public void test005(){
+ runTest("comment after class closes (with no new line at end)");
+ }
+
+ public void test006(){
+ runTest("multi-dimensional array initializers");
+ }
+
+ public void test007(){
+ runTest("probelm with the generated names of exceptions");
+ }
+
+ public void test008(){
+ runTest("checks if the class field can be used on all of the primitive types");
+ }
+
+ public void test009(){
+ runTest("Doesn't parse an array-returning method that throws an exception");
+ }
+
+ public void test010(){
+ runTest("check that nested constructions of local classes work");
+ }
+
+ public void test011(){
+ runTest("Make sure anonymous classes can have non-nullary constructors");
+ }
+
+ public void test012(){
+ runTest("Full names are dropped from inner interfaces");
+ }
+
+ public void test013(){
+ runTest("Making sure full names stay on static inner classes");
+ }
+
+ public void test014(){
+ runTest("Not binding constructor when using more than one compilation");
+ }
+
+ public void test015(){
+ runTest("return;;; is not really legal");
+ }
+
+ public void test016(){
+ runTest("ajc treating Throwable as checked, issuing error if not found");
+ }
+
+ public void test017(){
+ runTest("package protected classes becoming public");
+ }
+
+ public void test018(){
+ runTest("IOException on windows if nul used as identifier");
+ }
+
+ public void test019(){
+ runTest("NullPointerException (not compiler error) when extending non-static inner class");
+ }
+
+ public void test020(){
+ runTest("compiler flags final static variable as indefinite in member assignment.");
+ }
+
+ public void test021(){
+ runTest("confirm no IOException on windows if nul used as identifier");
+ }
+
+ public void test022(){
+ runTest("final constructor parameter causes incorrect compiler error");
+ }
+
+ public void test023(){
+ runTest("Error expected for field of type void");
+ }
+
+ public void test024(){
+ runTest("Error expected for constructor in interfaces");
+ }
+
+ public void test025(){
+ runTest("class name for identifier as String should provoke error");
+ }
+
+ public void test026(){
+ runTest("cyclic interface inheritance not detected if no classes implement the interfaces");
+ }
+
+ public void test027(){
+ runTest("cyclic class inheritance");
+ }
+
+ public void test028(){
+ runTest("type and package name conflicts are resolved happily (1a)");
+ }
+
+ public void test029(){
+ runTest("(fails in USEJAVAC) type and package name conflicts are resolved happily (1b)");
+ }
+
+ public void test030(){
+ runTest("type and package name conflicts caught as errors (1)");
+ }
+
+ public void test031(){
+ runTest("flow analysis where final variable set in another constructor");
+ }
+
+ public void test032(){
+ runTest("Can construct inner classes using qualified expressions");
+ }
+
+ public void test033(){
+ runTest("subclass unable to access protected static methods using type-qualified references");
+ }
+
+ public void test034(){
+ runTest("Undefined inner class constructor");
+ }
+
+ public void test035(){
+ runTest("classes that are package prefixes are illegal");
+ }
+
+ public void test036(){
+ runTest("valid type expressions for introduced type testing");
+ }
+
+ public void test037(){
+ runTest("PR591 compiler error expected when directly calling unimplemented abstract method using super");
+ }
+
+ public void test038(){
+ runTest("suggested by Jacks 15.28-qualified-namestr tests");
+ }
+
+ public void test039(){
+ runTest("suggested by jacks 3.7-15 all comments must be closed");
+ }
+
+ public void test040(){
+ runTest("package class access not enforced outside of package");
+ }
+
+ public void test041(){
+ runTest("expecting CE for ambiguous reference");
+ }
+
+ public void test042(){
+ runTest("try without catch or finally");
+ }
+
+ public void test043(){
+ runTest("invalid floating-point constant");
+ }
+
+ public void test044(){
+ runTest("concrete aspect unable to access abstract package-private method in parent for overriding");
+ }
+
+ public void test045(){
+ runTest("super reference used to disambiguate names of different but compatible types");
+ }
+
+ public void test046(){
+ runTest("anonymous explicit inner constructors");
+ }
+
+ public void test047(){
+ runTest("Overruning the lineStarts buffer, DO NOT EDIT THIS FILE!!!!");
+ }
+
+ public void test048(){
+ runTest("no CE for unambiguous type reference");
+ }
+
+ public void test049(){
+ runTest("CE for ambiguous type reference (imports)");
+ }
+
+ public void test050(){
+ runTest("CE for ambiguous type reference (two type declarations)");
+ }
+
+ public void test051(){
+ runTest("CE for ambiguous type reference (two inner types)");
+ }
+
+ public void test052(){
+ runTest("final assignment in loop");
+ }
+
+ public void test053(){
+ runTest("private super access in inners");
+ }
+
+ public void test054(){
+ runTest("nested interface does not require new qualifier (8)");
+ }
+
+ public void test055(){
+ runTest("nested interface does not require new qualifier (9)");
+ }
+
+ public void test056(){
+ runTest("nested interface does not require new qualifier (10)");
+ }
+
+ public void test057(){
+ runTest("nested interface does not require new qualifier (14)");
+ }
+
+ public void test058(){
+ runTest("nested interface does not require new qualifier (15)");
+ }
+
+ public void test059(){
+ runTest("nested interface does not require new qualifier (16)");
+ }
+
+ public void test060(){
+ runTest("check that constructor name's match the enclosing type");
+ }
+
+ public void test061(){
+ runTest("errors for not applicable or accessible methods");
+ }
+
+ public void test062(){
+ runTest("import statement within class body crashes compiler");
+ }
+
+ public void test063(){
+ runTest("Accessing instance fields and instance methods statically.");
+ }
+
+ public void test064(){
+ runTest("Crashes when a cast is within another cast");
+ }
+
+ public void test065(){
+ runTest("Crashes when a cast of the form )int) appears");
+ }
+
+ public void test066(){
+ runTest("Crashes when the closing brace is reversed");
+ }
+
+ public void test067(){
+ runTest("Crashes when a method name is missing in a call -- e.g. 'System.out.();'");
+ }
+
+ public void test068(){
+ runTest("Crashes when a bad r-value appears.");
+ }
+
+ public void test069(){
+ runTest("Two underscores as a variables causes a crash");
+ }
+
+ public void test070(){
+ runTest("Crashes when assigning to a final static in an intializer and declaration");
+ }
+
+ public void test071(){
+ runTest("Crashes when two dots appear instead of one");
+ }
+
+ public void test072(){
+ runTest("Crashes when there're stray dots");
+ }
+
+ public void test073(){
+ runTest("Stray characters cause a crash");
+ }
+
+ public void test074(){
+ runTest("Colon instead of a semi-colon causes a crash");
+ }
+
+ public void test075(){
+ runTest("type error in initializer caught by ajc, not javac");
+ }
+
+ public void test076(){
+ runTest("Circular inheritance with classes causes a stack overflow.");
+ }
+
+ public void test077(){
+ runTest("Missing ;");
+ }
+
+ public void test078(){
+ runTest("cast expressions should not allow casts between ifaces and array types");
+ }
+
+ public void test079(){
+ runTest("parsing errors for various bad forms of NewArrayExprs.");
+ }
+
+ public void test080(){
+ runTest("good error for bad field and inner class references");
+ }
+
+ public void test081(){
+ runTest("Implementing a non-interface used to crash the compiler.");
+ }
+
+ public void test082(){
+ runTest("error of no return statement detected not by ajc but by javac (line 4)");
+ }
+
+ public void test083(){
+ runTest("class and interface extension");
+ }
+
+ public void test084(){
+ runTest("types in throws clauses");
+ }
+
+ public void test085(){
+ runTest("bad switch syntax");
+ }
+
+ public void test086(){
+ runTest("Referencing various things from static contexts");
+ }
+
+ public void test087(){
+ runTest("Some expressions are illegal expression statements");
+ }
+
+ public void test088(){
+ runTest("illegal forward reference");
+ }
+
+ public void test089(){
+ runTest("protected accessibility");
+ }
+
+ public void test090(){
+ runTest("parse-time illegal modifiers");
+ }
+
+ public void test091(){
+ runTest("check-time illegal modifiers");
+ }
+
+ public void test092(){
+ runTest("illegal synchronized stmts");
+ }
+
+ public void test093(){
+ runTest("modifiers on interface members");
+ }
+
+ public void test094(){
+ runTest("good errors (and not too many) for missing members");
+ }
+
+ public void test095(){
+ runTest("expecting compile failures with subclass narrowing scope of superclass methods or accessing private superclass variables");
+ }
+
+ public void test096(){
+ runTest("inner classes may not have static non-constant members");
+ }
+
+ public void test097(){
+ runTest("flow analysis with local types");
+ }
+
+ public void test098(){
+ runTest("PR584 Can construct inner classes using qualified expressions");
+ }
+
+ public void test099(){
+ runTest("incrementing objects, arrays - 2");
+ }
+
+ public void test100(){
+ runTest("incrementing objects, arrays CE");
+ }
+
+ public void test101(){
+ runTest("incrementing objects, arrays - 3");
+ }
+
+ public void test102(){
+ runTest("incrementing objects, arrays");
+ }
+
+ public void test103(){
+ runTest("no circularity errors simply because of inners (1)");
+ }
+
+ public void test104(){
+ runTest("no circularity errors simply because of inners (2)");
+ }
+
+ public void test105(){
+ runTest("should have circular inheritance errors (1)");
+ }
+
+ public void test106(){
+ runTest("should have circular inheritance errors (2)");
+ }
+
+ public void test107(){
+ runTest("interface using preceding subinterface in its definition");
+ }
+
+ public void test108(){
+ runTest("Parent interface using public inner interface of child in same file");
+ }
+
+ public void test109(){
+ runTest("a type is not allowed to extend or implement its own innner type");
+ }
+
+ public void test110(){
+ runTest("try requires block JLS 14.19");
+ }
+
+ public void test111(){
+ runTest("loop expressions not declarations");
+ }
+
+ public void test112(){
+ runTest("no error when public class is in file of a different name");
+ }
+
+ public void test113(){
+ runTest("local variables must be final to be accessed from inner class");
+ }
+
+ public void test114(){
+ runTest("final local variables may be accessed from inner class");
+ }
+
+ public void test115(){
+ runTest("missing package identifier");
+ }
+
+ public void test116(){
+ runTest("CE for ambiguous type reference (two files in package)");
+ }
+
+ public void test117(){
+ runTest("initializer can throw so long as all constructors declare so");
+ }
+
+ public void test118(){
+ runTest("interfaces may not contain initializers (bug found by jacks)");
+ }
+
+ public void test119(){
+ runTest("initializers must be able to complete normally (found by jacks)");
+ }
+
+ public void test120(){
+ runTest("more tests of super alone");
+ }
+
+ public void test121(){
+ runTest("subclass access to enclosing super class private members");
+ }
+
+ public void test122(){
+ runTest("various tests of switch bounds");
+ }
+
+ public void test123(){
+ runTest("VerifyError if nested sync returning result");
+ }
+
+ public void test124(){
+ runTest("assert flow");
+ }
+
+ public void test125(){
+ runTest("assert flow - 2");
+ }
+
+ public void test126(){
+ runTest("assert typing");
+ }
+
+ public void test127(){
+ runTest("assert coverage tests [requires 1.4]");
+ }
+
+ public void test128(){
+ runTest("assert coverage tests in one package [requires 1.4]");
+ }
+
+ public void test129(){
+ runTest("compiling asserts in methods");
+ }
+
+ public void test130(){
+ runTest("import of a class in the default package");
+ }
+
+ public void test131(){
+ runTest("Referencing static interfaces with import statements");
+ }
+
+ public void test132(){
+ runTest("Referencing static interfaces with import statements stars");
+ }
+
+ public void test133(){
+ runTest("Referencing static interfaces with import statements stars 2");
+ }
+
+ public void test134(){
+ runTest("Referencing static interfaces with import statements stars 3");
+ }
+
+ public void test135(){
+ runTest("Referencing interfaces with import statements");
+ }
+
+ public void test136(){
+ runTest("Referencing interfaces with import statements stars");
+ }
+
+ public void test137(){
+ runTest("Referencing interfaces with import statements stars 2");
+ }
+
+ public void test138(){
+ runTest("Referencing interfaces with import statements stars 3");
+ }
+
+ public void test139(){
+ runTest("import any inner from interface implementor");
+ }
+
+ public void test140(){
+ runTest("equals method on quoted strings");
+ }
+
+ public void test141(){
+ runTest("anonymous inner class");
+ }
+
+ public void test142(){
+ runTest("parsing of parenthesized 'this' (in returns)");
+ }
+
+ public void test143(){
+ runTest("Strings are folded and interned correctly");
+ }
+
+ public void test144(){
+ runTest("Cast binds tighter than equality tests");
+ }
+
+ public void test145(){
+ runTest("Boundary base values can be parsed");
+ }
+
+ public void test146(){
+ runTest("State is passed correctly across nested annonymous inners");
+ }
+
+ public void test147(){
+ runTest("?: expressions should typecheck in interesting ways");
+ }
+
+ public void test148(){
+ runTest("cast expressions should allow casts to/from interfaces at compile-time.");
+ }
+
+ public void test149(){
+ runTest("various anonymous inner classes plus super types tests");
+ }
+
+ public void test150(){
+ runTest("Various comment syntaxes should be handled.");
+ }
+
+ public void test151(){
+ runTest("Abstract inner classes across package boundaries");
+ }
+
+ public void test152(){
+ runTest("inner classes accessing outers and some more inner class names");
+ }
+
+ public void test153(){
+ runTest("remember to cast folded values down to the proper types.");
+ }
+
+ public void test154(){
+ runTest("inner classes can be built using protected constructors in super");
+ }
+
+ public void test155(){
+ runTest("The current AspectJ compiler cannot parse qualified superclass constructor invocations");
+ }
+
+ public void test156(){
+ runTest("More thourough test of static members using full names");
+ }
+
+ public void test157(){
+ runTest("More thourough test of static members using imports");
+ }
+
+ public void test158(){
+ runTest("Looking in class Java for java.lang.String WITH separate compilation");
+ }
+
+ public void test159(){
+ runTest("Looking in class Java for java.lang.String WITHOUT separate compilation");
+ }
+
+ public void test160(){
+ runTest("Looking in class Java for java.lang.String WITH separate compilation with packages");
+ }
+
+ public void test161(){
+ runTest("Looking in class Java for java.lang.String WITHOUT separate compilation with packages");
+ }
+
+ public void test162(){
+ runTest("Testing ternary operations.");
+ }
+
+ public void test163(){
+ runTest("Lifting locals in switch statements.");
+ }
+
+ public void test164(){
+ runTest("Getting confused when looking up method signatures");
+ }
+
+ public void test165(){
+ runTest("Not recognizing the chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'");
+ }
+
+ public void test166(){
+ runTest("Test chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7' with a case statement");
+ }
+
+ public void test167(){
+ runTest("Checking character values with all the unicode chars.");
+ }
+
+ public void test168(){
+ runTest("Trouble finding methods with the same name and different parameter types");
+ }
+
+ public void test169(){
+ runTest("Binding non-public static inner classes of interfaces in other packages");
+ }
+
+ public void test170(){
+ runTest("Not recognizing the octal chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'");
+ }
+
+ public void test171(){
+ runTest("Members with the same name as their package cause confusion with fully-qualified names.");
+ }
+
+ public void test172(){
+ runTest("Fully-qual'ed names with same start as variable names");
+ }
+
+ public void test173(){
+ runTest("Fully qualifying inner classes within annonymous classes causes problems.");
+ }
+
+ public void test174(){
+ runTest("Calls to methods in outer annonymous classes are being qual's incorrectly with 'this'");
+ }
+
+ public void test175(){
+ runTest("Reading inner classes from source and bytecode (1) -- was failing");
+ }
+
+ public void test176(){
+ runTest("Reading inner classes from source and bytecode (2)");
+ }
+
+ public void test177(){
+ runTest("Reading inner classes from source and bytecode (3)");
+ }
+
+ public void test178(){
+ runTest("Not lifting types correctly with bytes and shorts with ternary ops");
+ }
+
+ public void test179(){
+ runTest("Not looking up methods inside of anonymous declarations correctly.");
+ }
+
+ public void test180(){
+ runTest("Resolving extended classes with array parameters");
+ }
+
+ public void test181(){
+ runTest("Assignments as second arguments in ternary operators.");
+ }
+
+ public void test182(){
+ runTest("Conflicting inner classes with interfaces.");
+ }
+
+ public void test183(){
+ runTest("confusions of casts and parens");
+ }
+
+ public void test184(){
+ runTest("default constructors seen by inner classes subtyping outers");
+ }
+
+ public void test185(){
+ runTest("folding fields set to anonymous instances containing self-references");
+ }
+
+ public void test186(){
+ runTest("finally at the end of a method that needs to return");
+ }
+
+ public void test187(){
+ runTest("overriding methods from object in interfaces and multiple-inheritance");
+ }
+
+ public void test188(){
+ runTest("private fields in an outer class accessed by an inner which also extends the outer");
+ }
+
+ public void test189(){
+ runTest("breaking out of a labeled block inside of an if");
+ }
+
+ public void test190(){
+ runTest("abstractifying a method and getting it back through super");
+ }
+
+ public void test191(){
+ runTest("Packages and static classes with the same name produce compile errors.");
+ }
+
+ public void test192(){
+ runTest("Inner types must generate classfiles with only Public/Default access flags.");
+ }
+
+ public void test193(){
+ runTest("Default constructors have same access as their enclosing type");
+ }
+
+ public void test194(){
+ runTest("Returning primitive values matching method return type (minimal)");
+ }
+
+ public void test195(){
+ runTest("Flow analysis and if(true)");
+ }
+
+ public void test196(){
+ runTest("packages and generated inner types (for I.class)");
+ }
+
+ public void test197(){
+ runTest("A.this exprs match by exact type matching");
+ }
+
+ public void test198(){
+ runTest("Implicit this for new inner instance must be avaliable");
+ }
+
+ public void test199(){
+ runTest("Inners can reference protected fields of their outer's super.");
+ }
+
+ public void test200(){
+ runTest("Primitives that special case for a constant arm should work");
+ }
+
+ public void test201(){
+ runTest("Parenthesized true and false don't parse");
+ }
+
+ public void test202(){
+ runTest("Field sets to public fields of private fields of enclosing types");
+ }
+
+ public void test203(){
+ runTest("Constant values should be stored with the correct type of their fields");
+ }
+
+ public void test204(){
+ runTest("Local variables in initializers should not be treated as blank final fields");
+ }
+
+ public void test205(){
+ runTest("Binops aren't allowed as update stmts in for loops");
+ }
+
+ public void test206(){
+ runTest("Can't avoid doing division in case of div by zero");
+ }
+
+ public void test207(){
+ runTest("Testing frames w/greater than FF locals and 7F incs (i.e., WIDE instruction)");
+ }
+
+ public void test208(){
+ runTest("correct numeric literals");
+ }
+
+ public void test209(){
+ runTest("invalid numeric literals");
+ }
+
+ public void test210(){
+ runTest("inner types can't have the same simple name as an enclosing type");
+ }
+
+ public void test211(){
+ runTest("test the unops and binops with various values");
+ }
+
+ public void test212(){
+ runTest("test + and += for strings and variously typed values");
+ }
+
+ public void test213(){
+ runTest("test try/catch/finally statements");
+ }
+
+ public void test214(){
+ runTest("local types can be bound in the signatures of other local types");
+ }
+
+ public void test215(){
+ runTest("type and package name conflicts are resolved happily (2)");
+ }
+
+ public void test216(){
+ runTest("try statements work sorta like scoped items for exception flow control");
+ }
+
+ public void test217(){
+ runTest("qualified this must work exactly, not based on subtypes");
+ }
+
+ public void test218(){
+ runTest("nested finally blocks have interesting frame location problems");
+ }
+
+ public void test219(){
+ runTest("nested synchronized blocks have interesting frame location problems");
+ }
+
+ public void test220(){
+ runTest("anonymous inner classes with inner types");
+ }
+
+ public void test221(){
+ runTest("qualified super call expr");
+ }
+
+ public void test222(){
+ runTest("interfaces with non-explicitly static inner classes");
+ }
+
+ public void test223(){
+ runTest("Operands work correctly");
+ }
+
+ public void test224(){
+ runTest("simple tests of throws and for stmt typing");
+ }
+
+ public void test225(){
+ runTest("test for not folding circular constants");
+ }
+
+ public void test226(){
+ runTest("continue targets must be continuable");
+ }
+
+ public void test227(){
+ runTest("qualified this to non-inner should be caught");
+ }
+
+ public void test228(){
+ runTest("Cannot bind a name.");
+ }
+
+ public void test229(){
+ runTest("interface declaration not permitted in local method scope");
+ }
+
+ public void test230(){
+ runTest("Locals inside other locals, ordering of processing [eh]");
+ }
+
+ public void test231(){
+ runTest("asserts");
+ }
+
+ public void test232(){
+ runTest("non-constant static final fields marked as final in .class");
+ }
+
+ public void test233(){
+ runTest("handle multiple nested inner classes");
+ }
+
+ public void test234(){
+ runTest("advice on a static method");
+ }
+
+ public void test235(){
+ runTest("inner constructor syntax causes compile error");
+ }
+
+ public void test236(){
+ runTest("widening of method parameters to match javac");
+ }
+
+ public void test237(){
+ runTest("parenthesized string literals matching primitive type names");
+ }
+
+ public void test238(){
+ runTest("simple type coercions tests");
+ }
+
+ public void test239(){
+ runTest("order of type declarations shouldn't matter");
+ }
+
+ public void test240(){
+ runTest("Scanner non recognizing strictfp.");
+ }
+
+ public void test241(){
+ runTest("Crashes when a lot of zeros are in front of a double variable [!!! purejava]");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/purejava/pureJava-tests.xml b/tests/src/org/aspectj/systemtest/purejava/pureJava-tests.xml
new file mode 100644
index 000000000..9864ffe79
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/purejava/pureJava-tests.xml
@@ -0,0 +1,1894 @@
+<!-- Pure Java Tests -->
+
+ <ajc-test dir="pureJava/test120" title="unicodes and literals"
+ keywords="from-base,purejava">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/test126" title="For Statement"
+ keywords="from-base,purejava">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/test133"
+ title="correct super call lookup for method().name()"
+ keywords="from-base,purejava">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="99"
+ title="combined logic expression (handling coericions vs. parens)"
+ keywords="from-java,purejava">
+ <compile files="CombinedLogic.java"/>
+ <run class="CombinedLogic"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="99"
+ title="comment after class closes (with no new line at end)"
+ keywords="from-java,purejava">
+ <compile files="CommentAfterClass.java"/>
+ <run class="CommentAfterClass"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="108" title="multi-dimensional array initializers"
+ keywords="from-java,purejava">
+ <compile files="MultiArrays.java"/>
+ <run class="MultiArrays"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="125"
+ title="probelm with the generated names of exceptions"
+ keywords="from-java,purejava">
+ <compile files="ExceptionNames.java"/>
+ <run class="ExceptionNames"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="109"
+ title="checks if the class field can be used on all of the primitive types"
+ keywords="from-java,purejava">
+ <compile files="ClassFieldOnPrimitiveType.java"/>
+ <run class="ClassFieldOnPrimitiveType"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Doesn't parse an array-returning method that throws an exception"
+ keywords="from-java,purejava">
+ <compile files="ArrayMethod.java"/>
+ <run class="ArrayMethod"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="check that nested constructions of local classes work"
+ keywords="from-java,purejava">
+ <compile files="NestedConstructionsOfLocalClasses.java"/>
+ <run class="NestedConstructionsOfLocalClasses"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Make sure anonymous classes can have non-nullary constructors"
+ keywords="from-java,purejava">
+ <compile files="NonNullaryAnonymous.java"/>
+ <run class="NonNullaryAnonymous"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="417"
+ title="Full names are dropped from inner interfaces"
+ keywords="from-java,purejava">
+ <compile files="PR417a.java"/>
+ <run class="PR417a"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="417"
+ title="Making sure full names stay on static inner classes"
+ keywords="from-java,purejava">
+ <compile files="PR417b.java"/>
+ <run class="PR417b"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="408"
+ title="Not binding constructor when using more than one compilation"
+ keywords="from-java,purejava">
+ <compile files="OuterAbstract_PR408.java"/>
+ <compile files="ExtendsOuterAbstract_PR408.java"/>
+ <compile files="ConstructorNotFound_PR408.java"/>
+ <run class="ConstructorNotFound_PR408"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="return;;; is not really legal"
+ keywords="from-java,purejava">
+ <compile files="ReachableEmpty.java">
+ <message kind="error" line="5"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="13"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="ajc treating Throwable as checked, issuing error if not found"
+ keywords="from-java,purejava">
+ <compile files="FalseThrowsCE.java"/>
+ <run class="FalseThrowsCE"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="328"
+ title="package protected classes becoming public"
+ keywords="from-java,purejava">
+ <compile files="PR328.java"/>
+ <run class="PR328"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="IOException on windows if nul used as identifier"
+ keywords="from-java,purejava">
+ <compile files="NulIOException.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="NullPointerException (not compiler error) when extending non-static inner class"
+ keywords="from-java,purejava">
+ <compile files="ExtendInnerCE.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="compiler flags final static variable as indefinite in member assignment."
+ keywords="from-java,purejava">
+ <compile files="DefiniteStatic.java"/>
+ <run class="DefiniteStatic"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="confirm no IOException on windows if nul used as identifier"
+ keywords="from-java,purejava">
+ <compile files="NulIOException2.java"/>
+ <run class="NulIOException2"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="final constructor parameter causes incorrect compiler error"
+ keywords="from-java,purejava">
+ <compile files="FinalConstructorParm.java"/>
+ <run class="FinalConstructorParm"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Error expected for field of type void"
+ keywords="from-java,purejava">
+ <compile files="VoidField.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="4"/>
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Error expected for constructor in interfaces"
+ keywords="from-java,purejava">
+ <compile files="InterfaceConstructor.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="6"/>
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="558"
+ title="class name for identifier as String should provoke error"
+ keywords="from-java,purejava">
+ <compile files="PR558.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="567"
+ title="cyclic interface inheritance not detected if no classes implement the interfaces"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="CyclicInterfaceInheritance.java"
+ options="!eclipse">
+ <message kind="error" line="14"/>
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="567" title="cyclic class inheritance"
+ keywords="from-java,purejava">
+ <compile files="CyclicClassInheritance.java">
+ <message kind="error" line="11"/>
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <!-- broken test - both javac and eclipse give error on line 35 -->
+ <!--
+ <ajc-test dir="pureJava" title="Type names are not expressions on their own"
+ keywords="from-java,purejava">
+ <compile files="TypeExprErrors.java">
+ <message kind="error" line="10"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ <message kind="error" line="22"/>
+ <message kind="error" line="23"/>
+ <message kind="error" line="24"/>
+ <message kind="error" line="25"/>
+ <message kind="error" line="26"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="28"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="30"/>
+ <message kind="error" line="31"/>
+ <message kind="error" line="32"/>
+ <message kind="error" line="33"/>
+ <message kind="error" line="34"/>
+ <message kind="error" line="36"/>
+ <message kind="error" line="37"/>
+ </compile>
+ </ajc-test>
+ -->
+
+ <ajc-test dir="pureJava/nameConflicts"
+ title="type and package name conflicts are resolved happily (1a)"
+ keywords="from-java,purejava">
+ <compile files="p1/Main1.java,p1/Foo.java,p1/p2.java"/>
+ <run class="p1.Main1"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/nameConflicts"
+ title="(fails in USEJAVAC) type and package name conflicts are resolved happily (1b)"
+ keywords="from-java,purejava">
+ <compile files="p1.java,p1/p2/Foo.java"/>
+ <compile files="p1/Main1.java,p1/Foo.java,p1/p2.java"/>
+ <run class="p1.Main1"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/nameConflicts"
+ title="type and package name conflicts caught as errors (1)"
+ keywords="from-java,purejava">
+ <compile files="p1/p2.java,p1/Main1.java,p1/Foo.java,p1/p2/Foo.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="flow analysis where final variable set in another constructor"
+ keywords="from-java,purejava">
+ <compile files="ConstructorFlow.java"/>
+ <run class="ConstructorFlow"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="584"
+ title="Can construct inner classes using qualified expressions"
+ keywords="from-java,purejava">
+ <compile files="PR584.java"/>
+ <run class="PR584"/>
+ </ajc-test>
+
+ <ajc-test dir="new/protectedStatic" pr="585"
+ title="subclass unable to access protected static methods using type-qualified references"
+ keywords="from-java,purejava">
+ <compile files="SubClass.java,pack/SuperClass.java"/>
+ <run class="SubClass"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="588" title="Undefined inner class constructor"
+ keywords="from-java,purejava">
+ <compile files="UndefinedInner.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/packagePrefix" pr="574"
+ title="classes that are package prefixes are illegal"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="p/prefix.java,p/prefix/SomeClass.java"
+ options="!eclipse">
+ <message kind="error" line="2"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/introTypeMissing"
+ title="valid type expressions for introduced type testing"
+ keywords="from-java,purejava">
+ <compile files="TargetClass.java,Util.java"/>
+ <run class="TargetClass"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="PR591 compiler error expected when directly calling unimplemented abstract method using super"
+ keywords="from-java,purejava">
+ <compile files="AbstractMethodCall.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="suggested by Jacks 15.28-qualified-namestr tests"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="NonConstants.java"
+ options="!eclipse">
+ <message kind="error" line="13"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="15"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="suggested by jacks 3.7-15 all comments must be closed"
+ keywords="from-java,purejava">
+ <compile files="OpenComment.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/classaccess"
+ title="package class access not enforced outside of package"
+ keywords="from-java,purejava">
+ <compile files="main/Main.java,pack1/Target.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="631" title="expecting CE for ambiguous reference"
+ keywords="from-java,purejava">
+ <compile files="AmbiguousClassReference.java">
+ <message kind="error" line="11"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="643" title="try without catch or finally"
+ keywords="from-java,purejava,message-vary">
+ <compile files="TryNoCatchCE.java"
+ options="!eclipse">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="642" title="invalid floating-point constant"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="ParsingFloatCE.java"
+ options="!eclipse">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new/subaspects" pr="647"
+ title="concrete aspect unable to access abstract package-private method in parent for overriding"
+ keywords="from-java,purejava,messages-vary"
+ comment="XXX fix source - package-private">
+ <compile files="parent/ParentMethodCE.java,child/ChildMethodCE.java"
+ options="!eclipse">
+ <message kind="warning" line="28"/>
+ <message kind="error" line="27"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="super reference used to disambiguate names of different but compatible types"
+ keywords="from-java,purejava">
+ <compile files="SuperDisambiguatingType.java"/>
+ <run class="SuperDisambiguatingType"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="anonymous explicit inner constructors"
+ keywords="from-java,purejava">
+ <compile files="QualifiedNewCP.java"/>
+ <run class="QualifiedNewCP"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Overruning the lineStarts buffer, DO NOT EDIT THIS FILE!!!!"
+ keywords="from-java,purejava">
+ <compile files="AJError.java"/>
+ <run class="AJError"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="701" title="no CE for unambiguous type reference"
+ keywords="from-java,purejava">
+ <compile files="UnambiguousClassReference3CP.java"/>
+ <run class="UnambiguousClassReference3CP"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="701"
+ title="CE for ambiguous type reference (imports)"
+ keywords="from-java,purejava">
+ <compile files="AmbiguousClassReference2CE.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="701"
+ title="CE for ambiguous type reference (two type declarations)"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="AmbiguousClassReference3CE.java"
+ options="!eclipse">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="701"
+ title="CE for ambiguous type reference (two inner types)"
+ keywords="from-java,purejava,messages-vary">
+ <compile files="AmbiguousClassReference4CE.java"
+ options="!eclipse">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="709" title="final assignment in loop"
+ keywords="from-java,purejava">
+ <compile files="FinalInLoop.java"/>
+ <run class="FinalInLoop"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="private super access in inners"
+ keywords="from-java,purejava">
+ <compile files="PrivateSuperInnerAccess.java"/>
+ <run class="PrivateSuperInnerAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (8)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier8CE.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (9)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier9CE.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (10)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier10CE.java">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (14)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier14CE.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (15)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier15CE.java">
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested interface does not require new qualifier (16)"
+ keywords="from-java,purejava">
+ <compile files="InvalidNewQualifier16CE.java">
+ <message kind="error" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="check that constructor name's match the enclosing type"
+ keywords="from-errors,purejava">
+ <compile files="BadConstructorName.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="errors for not applicable or accessible methods"
+ keywords="from-errors,purejava">
+ <compile files="MethodsNotFound.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="8"/>
+ <message kind="error" line="12"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" pr="218"
+ title="import statement within class body crashes compiler"
+ keywords="from-errors,purejava">
+ <compile files="ImportWithinClassBody.java">
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Accessing instance fields and instance methods statically."
+ keywords="from-errors,purejava">
+ <compile files="AccessingInstanceFieldsStatically.java">
+ <message kind="error" line="15"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="26"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="30"/>
+ <message kind="error" line="38"/>
+ <message kind="error" line="39"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when a cast is within another cast"
+ keywords="from-errors,purejava">
+ <compile files="CastInCast.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when a cast of the form )int) appears"
+ keywords="from-errors,purejava,messages-vary">
+ <compile files="BadCast.java"
+ options="!eclipse">
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when the closing brace is reversed"
+ keywords="from-errors,purejava,messages-vary">
+ <compile files="ClosingBrace.java"
+ options="!eclipse">
+ <message kind="error" line="11"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Crashes when a method name is missing in a call -- e.g. 'System.out.();'"
+ keywords="from-errors,purejava">
+ <compile files="NoMethodName.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when a bad r-value appears."
+ keywords="from-errors,purejava">
+ <compile files="BadValue.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Two underscores as a variables causes a crash"
+ keywords="from-errors,purejava">
+ <compile files="BadVar.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Crashes when assigning to a final static in an intializer and declaration"
+ keywords="from-errors,purejava">
+ <compile files="FinalStatic.java">
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when two dots appear instead of one"
+ keywords="from-errors,purejava">
+ <compile files="TwoDots.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Crashes when there're stray dots"
+ keywords="from-errors,purejava">
+ <compile files="StrayDot.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Stray characters cause a crash"
+ comment="XXX public class in wrong file"
+ keywords="from-errors,purejava">
+ <compile files="StraySlash.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Colon instead of a semi-colon causes a crash"
+ comment="XXX public class in wrong file"
+ keywords="from-errors,purejava">
+ <compile files="Colon.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="type error in initializer caught by ajc, not javac"
+ keywords="from-errors,purejava">
+ <compile files="ArrayInitializerType.java">
+ <message kind="error" line="2"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Circular inheritance with classes causes a stack overflow."
+ keywords="from-errors,purejava">
+ <compile files="CircularExtends.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="Missing ;" keywords="from-errors,purejava">
+ <compile files="PR405.java">
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="cast expressions should not allow casts between ifaces and array types"
+ keywords="from-errors,purejava">
+ <compile files="InterfaceArrayCast.java">
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="parsing errors for various bad forms of NewArrayExprs."
+ keywords="from-errors,purejava">
+ <compile files="BadNewArrayExprs.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="5"/>
+ <message kind="error" line="6"/>
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="good error for bad field and inner class references"
+ keywords="from-errors,purejava">
+ <compile files="BadReferences.java">
+ <message kind="error" line="3"/>
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Implementing a non-interface used to crash the compiler."
+ keywords="from-errors,purejava">
+ <compile files="PR333.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="error of no return statement detected not by ajc but by javac (line 4)"
+ keywords="from-errors,purejava">
+ <compile files="NoReturnStatementSimple.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="class and interface extension"
+ keywords="from-errors,purejava,messages-vary">
+ <compile files="BadExtension.java"
+ options="!eclipse">
+ <message kind="error" line="7"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="21"/>
+ <message kind="error" line="35"/>
+ <message kind="error" line="38"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="types in throws clauses"
+ keywords="from-errors,purejava">
+ <compile files="ThrowsClause.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="4"/>
+ <message kind="error" line="13"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="bad switch syntax"
+ keywords="from-errors,purejava">
+ <compile files="Switch.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Referencing various things from static contexts"
+ keywords="from-errors,purejava">
+ <compile files="StaticContexts.java">
+ <message kind="error" line="11"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="28"/>
+ <message kind="error" line="31"/>
+ <message kind="error" line="35"/>
+ <message kind="error" line="36"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="Some expressions are illegal expression statements"
+ keywords="from-errors,purejava">
+ <compile files="BadExpressionStatement.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="illegal forward reference"
+ keywords="from-errors,purejava">
+ <compile files="IllegalForwardReference.java">
+ <message kind="error" line="9"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="protected accessibility"
+ keywords="from-errors,purejava">
+ <compile files="protectedAccess/Main.java,protectedAccess/p1/C1.java">
+ <message kind="error" line="26"/>
+ <message kind="error" line="28"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="31"/>
+ <message kind="error" line="37"/>
+ <message kind="error" line="45"/>
+ <message kind="error" line="46"/>
+ <message kind="error" line="54"/>
+ <message kind="error" line="55"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="parse-time illegal modifiers"
+ keywords="from-errors,purejava">
+ <compile files="Modifiers1.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="3"/>
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="check-time illegal modifiers"
+ keywords="from-errors,purejava">
+ <compile files="Modifiers.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="3"/>
+ <message kind="error" line="4"/>
+ <message kind="error" line="6"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="8"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="11"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors" title="illegal synchronized stmts"
+ keywords="from-errors,purejava,messages-vary">
+ <compile files="BadSynchronized.java"
+ options="!eclipse">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="modifiers on interface members"
+ keywords="from-errors,purejava">
+ <compile files="InterfaceMembers.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="3"/>
+ <message kind="error" line="4"/>
+ <message kind="error" line="5"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="8"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="good errors (and not too many) for missing members"
+ comment="XXX import of class in default package"
+
+ keywords="from-errors,purejava">
+ <compile files="NotFound.java">
+ <message kind="error" line="1"/>
+ <message kind="error" line="2"/>
+ <message kind="error" line="6"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="16"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="536"
+ title="expecting compile failures with subclass narrowing scope of superclass methods or accessing private superclass variables"
+ keywords="from-errors,purejava">
+ <compile files="RestrictingVisibilityCF.java">
+ <message kind="error" line="27"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="31"/>
+ <message kind="error" line="39"/>
+ <message kind="error" line="41"/>
+ <message kind="error" line="46"/>
+ <message kind="error" line="48"/>
+ <message kind="error" line="53"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="inner classes may not have static non-constant members"
+ keywords="from-errors,purejava">
+ <compile files="InnerMembers.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ <message kind="error" line="11"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="flow analysis with local types"
+ keywords="from-errors,purejava">
+ <compile files="InnerFlow.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="PR584 Can construct inner classes using qualified expressions"
+ keywords="from-resolved_10rc3,purejava">
+ <compile files="PR584.java"/>
+ <run class="PR584"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="715" title="incrementing objects, arrays - 2"
+ keywords="from-resolved_104,purejava">
+ <compile files="ArrayInc2CE.java">
+ <message kind="error" line="12"/>
+ <message kind="error" line="13"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="715" title="incrementing objects, arrays CE"
+ keywords="from-resolved_104,purejava,messages-vary">
+ <compile files="ArrayIncCE.java"
+ options="!eclipse">
+ <message kind="error" line="15"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="715" title="incrementing objects, arrays - 3"
+ keywords="from-resolved_104,purejava">
+ <compile files="ArrayInc3CE.java">
+ <message kind="error" line="15"/>
+ <message kind="error" line="16"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="715" title="incrementing objects, arrays"
+ keywords="from-resolved_104,purejava">
+ <compile files="ArrayInc.java"/>
+ <run class="ArrayInc"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="737"
+ title="no circularity errors simply because of inners (1)"
+ keywords="from-resolved_105,purejava">
+ <compile files="circle/Test1CP.java"/>
+ <run class="circle.Test1CP"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="737"
+ title="no circularity errors simply because of inners (2)"
+ keywords="from-resolved_105,purejava">
+ <compile files="circle/Test2CP.java"/>
+ <run class="circle.Test2CP"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="737"
+ title="should have circular inheritance errors (1)"
+ keywords="from-resolved_105,purejava,messages-vary">
+ <compile files="circle/Test1CF.java"
+ options="!eclipse">
+ <message kind="error" line="7"/>
+ <message kind="error" line="15"/>
+ <message kind="error" line="17"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="737"
+ title="should have circular inheritance errors (2)"
+ keywords="from-resolved_105,purejava,messages-vary">
+ <compile files="circle/Test2CF.java"
+ options="!eclipse">
+ <message kind="error" line="6"/>
+ <message kind="error" line="10"/>
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="728"
+ title="interface using preceding subinterface in its definition"
+ keywords="from-resolved_105,purejava">
+ <compile files="ParentUsingChild.java"/>
+ <run class="ParentUsingChild"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="645"
+ title="Parent interface using public inner interface of child in same file"
+ keywords="from-resolved_105,purejava">
+ <compile files="ParentInterfaceUsingChildInnerInterface.java"/>
+ <run class="ParentInterfaceUsingChildInnerInterface"/>
+ </ajc-test>
+
+ <ajc-test dir="errors"
+ title="a type is not allowed to extend or implement its own innner type"
+ keywords="from-resolved_105,purejava">
+ <compile files="NestedInterfaceTest.java">
+ <message kind="error" line="1"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="try requires block JLS 14.19"
+ keywords="from-resolved_105,purejava,messages-vary">
+ <compile files="TryBlockRequiredCE.java"
+ options="!eclipse">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="722" title="loop expressions not declarations"
+ keywords="from-resolved_105,purejava,messages-vary">
+ <compile files="DeclarationsInLoopsCE.java"
+ options="!eclipse">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+
+
+
+
+
+
+
+ <ajc-test dir="new" pr="663"
+ title="no error when public class is in file of a different name"
+ keywords="from-resolved_105,purejava">
+ <compile options="-strict" files="PublicClassWrongFilename.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="739"
+ title="local variables must be final to be accessed from inner class"
+ keywords="from-resolved_105,purejava">
+ <compile files="LocalsFromInnerCE.java">
+ <message kind="error" line="6"/>
+ <message kind="error" line="13"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="25"/>
+ <message kind="error" line="32"/>
+ <message kind="error" line="40"/>
+ <message kind="error" line="51"/>
+ <message kind="error" line="61"/>
+ <message kind="error" line="67"/>
+ <message kind="error" line="75"/>
+ <message kind="error" line="81"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="739"
+ title="final local variables may be accessed from inner class"
+ keywords="from-resolved_105,purejava">
+ <compile files="LocalsFromInnerCP.java"/>
+ <run class="LocalsFromInnerCP"/>
+ </ajc-test>
+
+
+ <ajc-test dir="pureJava" pr="723" title="missing package identifier"
+ keywords="from-resolved_105,purejava">
+ <compile files="MissingPackageCE.java">
+ <message kind="error" line="2"/>
+ </compile>
+ </ajc-test>
+ <ajc-test dir="new" pr="701"
+ title="CE for ambiguous type reference (two files in package)"
+ keywords="from-resolved_105,purejava">
+ <compile
+ files="ambiguousClass/AmbiguousReferent.java,ambiguousClass/AmbiguousClassReference.java">
+ <message kind="error" line="5"/>
+ </compile>
+ </ajc-test>
+
+
+ <ajc-test dir="new"
+ title="initializer can throw so long as all constructors declare so"
+ keywords="from-resolved_105,purejava">
+ <compile files="InitializerWithThrow.java"/>
+ <run class="InitializerWithThrow"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="interfaces may not contain initializers (bug found by jacks)"
+ keywords="from-resolved_105,purejava">
+ <compile files="InterfaceMembersCf.java">
+ <message kind="error" line="2"/>
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="initializers must be able to complete normally (found by jacks)"
+ keywords="from-resolved_105,purejava,messages-vary">
+ <compile files="InitializerFlowCf.java"
+ options="!eclipse">
+ <message kind="error" line="2"/>
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="more tests of super alone"
+ keywords="from-resolved_105,purejava">
+ <compile files="SuperIsWeird.java">
+ <message kind="error" line="9"/>
+ <message kind="error" line="13"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="752"
+ title="subclass access to enclosing super class private members"
+ keywords="from-resolved_105,purejava,fail-unimplemented">
+ <compile files="SubclassAccessToEnclosingSuperClassPrivate.java"/>
+ <run class="SubclassAccessToEnclosingSuperClassPrivate"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="various tests of switch bounds"
+ keywords="from-resolved_106,purejava">
+ <compile files="SwitchBounds.java"/>
+ <run class="SwitchBounds"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="601"
+ title="VerifyError if nested sync returning result"
+ comment="XXX inconsistent behavior?"
+ keywords="from-resolved_10final,purejava">
+ <compile files="NestedSyncWithResult.java"/>
+ <run class="NestedSyncWithResult"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new" pr="134"
+ title="import of a class in the default package"
+ keywords="from-broken14usejavac,purejava">
+ <compile files="ImportFromUnnamed.java,DeclaredExcs.java"/>
+ <run class="ImportFromUnnamed"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing static interfaces with import statements"
+ keywords="from-broken14usejavac,purejava">
+ <compile files="ClassWithStaticInnerInterfaces.java"/>
+ <compile files="ImportingStaticInnerInterfaces_PR386.java"/>
+ <run class="ImportingStaticInnerInterfaces_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing static interfaces with import statements stars"
+ keywords="purejava,from-broken14usejavac">
+ <compile files="ClassWithStaticInnerInterfaces.java"/>
+ <compile files="ImportingStaticInnerInterfacesStars_PR386.java"/>
+ <run class="ImportingStaticInnerInterfacesStars_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing static interfaces with import statements stars 2"
+ keywords="purejava,from-broken14usejavac">
+ <compile files="ClassWithStaticInnerInterfaces.java"/>
+ <compile files="ImportingStaticInnerInterfacesStars2_PR386.java"/>
+ <run class="ImportingStaticInnerInterfacesStars2_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing static interfaces with import statements stars 3"
+ keywords="purejava,from-broken14usejavac">
+ <compile files="ClassWithStaticInnerInterfaces.java"/>
+ <compile files="ImportingStaticInnerInterfacesStars3_PR386.java"/>
+ <run class="ImportingStaticInnerInterfacesStars3_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing interfaces with import statements"
+ keywords="purejava,from-broken14usejavac">
+ <compile
+ files="ClassWithInnerInterfaces.java,ImportingInnerInterfaces_PR386.java"/>
+ <run class="ImportingInnerInterfaces_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing interfaces with import statements stars"
+ keywords="purejava,from-broken14usejavac">
+ <compile
+ files="ClassWithInnerInterfaces.java,ImportingInnerInterfacesStars_PR386.java"/>
+ <run class="ImportingInnerInterfacesStars_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing interfaces with import statements stars 2"
+ keywords="purejava,from-broken14usejavac">
+ <compile
+ files="ClassWithInnerInterfaces.java,ImportingInnerInterfacesStars2_PR386.java"/>
+ <run class="ImportingInnerInterfacesStars2_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="386"
+ title="Referencing interfaces with import statements stars 3"
+ keywords="purejava,from-broken14usejavac">
+ <compile
+ files="ClassWithInnerInterfaces.java,ImportingInnerInterfacesStars3_PR386.java"/>
+ <run class="ImportingInnerInterfacesStars3_PR386"/>
+ </ajc-test>
+
+ <ajc-test dir="new/PR862" pr="862"
+ title="import any inner from interface implementor"
+ keywords="purejava">
+ <compile files="pack/ImportInnerFromInterfaceImplementor.java">
+ <dir-changes added="pack.ImportInnerFromInterfaceImplementor"/>
+ </compile>
+ <run class="pack.ImportInnerFromInterfaceImplementor"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/equalsMethOnStr" pr="214"
+ title="equals method on quoted strings" keywords="from-java">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/anonInnerClass" pr="294"
+ title="anonymous inner class" keywords="from-java">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="parsing of parenthesized 'this' (in returns)" keywords="from-java">
+ <compile files="ReturnThis.java"/>
+ <run class="ReturnThis"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Strings are folded and interned correctly"
+ keywords="from-java">
+ <compile files="StringFold.java"/>
+ <run class="StringFold"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Cast binds tighter than equality tests"
+ keywords="from-java">
+ <compile files="CastAndBinary.java"/>
+ <run class="CastAndBinary"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Boundary base values can be parsed"
+ keywords="from-java">
+ <compile files="BoundaryNums.java"/>
+ <run class="BoundaryNums"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="State is passed correctly across nested annonymous inners"
+ keywords="from-java">
+ <compile files="NestedInners.java"/>
+ <run class="NestedInners"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="?: expressions should typecheck in interesting ways"
+ keywords="from-java">
+ <compile files="TriTestTypecheck.java"/>
+ <run class="TriTestTypecheck"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="cast expressions should allow casts to/from interfaces at compile-time."
+ keywords="from-java">
+ <compile files="InterfaceCast.java"/>
+ <run class="InterfaceCast"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="various anonymous inner classes plus super types tests"
+ keywords="from-java">
+ <compile files="InnerSuper.java"/>
+ <run class="InnerSuper"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Various comment syntaxes should be handled."
+ keywords="from-java">
+ <compile files="CommentSyntax.java"/>
+ <run class="CommentSyntax"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/abstractInner"
+ title="Abstract inner classes across package boundaries"
+ keywords="from-java">
+ <compile files="C.java,pkg/A.java"/>
+ <run class="C"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="inner classes accessing outers and some more inner class names"
+ keywords="from-java">
+ <compile files="InnerAccess.java"/>
+ <run class="InnerAccess"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="remember to cast folded values down to the proper types."
+ keywords="from-java">
+ <compile files="CastingFoldedValues.java"/>
+ <run class="CastingFoldedValues"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="inner classes can be built using protected constructors in super"
+ keywords="from-java">
+ <compile files="VariousConstructors.java"/>
+ <run class="VariousConstructors"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="401"
+ title="The current AspectJ compiler cannot parse qualified superclass constructor invocations"
+ keywords="from-java">
+ <compile files="QualifiedSuperClassConstructorInvocations_PR401.java"/>
+ <run class="QualifiedSuperClassConstructorInvocations_PR401"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="421"
+ title="More thourough test of static members using full names"
+ keywords="from-java">
+ <compile
+ files="Statics.java,StaticMembers_PR421.java,p1/C1.java,p1/P1Statics.java,p1/subp1/SubC1.java,p1/p2/P1P2Statics.java"/>
+ <run class="StaticMembers_PR421"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="421"
+ title="More thourough test of static members using imports"
+ keywords="from-java">
+ <compile
+ files="Statics.java,StaticMembersImports_PR421.java,p1/C1.java,p1/P1Statics.java,p1/subp1/SubC1.java,p1/p2/P1P2Statics.java"/>
+ <run class="StaticMembersImports_PR421"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/conflictingPackageNames" pr="437"
+ title="Looking in class Java for java.lang.String WITH separate compilation"
+ keywords="from-java">
+ <compile files="Java.java"/>
+ <compile files="Main.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/conflictingPackageNames" pr="437"
+ title="Looking in class Java for java.lang.String WITHOUT separate compilation"
+ keywords="from-java">
+ <compile files="Main.java,Java.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/conflictingPackageNamesWithPackages" pr="437"
+ title="Looking in class Java for java.lang.String WITH separate compilation with packages"
+ keywords="from-java">
+ <compile files="Java.java"/>
+ <compile files="Main.java"/>
+ <run class="conflictingPackageNamesWithPackages.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/conflictingPackageNamesWithPackages" pr="437"
+ title="Looking in class Java for java.lang.String WITHOUT separate compilation with packages"
+ keywords="from-java">
+ <compile files="Main.java,Java.java"/>
+ <run class="conflictingPackageNamesWithPackages.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Testing ternary operations."
+ keywords="from-java">
+ <compile files="MultiTernaryOps.java"/>
+ <run class="MultiTernaryOps"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Lifting locals in switch statements."
+ keywords="from-java">
+ <compile files="SwitchStmtLocals.java"/>
+ <run class="SwitchStmtLocals"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Getting confused when looking up method signatures"
+ keywords="from-java">
+ <compile files="MethodSigs.java"/>
+ <run class="MethodSigs"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Not recognizing the chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'"
+ keywords="from-java">
+ <compile files="Chars.java"/>
+ <run class="Chars"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Test chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7' with a case statement"
+ keywords="from-java">
+ <compile files="CaseClauses.java"/>
+ <run class="CaseClauses"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Checking character values with all the unicode chars."
+ keywords="from-java">
+ <compile files="CharsUnicode.java"/>
+ <run class="CharsUnicode"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Trouble finding methods with the same name and different parameter types"
+ keywords="from-java">
+ <compile files="MethodsWithTheSameName.java"/>
+ <run class="MethodsWithTheSameName"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Binding non-public static inner classes of interfaces in other packages"
+ keywords="from-java">
+ <compile
+ files="StaticClassesInInterfaces.java,anotherPackage/AnotherPackageInterface.java"/>
+ <run class="StaticClassesInInterfaces"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Not recognizing the octal chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'"
+ keywords="from-java">
+ <compile files="OctalChars.java"/>
+ <run class="OctalChars"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Members with the same name as their package cause confusion with fully-qualified names."
+ keywords="from-java">
+ <compile files="samenames/Main.java,samenames/Other.java"/>
+ <run class="samenames.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Fully-qual'ed names with same start as variable names"
+ keywords="from-java">
+ <compile files="FullNames.java"/>
+ <run class="FullNames"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Fully qualifying inner classes within annonymous classes causes problems."
+ keywords="from-java">
+ <compile files="InnerClassesInAnnonymousClasses.java"/>
+ <run class="InnerClassesInAnnonymousClasses"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Calls to methods in outer annonymous classes are being qual's incorrectly with 'this'"
+ keywords="from-java">
+ <compile files="MisplacedThisInAnnonymousInnerClasses.java"/>
+ <run class="MisplacedThisInAnnonymousInnerClasses"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/innersFromSourceAndBytecode"
+ title="Reading inner classes from source and bytecode (1) -- was failing"
+ keywords="from-java">
+ <compile files="C.java,D.java"/>
+ <compile files="Main.java,C.java"
+ includeClassesDir="true"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/innersFromSourceAndBytecode"
+ title="Reading inner classes from source and bytecode (2)"
+ keywords="from-java">
+ <compile files="Main.java,C.java,D.java"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/innersFromSourceAndBytecode"
+ title="Reading inner classes from source and bytecode (3)"
+ keywords="from-java">
+ <compile files="C.java,D.java"/>
+ <compile files="Main.java,C.java,D.java"
+ includeClassesDir="true"/>
+ <run class="Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Not lifting types correctly with bytes and shorts with ternary ops"
+ keywords="from-java">
+ <compile files="TernaryPrimitiveOps.java"/>
+ <run class="TernaryPrimitiveOps"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Not looking up methods inside of anonymous declarations correctly."
+ keywords="from-java">
+ <compile files="AnonymousMethodLookup.java"/>
+ <run class="AnonymousMethodLookup"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Resolving extended classes with array parameters"
+ keywords="from-java">
+ <compile files="ResolvingArrayParameters.java"/>
+ <run class="ResolvingArrayParameters"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Assignments as second arguments in ternary operators."
+ keywords="from-java">
+ <compile files="TernaryAssignments.java"/>
+ <run class="TernaryAssignments"/>
+ </ajc-test>
+
+
+ <ajc-test dir="pureJava" title="Conflicting inner classes with interfaces."
+ keywords="from-java">
+ <compile files="PR413.java"/>
+ <run class="PR413"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="confusions of casts and parens"
+ keywords="from-java">
+ <compile files="CastVsParen.java"/>
+ <run class="CastVsParen"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="default constructors seen by inner classes subtyping outers"
+ keywords="from-java">
+ <compile files="DefaultConsAndInner.java"/>
+ <run class="DefaultConsAndInner"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="folding fields set to anonymous instances containing self-references"
+ keywords="from-java">
+ <compile files="AnonFolding.java"/>
+ <run class="AnonFolding"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="finally at the end of a method that needs to return"
+ keywords="from-java">
+ <compile files="FinallyAndReturns.java"/>
+ <run class="FinallyAndReturns"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="overriding methods from object in interfaces and multiple-inheritance"
+ keywords="from-java">
+ <compile files="InterfaceAndObject.java"/>
+ <run class="InterfaceAndObject"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="private fields in an outer class accessed by an inner which also extends the outer"
+ keywords="from-java">
+ <compile files="PrivateFields.java"/>
+ <run class="PrivateFields"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="breaking out of a labeled block inside of an if"
+ keywords="from-java">
+ <compile files="Breaks.java"/>
+ <run class="Breaks"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="abstractifying a method and getting it back through super"
+ keywords="from-java">
+ <compile files="Abstracts.java"/>
+ <run class="Abstracts"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Packages and static classes with the same name produce compile errors."
+ keywords="from-java">
+ <compile files="PackagesAndStaticClassesWithTheSameName.java"/>
+ <run class="PackagesAndStaticClassesWithTheSameName"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/innerTypeModifiers"
+ title="Inner types must generate classfiles with only Public/Default access flags."
+ keywords="from-java">
+ <compile files="pkg1/Main.java,pkg2/Foo.java"/>
+ <run class="pkg1.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/innerDefaultConstructors"
+ title="Default constructors have same access as their enclosing type"
+ keywords="from-java">
+ <compile files="pkg1/Main.java,pkg2/Foo.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Returning primitive values matching method return type (minimal)"
+ keywords="from-java">
+ <compile files="ReturnTypes.java"/>
+ <run class="ReturnTypes"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Flow analysis and if(true)"
+ keywords="from-java">
+ <compile files="Flow.java"/>
+ <run class="Flow"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="packages and generated inner types (for I.class)"
+ keywords="from-java">
+ <compile files="InterfaceAndClass.java"/>
+ <run class="p.InterfaceAndClass"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="A.this exprs match by exact type matching"
+ keywords="from-java">
+ <compile files="QualifiedThisMatchesExactly.java">
+ <message kind="error" line="14"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Implicit this for new inner instance must be avaliable"
+ keywords="from-java">
+ <compile files="ImplicitThisMissing.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Inners can reference protected fields of their outer's super."
+ keywords="from-java">
+ <compile
+ files="protectedFieldRefInInner/Main.java,protectedFieldRefInInner/p1/C.java"/>
+ <run class="protectedFieldRefInInner.Main"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Primitives that special case for a constant arm should work"
+ keywords="from-java">
+ <compile files="OneArmedPrimitiveTests.java"/>
+ <run class="OneArmedPrimitiveTests"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Parenthesized true and false don't parse"
+ keywords="from-java">
+ <compile files="ParenKeywords.java"/>
+ <run class="ParenKeywords"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Field sets to public fields of private fields of enclosing types"
+ keywords="from-java">
+ <compile files="InnerFieldRef.java"/>
+ <run class="InnerFieldRef"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Constant values should be stored with the correct type of their fields"
+ keywords="from-java">
+ <compile files="ConstantValueConversion.java"/>
+ <run class="ConstantValueConversion"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Local variables in initializers should not be treated as blank final fields"
+ keywords="from-java">
+ <compile files="LocalInitializerVariableNotBlank.java"/>
+ <run class="LocalInitializerVariableNotBlank"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Binops aren't allowed as update stmts in for loops"
+ keywords="from-java">
+ <compile files="NonStmtInFor.java">
+ <message kind="error" line="3"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Can't avoid doing division in case of div by zero"
+ keywords="from-java">
+ <compile files="DivOpMustHappen.java"/>
+ <run class="DivOpMustHappen"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Testing frames w/greater than FF locals and 7F incs (i.e., WIDE instruction)"
+ keywords="from-java">
+ <compile files="BigFrameTest.java"/>
+ <run class="BigFrameTest"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="correct numeric literals"
+ keywords="from-java">
+ <compile files="LiteralsCp.java"/>
+ <run class="LiteralsCp"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="invalid numeric literals"
+ keywords="from-java">
+ <compile files="LiteralsCf.java">
+ <message kind="error" line="8"/>
+ <message kind="error" line="9"/>
+ <message kind="error" line="10"/>
+ <message kind="error" line="11"/>
+ <message kind="error" line="12"/>
+ <message kind="error" line="17"/>
+ <message kind="error" line="18"/>
+ <message kind="error" line="19"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ <message kind="error" line="22"/>
+ <message kind="error" line="23"/>
+ <message kind="error" line="25"/>
+ <message kind="error" line="27"/>
+ <message kind="error" line="28"/>
+ <message kind="error" line="29"/>
+ <message kind="error" line="30"/>
+ <message kind="error" line="32"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="538"
+ title="inner types can't have the same simple name as an enclosing type"
+ keywords="from-java">
+ <compile files="InnerNameConflictsCf.java">
+ <message kind="error" line="9"/>
+ <message kind="error" line="14"/>
+ <message kind="error" line="20"/>
+ <message kind="error" line="21"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="test the unops and binops with various values" keywords="from-java">
+ <compile files="BigOps.java"/>
+ <run class="BigOps"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="test + and += for strings and variously typed values"
+ keywords="from-java">
+ <compile files="BigString.java"/>
+ <run class="BigString"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="test try/catch/finally statements"
+ keywords="from-java">
+ <compile files="TryCatchFinally.java"/>
+ <run class="TryCatchFinally"/>
+ </ajc-test>
+
+
+ <ajc-test dir="pureJava" pr="547"
+ title="local types can be bound in the signatures of other local types"
+ keywords="from-resolved_10rc3,from-java">
+ <compile files="LocalInners.java"/>
+ <run class="LocalInners"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava/nameConflicts"
+ title="type and package name conflicts are resolved happily (2)"
+ keywords="from-java">
+ <compile files="p1/Main2.java,p1/p2/Foo.java"/>
+ <run class="p1.Main2"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="try statements work sorta like scoped items for exception flow control"
+ keywords="from-java">
+ <compile files="TryWorksLikeEnvironment.java"/>
+ <run class="TryWorksLikeEnvironment"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="qualified this must work exactly, not based on subtypes"
+ keywords="from-java">
+ <compile files="QualifiedThisExactness.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="nested finally blocks have interesting frame location problems"
+ keywords="from-java">
+ <compile files="NestedFinally.java"/>
+ <run class="NestedFinally"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="601"
+ title="nested synchronized blocks have interesting frame location problems"
+ keywords="from-java">
+ <compile files="NestedSynchronized.java"/>
+ <run class="NestedSynchronized"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="anonymous inner classes with inner types"
+ keywords="from-java">
+ <compile files="AnonymousWithInner.java"/>
+ <run class="AnonymousWithInner"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="651" title="qualified super call expr"
+ keywords="from-java">
+ <compile files="QualifiedSuperCall.java"/>
+ <run class="QualifiedSuperCall"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="680"
+ title="interfaces with non-explicitly static inner classes"
+ keywords="from-java">
+ <compile files="InterfaceAndInnerHelper.java"/>
+ <compile files="InterfaceAndInner.java"
+ includeClassesDir="true"/>
+ <run class="InterfaceAndInner"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="Operands work correctly"
+ keywords="from-bigjava">
+ <compile files="Ops.java"/>
+ <run class="Ops"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="simple tests of throws and for stmt typing"
+ keywords="from-errors">
+ <compile files="SimpleSpec.java">
+ <message kind="error" line="4"/>
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="test for not folding circular constants"
+ keywords="from-errors">
+ <compile files="CircularFolding.java">
+ <message kind="error" line="6"/>
+ <message kind="error" line="7"/>
+ <message kind="error" line="8"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" title="continue targets must be continuable"
+ keywords="from-errors">
+ <compile files="BadContinueTarget.java">
+ <message kind="error" line="6"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="qualified this to non-inner should be caught"
+ keywords="from-errors">
+ <compile files="BadQualifiedNew.java">
+ <message kind="error" line="4"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Cannot bind a name." keywords="from-resolved_10x,purejava">
+ <compile files="CannotReferenceSuper.java"/>
+ <run class="CannotReferenceSuper"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="721"
+ title="interface declaration not permitted in local method scope"
+ keywords="from-resolved_105">
+ <compile files="LocalInterfaceCE.java">
+ <message kind="error" line="5"/>
+ <message kind="error" line="8"/>
+ <message kind="error" line="11"/>
+ <message kind="error" line="15"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="pureJava"
+ title="Locals inside other locals, ordering of processing [eh]"
+ keywords="from-resolved_105">
+ <compile files="LocalInners2.java"/>
+ <run class="LocalInners2"/>
+ </ajc-test>
+
+ <ajc-test dir="pureJava" pr="866"
+ title="non-constant static final fields marked as final in .class">
+ <compile files="FinalStaticField.java"/>
+ <run class="FinalStaticField"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="handle multiple nested inner classes"
+ keywords="from-java">
+ <compile files="InnerHell.java"/>
+ <run class="InnerHell"/>
+ </ajc-test>
+
+ <ajc-test dir="new/volatileKeyword" pr="151"
+ title="advice on a static method" keywords="from-java">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/innerConsSyntax" pr="192"
+ title="inner constructor syntax causes compile error" keywords="from-java">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new/paramWidening" pr="195"
+ title="widening of method parameters to match javac" keywords="from-java">
+ <compile files="Driver.java"/>
+ <run class="Driver"/>
+ </ajc-test>
+
+ <ajc-test dir="new" pr="313"
+ title="parenthesized string literals matching primitive type names"
+ keywords="from-java">
+ <compile files="ParenPrimitive.java"/>
+ <run class="ParenPrimitive"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="simple type coercions tests" keywords="from-java">
+ <compile files="TypeCoercions.java"/>
+ <run class="TypeCoercions"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="order of type declarations shouldn't matter"
+ keywords="from-java">
+ <compile files="OrderOfTypes.java"/>
+ <run class="OrderOfTypes"/>
+ </ajc-test>
+
+ <ajc-test dir="new" title="Scanner non recognizing strictfp."
+ keywords="from-java">
+ <compile files="StrictFp.java"/>
+ <run class="StrictFp"/>
+ </ajc-test>
+
+ <ajc-test dir="new"
+ title="Crashes when a lot of zeros are in front of a double variable [!!! purejava]"
+ keywords="from-java">
+ <compile files="Zeros.java"/>
+ <run class="Zeros"/>
+ </ajc-test>
+
diff --git a/tests/src/org/aspectj/systemtest/purejava/pureJava.xml b/tests/src/org/aspectj/systemtest/purejava/pureJava.xml
new file mode 100644
index 000000000..1eb4b9f60
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/purejava/pureJava.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/purejava/pureJava-tests.xml">
+]>
+<!-- Pure Java Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/serialVerUID/SUIDTests.java b/tests/src/org/aspectj/systemtest/serialVerUID/SUIDTests.java
new file mode 100644
index 000000000..8f5241287
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/serialVerUID/SUIDTests.java
@@ -0,0 +1,96 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.serialVerUID;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class SUIDTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(SUIDTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml");
+ }
+
+
+ public void test001(){
+ runTest("SUID: Before execution advice");
+ }
+
+ public void test002(){
+ runTest("SUID: Around execution advice");
+ }
+
+ public void test003(){
+ runTest("SUID: Around closure execution advice (-Xlint:ignore)");
+ }
+
+ public void test004(){
+ runTest("SUID: Around closure execution advice");
+ }
+
+ public void test005(){
+ runTest("SUID: thisJoinPoint");
+ }
+
+ public void test006(){
+ runTest("SUID: thisJoinPoint with clinit method");
+ }
+
+ public void test007(){
+ runTest("SUID: After returning staticinitialization advice");
+ }
+
+ public void test008(){
+ runTest("SUID: After returning staticinitialization advice with serialVersionUID field");
+ }
+
+ public void test009(){
+ runTest("SUID: ITD field");
+ }
+
+ public void test010(){
+ runTest("SUID: ITD method");
+ }
+
+ public void test011(){
+ runTest("SUID: Declare extends");
+ }
+
+ public void test012(){
+ runTest("SUID: Declare implements (compile)");
+ }
+
+ public void test013(){
+ runTest("SUID: Declare implements non-Serializable (compile)");
+ }
+
+ public void test014(){
+ runTest("SUID: Declare implements Serializable (compile)");
+ }
+
+ public void test015(){
+ runTest("SUID: Declare implements (weave)");
+ }
+
+ public void test016(){
+ runTest("SUID: Priviliged aspect");
+ }
+
+ public void test017(){
+ runTest("SUID: Perthis aspect");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID-tests.xml b/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID-tests.xml
new file mode 100644
index 000000000..f121ac3f1
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID-tests.xml
@@ -0,0 +1,165 @@
+<!-- SUID Tests -->
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Before execution advice" pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, BeforeExecutionAdvice.aj" options="-Xlint:warning"/>
+ <run class="Util"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Around execution advice" comment="OK because around_body private" pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, AroundExecutionAdvice.aj" options="-Xlint:warning"/>
+ <run class="Util"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Around closure execution advice (-Xlint:ignore)" comment="OK because ignoring warnings"
+ pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, AroundClosureExecutionAdvice.aj" options="-Xlint:ignore"/>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Around closure execution advice" comment="Warning because around_body non-private"
+ pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, AroundClosureExecutionAdvice.aj"
+ xlintfile="Xlint.properties">
+ <message kind="warning" line="9"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: thisJoinPoint" comment="Warning because of introduced clinit" pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile
+ files="Test.java, Util.java, TJP.aj" options="-Xlint:warning">
+ <message kind="warning" line="6"/>
+ <message kind="warning" line="13"/>
+ <message kind="warning" line="17"/>
+ <message kind="warning" line="24"/>
+ <message kind="warning" line="31"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: thisJoinPoint with clinit method" comment="OK if tjp private and existing clinit"
+ pr="41181">
+ <compile files="ClinitTest.java, Util.java"/>
+ <run class="ClinitTest"/>
+ <compile files="ClinitTest.java, Util.java, TJP.aj" options="-Xlint:warning"/>
+ <run class="Util" options="-read"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: After returning staticinitialization advice" comment="Warning because of added clinit"
+ pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile
+ files="Test.java, Util.java, AfterReturningStaticinitializationAdvice.aj" options="-Xlint:warning">
+ <message kind="warning" line="6"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: After returning staticinitialization advice with serialVersionUID field"
+ comment="OK because of serialVersionUID field" pr="41181">
+ <compile files="SuidTest.java, Util.java" />
+ <run class="SuidTest"/>
+ <compile files="SuidTest.java, Util.java, AfterReturningStaticinitializationAdvice.aj" options="-Xlint:warning"/>
+ <run class="Util"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: ITD field" comment="Error because added field may not be initialized" pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, ITDField.aj" options="-Xlint:error">
+ <message kind="error" line="0"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: ITD method" comment="Warning because of added method" pr="41181">
+ <compile files="Test.java, Util.java" />
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, ITDMethod.aj" options="-Xlint:warning">
+ <message kind="warning" line="3"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Declare extends" comment="OK" pr="41181">
+ <compile files="Test.java, Util.java" />
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, DeclareExtends.aj" options="-Xlint:warning"/>
+ <run class="Util"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Declare implements (compile)" comment="Warning because of added interface" pr="41181">
+ <compile files="Test.java, Util.java" />
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, DeclareImplements.aj" options="-Xlint:warning">
+ <message kind="warning"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Declare implements non-Serializable (compile)" comment="OK because not Serializable"
+ pr="41181">
+ <compile files="NonSerializableTest.java, DeclareImplements.aj" options="-Xlint:warning"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Declare implements Serializable (compile)" comment="OK because adding Serializable"
+ pr="41181">
+ <compile files="NonSerializableTest.java, DeclareImplementsSerializable.aj" options="-Xlint:warning"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Declare implements (weave)" comment="Warning because of added interface" pr="41181">
+ <compile files="Test.java, Util.java" />
+ <run class="Test"/>
+ <compile files="injar.jar, DeclareImplements.aj" options="-Xlint:warning">
+ <message kind="warning" line="0"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID" title="SUID: Priviliged aspect" pr="41181">
+ <compile files="Test.java, Util.java"/>
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, PrivilegedAspect.aj" options="-Xlint:warning">
+ <message kind="warning" line="1"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs/serialVersionUID"
+ title="SUID: Perthis aspect"
+ comment="Warning because added of added interface MightHaveAspect. Added field is private transient"
+ pr="41181">
+ <compile files="Test.java, Util.java" />
+ <run class="Test"/>
+ <compile files="Test.java, Util.java, PerThisAspect.aj" options="-Xlint:warning">
+ <message kind="warning" line="0"/>
+ </compile>
+ <run class="Util" options="-fail"/>
+ </ajc-test>
+
+
diff --git a/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml b/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml
new file mode 100644
index 000000000..20bfa889d
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID-tests.xml">
+]>
+<!-- SUID Tests -->
+
+<suite>
+
+&tests;
+
+</suite>
diff --git a/tests/src/org/aspectj/systemtest/xlint/XLintTests.java b/tests/src/org/aspectj/systemtest/xlint/XLintTests.java
new file mode 100644
index 000000000..d3c1c54aa
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/xlint/XLintTests.java
@@ -0,0 +1,104 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.xlint;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class XLintTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(XLintTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/xlint/xlint.xml");
+ }
+
+
+ public void test001(){
+ runTest("options -Xlint args()");
+ }
+
+ public void test002(){
+ runTest("options declare field on bad type");
+ }
+
+ public void test003(){
+ runTest("options declare method on bad type");
+ }
+
+ public void test004(){
+ runTest("options -Xlint declare parent");
+ }
+
+ public void test005(){
+ runTest("options -Xlint target()");
+ }
+
+ public void test006(){
+ runTest("options -Xlint this()");
+ }
+
+ public void test007(){
+ runTest("options negative -Xlint args()");
+ }
+
+ public void test008(){
+ runTest("options negative -Xlint declare parent");
+ }
+
+ public void test009(){
+ runTest("options negative -Xlint target()");
+ }
+
+ public void test010(){
+ runTest("options negative -Xlint this()");
+ }
+
+ public void test011(){
+ runTest("unmatched type name in a declare parents should result in a warning in -Xlint mode");
+ }
+
+ public void test012(){
+ runTest("privileged access to code outside the control of the compiler");
+ }
+
+ public void test013(){
+ runTest("Unexpected Xlint:unresolvableMember warning with withincode");
+ }
+
+ public void test014(){
+ runTest("valid XLintWarningTest file, default level of warning");
+ }
+
+ public void test015(){
+ runTest("XLint:ignore suppresses XLint warnings");
+ }
+
+ public void test016(){
+ runTest("XLint:error promotes XLint warnings to error");
+ }
+
+ public void test017(){
+ runTest("alias getCause for getWrappedThrowable in SoftException");
+ }
+
+ public void test018(){
+ runTest("XLint warning for call PCD's using subtype of defining type");
+ }
+
+ public void test019(){
+ runTest("XLint warning for call PCD's using subtype of defining type (-1.3 -Xlint:ignore)");
+ }
+
+}
+
diff --git a/tests/src/org/aspectj/systemtest/xlint/xlint-tests.xml b/tests/src/org/aspectj/systemtest/xlint/xlint-tests.xml
new file mode 100644
index 000000000..150aa984a
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/xlint/xlint-tests.xml
@@ -0,0 +1,161 @@
+<!-- XLint Tests -->
+
+ <!-- .................................... -Xlint tests -->
+ <!-- ............... positive -Xlint tests -->
+ <ajc-test dir="options"
+ title="options -Xlint args()"
+ keywords="lint">
+ <compile files="XLintTypeArgsPCD.java">
+ <message kind="warning" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options declare field on bad type">
+ <compile files="XLintTypeDeclareField.java" options="!eclipse">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options declare method on bad type">
+ <compile files="XLintTypeDeclareMethod.java" options="!eclipse">
+ <message kind="error" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options -Xlint declare parent"
+ keywords="lint">
+ <compile files="XLintTypeDeclareParent.java">
+ <message kind="warning" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options -Xlint target()"
+ keywords="lint">
+ <compile files="XLintTypeTargetPCD.java">
+ <message kind="warning" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options -Xlint this()"
+ keywords="lint">
+ <compile files="XLintTypeThisPCD.java">
+ <message kind="warning" line="10"/>
+ </compile>
+ </ajc-test>
+
+ <!-- ............... negative -Xlint tests -->
+ <ajc-test dir="options"
+ title="options negative -Xlint args()"
+ keywords="lint">
+ <compile files="XLintTypeArgsPCD.java" options="-Xlint:ignore"/>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options negative -Xlint declare parent"
+ keywords="lint">
+ <compile files="XLintTypeDeclareParent.java" options="-Xlint:ignore"/>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options negative -Xlint target()"
+ keywords="lint">
+ <compile files="XLintTypeTargetPCD.java" options="-Xlint:ignore"/>
+ </ajc-test>
+
+ <ajc-test dir="options"
+ title="options negative -Xlint this()"
+ keywords="lint">
+ <compile files="XLintTypeThisPCD.java" options="-Xlint:ignore"/>
+ </ajc-test>
+
+
+ <ajc-test dir="new"
+ title="unmatched type name in a declare parents should result in a warning in -Xlint mode"
+ keywords="tofix">
+ <compile options="-Xlint" files="MissingTypeInDeclareParents.java">
+ <message kind="warning" line="20"/>
+ </compile>
+ <run class="MissingTypeInDeclareParents"/>
+ </ajc-test>
+
+
+ <!-- The correct behavior of this program is to produce an Xlint
+ warning for the lack of access to the needed type, and then
+ to generate code with link errors that will throw a NoSuchMethodError
+ when run.
+ -->
+ <ajc-test dir="bugs" pr="906"
+ title="privileged access to code outside the control of the compiler">
+ <compile files="PrivilegeBeyondScope.java" options="-Xlint:warning">
+ <message kind="warning" line="23"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="37739"
+ title="Unexpected Xlint:unresolvableMember warning with withincode">
+ <compile files="CatchSig.java">
+ </compile>
+ <run class="CatchSig"/>
+ </ajc-test>
+
+
+ <ajc-test dir="harness"
+ title="valid XLintWarningTest file, default level of warning">
+ <compile files="XLintWarningTest.java">
+ <message kind="warning" line="5"
+ text="Xlint:invalidAbsoluteTypeName"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="harness"
+ title="XLint:ignore suppresses XLint warnings">
+ <compile files="XLintWarningTest.java" options="-Xlint:ignore"/>
+ </ajc-test>
+
+ <ajc-test dir="harness"
+ title="XLint:error promotes XLint warnings to error">
+ <compile files="XLintWarningTest.java" options="-Xlint:error">
+ <message kind="error" line="5"
+ text="Xlint:invalidAbsoluteTypeName"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs" pr="49250"
+ title="alias getCause for getWrappedThrowable in SoftException">
+ <compile files="GetCauseOnSoftException.java" options="-Xlint:warning">
+ </compile>
+ <run vm="1.3" class="GetCauseOnSoftException"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="XLint warning for call PCD's using subtype of defining type"
+ pr="41952"
+ >
+ <compile
+ files="DeclaringTypeWarning.java"
+ options="-1.3" >
+ <message kind="warning" line="6" text="declaring type">
+ <source line="12" file="DeclaringTypeWarning.java" />
+ </message>
+ <message kind="warning" line="6" text="declaring type">
+ <source line="14" file="DeclaringTypeWarning.java" />
+ </message>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs"
+ title="XLint warning for call PCD's using subtype of defining type (-1.3 -Xlint:ignore)"
+ pr="41952"
+ >
+ <compile
+ options="-Xlint:ignore,-1.3"
+ files="DeclaringTypeWarning.java" >
+ </compile>
+ </ajc-test>
+
+ \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/xlint/xlint.xml b/tests/src/org/aspectj/systemtest/xlint/xlint.xml
new file mode 100644
index 000000000..efe2a0014
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/xlint/xlint.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
+<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/xlint/xlint-tests.xml">
+]>
+<!-- XLint Tests -->
+
+<suite>
+
+&tests;
+
+</suite> \ No newline at end of file