From 896000fba2b8c82c611ff36d58e70ab72f50c3d5 Mon Sep 17 00:00:00 2001 From: aclement Date: Sat, 26 Apr 2008 05:11:27 +0000 Subject: [PATCH] 228980: tests and partial fix --- .../parameterAnnotationMatching/Test.java | 56 +++++++++++++++++++ .../ParameterAnnotationMatchingTests.java | 5 +- .../ajc160/parameterAnnotations.xml | 21 +++++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 tests/features160/parameterAnnotationMatching/Test.java diff --git a/tests/features160/parameterAnnotationMatching/Test.java b/tests/features160/parameterAnnotationMatching/Test.java new file mode 100644 index 000000000..2a5aa2480 --- /dev/null +++ b/tests/features160/parameterAnnotationMatching/Test.java @@ -0,0 +1,56 @@ +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +public aspect Test { + // OK (matches f1 and f2): + declare warning : execution(* *(!(Object+), ..)) : "mOne: value parameter"; + + // Wrong (matches f1 and f2, should match only f1): a Not type pattern containing @A and negatedPattern Object+ is built +//broke declare warning : execution(* *(@A (!(Object+)), ..)) : "mTwo: @A annotated value parameter"; + + // OK (matches f1): + declare warning : execution(* *(@A (*), ..)) && execution(* *(!(Object+), ..)): "mThree: @A annotated value parameter."; + + // OK (matches f3 and f4): + declare warning : execution(* *(Object+, ..)) : "mFour: Reference parameter."; + + // Wrong (no matches, should match f3): + declare warning : execution(* *(@A (Object+), ..)) : "mFive: @A annotated reference parameter!"; + + // OK (matches f3): + declare warning : execution(* *(@A (*), ..)) && execution(* *(Object+, ..)): "mSix: @A annotated reference parameter."; + + // Wrong (matches f1 and f2, should match only f2): +//broke declare warning : execution(* *(!@A (!(Object+)), ..)) : "mSeven: Non-@A annotated value parameter!"; + + // Wrong (matches f1 and f2, should match only f2): + declare warning : execution(* *(!@A (*), ..)) && execution(* *(!(Object+), ..)): "mEight: Non-@A annotated value parameter."; + + // OK (matches f2): + declare warning : !execution(* *(@A (*), ..)) && execution(* *(!(Object+), ..)): "mNine: Non-@A annotated value parameter."; + + // Wrong (matches f3 and f4, should match only f4): + declare warning : execution(* *(!@A (Object+), ..)) : "mTen: Non-@A annotated reference parameter!"; + + // Wrong (matches f3 and f4, should match only f4): + declare warning : execution(* *(!@A (*), ..)) && execution(* *(Object+, ..)): "mEleven: Non-@A annotated reference parameter."; + + // OK (matches f4): + declare warning : !execution(* *(@A (*), ..)) && execution(* *(Object+, ..)): "mTwelve: Non-@A annotated reference parameter."; + + void f1(@A int i) {} + + void f2(int i) {} + + void f3(@A Integer i) {} + + void f4(Integer i) {} + + @Retention(RetentionPolicy.RUNTIME) + @Target({ElementType.PARAMETER}) + private static @interface A { + + } +} \ No newline at end of file diff --git a/tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java b/tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java index 97e6c9222..4e6677879 100644 --- a/tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java +++ b/tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java @@ -14,10 +14,10 @@ package org.aspectj.systemtest.ajc160; import java.io.File; -import org.aspectj.testing.XMLBasedAjcTestCase; - import junit.framework.Test; +import org.aspectj.testing.XMLBasedAjcTestCase; + /** * Parameter annotation matching * @@ -76,6 +76,7 @@ import junit.framework.Test; */ public class ParameterAnnotationMatchingTests extends XMLBasedAjcTestCase { + public void testDeow() { runTest("deow"); } public void testNoWarningForWrongType() { runTest("no xlint for wrong target");} public void testVariousCombinations() { runTest("various combinations"); } public void testVariousCombinationsCtors() { runTest("various combinations - ctors"); } diff --git a/tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml b/tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml index 540307665..47d8598b3 100644 --- a/tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml +++ b/tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml @@ -4,6 +4,27 @@ + + + + + + + + + + + + + + + + + + -- 2.39.5