aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs169/pr287613/Decaf1.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs169/pr287613/Decaf1.java')
-rw-r--r--tests/bugs169/pr287613/Decaf1.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/bugs169/pr287613/Decaf1.java b/tests/bugs169/pr287613/Decaf1.java
new file mode 100644
index 000000000..c4e5a64ae
--- /dev/null
+++ b/tests/bugs169/pr287613/Decaf1.java
@@ -0,0 +1,53 @@
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot1 {}
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot2 {}
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot3 {}
+
+class Target {
+ public static void main(String[] argv) throws Exception {
+ System.out.println("Field one");
+ printAnnotations(A.class.getDeclaredField("one"));
+ printAnnotations(B.class.getDeclaredField("one"));
+ System.out.println("Field two");
+ printAnnotations(A.class.getDeclaredField("two"));
+ printAnnotations(B.class.getDeclaredField("two"));
+ System.out.println("Field three");
+ printAnnotations(A.class.getDeclaredField("two"));
+ printAnnotations(B.class.getDeclaredField("two"));
+ }
+
+ public static void printAnnotations(Field field) {
+ Annotation[] annos = field.getAnnotations();
+ if (annos==null || annos.length==0) {
+ System.out.println("no annotations");
+ } else {
+ for (Annotation anno: annos) {
+ System.out.print(anno+" ");
+ }
+ System.out.println();
+ }
+ }
+}
+
+class A {
+ public int one;
+ public String two;
+ public float three;
+}
+
+class B {
+ public int one;
+ public String two;
+ public float three;
+}
+
+aspect DeclareAnnot {
+ declare @field: (int A.one) || (int B.one): @Annot1;
+ declare @field: (String two) && !(* B.*): @Annot2;
+ declare @field: !(* one) && !(* two): @Annot3;
+}