From 5621f148e957cec57c319c8c9508167134a806f0 Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 9 Dec 2008 19:27:14 +0000 Subject: [PATCH] 128664: testcode --- tests/bugs163/pr128664/Bug.java | 41 ++++++++++++++++++++++++++++++++ tests/bugs163/pr128664/Bug2.java | 30 +++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 tests/bugs163/pr128664/Bug.java create mode 100644 tests/bugs163/pr128664/Bug2.java 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++; + } +} -- 2.39.5