diff options
author | acolyer <acolyer> | 2004-08-04 12:04:41 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2004-08-04 12:04:41 +0000 |
commit | 0f211e17cac9b031ab8d9115f9030b3e65d3927a (patch) | |
tree | cabe16f0e367daaa4b28685e09f5b0bcd55bb43d /tests/src | |
parent | 9a051d348a240095e56ead5485c2dba8cf6ad4a7 (diff) | |
download | aspectj-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')
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) && within(DeclareWarning)"/> + <message kind="warning" line="36" text="handler(Error)"/> + <message kind="warning" line="39" text="handler(RuntimeException) && withincode(DeclareWarning.new())"/> + <message kind="warning" line="74" text="adviceExecution() && 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 |