diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ajcTests.xml | 114 | ||||
-rw-r--r-- | tests/ajcTestsFailing.xml | 34 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/abstractClass/B.java | 7 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/abstractClass/C.java | 6 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/abstractClass/jars/AandB.jar | bin | 0 -> 1527 bytes | |||
-rw-r--r-- | tests/bugs/abstractMethods/interface/A.java | 5 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/interface/B.java | 1 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/interface/C.java | 5 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/interface/jars/AandB.jar | bin | 0 -> 1476 bytes | |||
-rw-r--r-- | tests/bugs/abstractMethods/singlesource/C.java | 14 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/singlesource/C1.java | 17 | ||||
-rw-r--r-- | tests/bugs/abstractMethods/singlesource/C2.java | 16 | ||||
-rw-r--r-- | tests/bugs/interfaceDefinition/Main1.java | 8 | ||||
-rw-r--r-- | tests/bugs/interfaceDefinition/pack/DefineInterface.java | 1 |
14 files changed, 193 insertions, 35 deletions
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index 4cb3a62c6..8b48f4cda 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -6971,4 +6971,118 @@ </compile> <run class="AfterThrowingCtor"/> </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 (weave altogether)"> + <compile files="interface/C.java,interface/A.java,interface/B.java" /> + <run class="C"/> + </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/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/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> + </suite> diff --git a/tests/ajcTestsFailing.xml b/tests/ajcTestsFailing.xml index 1e87072b4..8c66d13bb 100644 --- a/tests/ajcTestsFailing.xml +++ b/tests/ajcTestsFailing.xml @@ -119,20 +119,6 @@ </compile> <run class="org.aspectj.langlib.PointcutsCW"/> </ajc-test> - - <ajc-test dir="bugs/interfaceDefinition" - pr="43972" - title="Use class implementing interface via aspect"> - <compile - files="pack/DefineInterface.java, - pack/InterfaceDefinition.java, - pack/MyInterface.java"/> - <run class="pack.InterfaceDefinition"/> - <compile - includeClassesDir="true" - files="Main.java"/> - <run class="Main"/> - </ajc-test> <ajc-test dir="new" pr="42668" @@ -151,27 +137,7 @@ <run class="SubtypeConstructorCW"/> </ajc-test> - <ajc-test dir="bugs/interAbstract" - pr="49784" - title="aspect declares interface method (no modifiers)"> - <compile files="InterfaceMethodDeclarationNone.java" /> - <run class="InterfaceMethodDeclarationNone"/> - </ajc-test> - - <ajc-test dir="bugs/interAbstract" - pr="49784" - title="aspect declares interface method (abstract)"> - <compile files="InterfaceMethodDeclarationAbstract.java" /> - <run class="InterfaceMethodDeclarationAbstract"/> - </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> </suite> diff --git a/tests/bugs/abstractMethods/abstractClass/B.java b/tests/bugs/abstractMethods/abstractClass/B.java new file mode 100644 index 000000000..e63e581b7 --- /dev/null +++ b/tests/bugs/abstractMethods/abstractClass/B.java @@ -0,0 +1,7 @@ +abstract class B {} + +aspect A { + abstract void B.m(); + + public static void doit(B b) { b.m(); } +}
\ No newline at end of file diff --git a/tests/bugs/abstractMethods/abstractClass/C.java b/tests/bugs/abstractMethods/abstractClass/C.java new file mode 100644 index 000000000..04b499e96 --- /dev/null +++ b/tests/bugs/abstractMethods/abstractClass/C.java @@ -0,0 +1,6 @@ +public class C extends B { + public static void main(String[] args) { + A.doit(new C()); + } +} + diff --git a/tests/bugs/abstractMethods/abstractClass/jars/AandB.jar b/tests/bugs/abstractMethods/abstractClass/jars/AandB.jar Binary files differnew file mode 100644 index 000000000..4ca677f97 --- /dev/null +++ b/tests/bugs/abstractMethods/abstractClass/jars/AandB.jar diff --git a/tests/bugs/abstractMethods/interface/A.java b/tests/bugs/abstractMethods/interface/A.java new file mode 100644 index 000000000..3eed777e4 --- /dev/null +++ b/tests/bugs/abstractMethods/interface/A.java @@ -0,0 +1,5 @@ +aspect A { + void B.m(){} + + public static void doit(B b) { b.m(); } +}
\ No newline at end of file diff --git a/tests/bugs/abstractMethods/interface/B.java b/tests/bugs/abstractMethods/interface/B.java new file mode 100644 index 000000000..a09e44742 --- /dev/null +++ b/tests/bugs/abstractMethods/interface/B.java @@ -0,0 +1 @@ +interface B {}
\ No newline at end of file diff --git a/tests/bugs/abstractMethods/interface/C.java b/tests/bugs/abstractMethods/interface/C.java new file mode 100644 index 000000000..99fc42f3d --- /dev/null +++ b/tests/bugs/abstractMethods/interface/C.java @@ -0,0 +1,5 @@ +public class C implements B { + public static void main(String[] args) { + A.doit(new C()); + } +} diff --git a/tests/bugs/abstractMethods/interface/jars/AandB.jar b/tests/bugs/abstractMethods/interface/jars/AandB.jar Binary files differnew file mode 100644 index 000000000..9d71c0c87 --- /dev/null +++ b/tests/bugs/abstractMethods/interface/jars/AandB.jar diff --git a/tests/bugs/abstractMethods/singlesource/C.java b/tests/bugs/abstractMethods/singlesource/C.java new file mode 100644 index 000000000..ddbc91b46 --- /dev/null +++ b/tests/bugs/abstractMethods/singlesource/C.java @@ -0,0 +1,14 @@ +abstract class B {} + +aspect A { + abstract void B.m(); + + public static void doit(B b) { b.m(); } +} + +public class C extends B { + public static void main(String[] args) { + A.doit(new C()); + } +} + diff --git a/tests/bugs/abstractMethods/singlesource/C1.java b/tests/bugs/abstractMethods/singlesource/C1.java new file mode 100644 index 000000000..881d00015 --- /dev/null +++ b/tests/bugs/abstractMethods/singlesource/C1.java @@ -0,0 +1,17 @@ +abstract class B {} + +aspect A { + abstract void B.m(); + + public static void doit(B b) { b.m(); } +} + +public class C1 extends B { + public static void main(String[] args) { + A.doit(new C1()); + } +} + +aspect A1 { + void C1.m() {} +} diff --git a/tests/bugs/abstractMethods/singlesource/C2.java b/tests/bugs/abstractMethods/singlesource/C2.java new file mode 100644 index 000000000..545fc9daa --- /dev/null +++ b/tests/bugs/abstractMethods/singlesource/C2.java @@ -0,0 +1,16 @@ +abstract class B {} + +aspect A { + public abstract void B.m(); + + public static void doit(B b) { b.m(); } +} + +public class C2 extends B { + public static void main(String[] args) { + A.doit(new C2()); + } + + public void m() {} +} + diff --git a/tests/bugs/interfaceDefinition/Main1.java b/tests/bugs/interfaceDefinition/Main1.java new file mode 100644 index 000000000..b942dc7df --- /dev/null +++ b/tests/bugs/interfaceDefinition/Main1.java @@ -0,0 +1,8 @@ + +/** @testcase PR#43972 Use class implementing interface via aspect */ +public class Main1 { + public static void main(String[] args) { + pack.MyInterface i = new pack.InterfaceDefinition.C(); + i.m(); + } +} diff --git a/tests/bugs/interfaceDefinition/pack/DefineInterface.java b/tests/bugs/interfaceDefinition/pack/DefineInterface.java index 0e3df5dc8..2fab84f74 100644 --- a/tests/bugs/interfaceDefinition/pack/DefineInterface.java +++ b/tests/bugs/interfaceDefinition/pack/DefineInterface.java @@ -7,7 +7,6 @@ public aspect DefineInterface { declare parents: InterfaceDefinition.C implements MyInterface; static { Tester.expectEvent("m()"); - Tester.expectEvent("p()"); } public void MyInterface.m() { Tester.event("m()"); |