diff options
-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 | ||||
-rw-r--r-- | tests/bugs169/pr315820/MultiAnno.java | 26 | ||||
-rw-r--r-- | tests/bugs169/pr315820/MultiAnno2.java | 32 |
8 files changed, 263 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; +} diff --git a/tests/bugs169/pr315820/MultiAnno.java b/tests/bugs169/pr315820/MultiAnno.java new file mode 100644 index 000000000..8916c7cf1 --- /dev/null +++ b/tests/bugs169/pr315820/MultiAnno.java @@ -0,0 +1,26 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +@interface Foo {} + +@Retention(RetentionPolicy.RUNTIME) +@interface Bar { + String value() default "abc"; +} + +aspect A { + declare @method: void MultiAnno.m(): @Foo @Bar; + declare @field: int MultiAnno.i: @Bar @Foo; + declare @type: MultiAnno: @Bar("ABC") @Foo; + declare @constructor: MultiAnno.new(): @Foo @Bar("def"); +} + +public class MultiAnno { + public MultiAnno() {} + public int i; + public static void main(String[]argv) throws Exception { + System.out.println(MultiAnno.class.getDeclaredMethod("m").getAnnotations()[0]); + } + public void m() { + } +} diff --git a/tests/bugs169/pr315820/MultiAnno2.java b/tests/bugs169/pr315820/MultiAnno2.java new file mode 100644 index 000000000..e771983a8 --- /dev/null +++ b/tests/bugs169/pr315820/MultiAnno2.java @@ -0,0 +1,32 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +@interface Foo {} + +@Retention(RetentionPolicy.RUNTIME) +@interface Bar { + String value() default "abc"; +} + +@Retention(RetentionPolicy.RUNTIME) +@interface Goo { + int value() default 44; +} + +aspect A { +// declare @method: void MultiAnno.m(): @Foo @Bar; + declare @field: int MultiAnno2.i: @Bar("XYCZ") @Foo @Goo(23); +// declare @type: MultiAnno: @Bar("ABC") @Foo; +// declare @constructor: MultiAnno.new(): @Foo @Bar("def"); +} + +public class MultiAnno2 { + public MultiAnno2() {} + public int i; + public static void main(String[]argv) throws Exception { + System.out.println(MultiAnno2.class.getDeclaredField("i").getAnnotations()[0]); + System.out.println(MultiAnno2.class.getDeclaredField("i").getAnnotations()[1]); + } + public void m() { + } +} |