aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs169/pr287613
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs169/pr287613')
-rw-r--r--tests/bugs169/pr287613/DAMethod1.java16
-rw-r--r--tests/bugs169/pr287613/DAMethod2.java29
-rw-r--r--tests/bugs169/pr287613/Decaf1.java53
-rw-r--r--tests/bugs169/pr287613/DeclareAnnot.java30
-rw-r--r--tests/bugs169/pr287613/DeclareAnnotMethodCtor.java24
-rw-r--r--tests/bugs169/pr287613/Target.java53
6 files changed, 205 insertions, 0 deletions
diff --git a/tests/bugs169/pr287613/DAMethod1.java b/tests/bugs169/pr287613/DAMethod1.java
new file mode 100644
index 000000000..59e7f38bb
--- /dev/null
+++ b/tests/bugs169/pr287613/DAMethod1.java
@@ -0,0 +1,16 @@
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot {}
+
+class Person {
+ public void foo() {}
+ public boolean bar() {return false;}
+ public String getString() { return null; }
+ public boolean isSet() { return false; }
+ public void isNotReturningBoolean() { }
+}
+
+aspect DAMethod1 {
+ declare @method: (* *.get*()) || (boolean *.is*()): @Annot;
+}
diff --git a/tests/bugs169/pr287613/DAMethod2.java b/tests/bugs169/pr287613/DAMethod2.java
new file mode 100644
index 000000000..600a66251
--- /dev/null
+++ b/tests/bugs169/pr287613/DAMethod2.java
@@ -0,0 +1,29 @@
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot {}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Foo {}
+
+class Person {
+ @Foo
+ public void foo() {}
+ @Foo
+ public boolean bar() {return false;}
+ @Foo
+ public String getString() { return null; }
+ @Foo
+ public boolean isSet() { return false; }
+ @Foo
+ public void isNotReturningBoolean() { }
+
+ public void getin() {}
+}
+
+aspect DAMethod2 {
+
+ declare @method: !(* *.get*()) && !(* aspectOf(..)) && !(* hasAspect(..)): @Annot;
+
+ declare @method: !@Foo * *(..) && !(* aspectOf(..)) && !(* hasAspect(..)): @Annot;
+}
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;
+}
diff --git a/tests/bugs169/pr287613/DeclareAnnot.java b/tests/bugs169/pr287613/DeclareAnnot.java
new file mode 100644
index 000000000..d1b8aaa11
--- /dev/null
+++ b/tests/bugs169/pr287613/DeclareAnnot.java
@@ -0,0 +1,30 @@
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot {}
+
+aspect DeclareAnnot {
+// declare @method: * *.get*() || boolean *.is*(): @Annot;
+
+// declare @field: (String *.*) || (boolean *.*) : @Annot;
+// declare @field: (String *.*) && (boolean *.*) : @Annot;
+// declare @field: (String *.*) && !(boolean *.*) : @Annot;
+ declare @field: ((String *.*) || !(String *.*)) && !(boolean *.*) : @Annot;
+ declare @field: String *.* : @Annot;
+
+/*
+ declare @constructor: Person.new() || Person.new(*) : @Annot;
+
+ declare @method: * *.get*() && boolean *.is*(): @Annot;
+
+ declare @field: String *.* && boolean *.* : @Annot;
+
+ declare @constructor: Person.new() && Person.new(*) : @Annot;
+
+ declare @method: !(* *.get*()): @Annot;
+
+ declare @field: !(String *.*) : @Annot;
+
+ declare @constructor: !(Person.new()) : @Annot;
+*/
+}
diff --git a/tests/bugs169/pr287613/DeclareAnnotMethodCtor.java b/tests/bugs169/pr287613/DeclareAnnotMethodCtor.java
new file mode 100644
index 000000000..a9108cca7
--- /dev/null
+++ b/tests/bugs169/pr287613/DeclareAnnotMethodCtor.java
@@ -0,0 +1,24 @@
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface Annot {}
+
+class Person {}
+aspect DeclareAnnot {
+ declare @constructor: (Person.new()) || (Person.new(*)) : @Annot;
+
+
+// declare @method: (* *.get*()) && (boolean *.is*()): @Annot;
+
+/*
+ declare @field: String *.* && boolean *.* : @Annot;
+
+ declare @constructor: Person.new() && Person.new(*) : @Annot;
+
+ declare @method: !(* *.get*()): @Annot;
+
+ declare @field: !(String *.*) : @Annot;
+
+ declare @constructor: !(Person.new()) : @Annot;
+*/
+}
diff --git a/tests/bugs169/pr287613/Target.java b/tests/bugs169/pr287613/Target.java
new file mode 100644
index 000000000..d8b647168
--- /dev/null
+++ b/tests/bugs169/pr287613/Target.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 {}
+
+public 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("three"));
+ printAnnotations(B.class.getDeclaredField("three"));
+ }
+
+ 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;
+}