From: aclement Date: Tue, 9 Dec 2008 19:27:14 +0000 (+0000) Subject: 128664: testcode X-Git-Tag: V1_6_3rc1~31 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5621f148e957cec57c319c8c9508167134a806f0;p=aspectj.git 128664: testcode --- diff --git a/tests/bugs163/pr128664/Bug.java b/tests/bugs163/pr128664/Bug.java new file mode 100644 index 000000000..92eb248e5 --- /dev/null +++ b/tests/bugs163/pr128664/Bug.java @@ -0,0 +1,41 @@ +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +public class Bug { + public static void main(String[] args) { + MonitorMyAnnotationExecution.aspectOf().executionCount = 0; + new ClassImplementingInterfaceWithInheritedAnnotation(); + if (MonitorMyAnnotationExecution.aspectOf().executionCount!=1) { + throw new RuntimeException(); + } + + MonitorMyAnnotationExecution.aspectOf().executionCount = 0; + new ClassExtendingClassWithInheritedAnnotation(); + // Expecting 2, one for derived and one for base class ctor execution + if (MonitorMyAnnotationExecution.aspectOf().executionCount!=2) { + throw new RuntimeException(); + } + } +} + +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@interface InheritedAnnotation { } + +@InheritedAnnotation +interface InterfaceWithInheritedAnnotation { } + +@InheritedAnnotation class ClassWithInheritedAnnotation { } + +class ClassImplementingInterfaceWithInheritedAnnotation implements InterfaceWithInheritedAnnotation { } + +class ClassExtendingClassWithInheritedAnnotation extends ClassWithInheritedAnnotation { } + +aspect MonitorMyAnnotationExecution { + int executionCount; + + before() : execution((@InheritedAnnotation *)+.new(..)) && !within(Monitor*) && !within(Bug) { + executionCount++; + } +} diff --git a/tests/bugs163/pr128664/Bug2.java b/tests/bugs163/pr128664/Bug2.java new file mode 100644 index 000000000..eb6878f20 --- /dev/null +++ b/tests/bugs163/pr128664/Bug2.java @@ -0,0 +1,30 @@ +import java.lang.annotation.*; + +public class Bug2 { + public static void main(String[] args) { + MonitorMyAnnotationExecution.aspectOf().executionCount = 0; + new ClassImplementingSubInterfaceWithInheritedAnnotation(); + if (MonitorMyAnnotationExecution.aspectOf().executionCount!=1) { + throw new RuntimeException(); + } + } +} + +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@interface InheritedAnnotation { } + +@InheritedAnnotation +interface InterfaceWithInheritedAnnotation { } + +interface SubInterfaceOfInterfaceWithInheritedAnnotation extends InterfaceWithInheritedAnnotation {} + +class ClassImplementingSubInterfaceWithInheritedAnnotation implements SubInterfaceOfInterfaceWithInheritedAnnotation { } + +aspect MonitorMyAnnotationExecution { + int executionCount; + + before() : execution((@InheritedAnnotation *)+.new(..)) && !within(Monitor*) && !within(Bug2) { + executionCount++; + } +}