diff options
Diffstat (limited to 'tests/bugs169/pr287613')
-rw-r--r-- | tests/bugs169/pr287613/DAMethod1.java | 16 | ||||
-rw-r--r-- | tests/bugs169/pr287613/DAMethod2.java | 29 | ||||
-rw-r--r-- | tests/bugs169/pr287613/Decaf1.java | 53 | ||||
-rw-r--r-- | tests/bugs169/pr287613/DeclareAnnot.java | 30 | ||||
-rw-r--r-- | tests/bugs169/pr287613/DeclareAnnotMethodCtor.java | 24 | ||||
-rw-r--r-- | tests/bugs169/pr287613/Target.java | 53 |
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; +} |