]> source.dussan.org Git - aspectj.git/commitdiff
228980: tests and partial fix
authoraclement <aclement>
Sat, 26 Apr 2008 05:11:27 +0000 (05:11 +0000)
committeraclement <aclement>
Sat, 26 Apr 2008 05:11:27 +0000 (05:11 +0000)
tests/features160/parameterAnnotationMatching/Test.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java
tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml

diff --git a/tests/features160/parameterAnnotationMatching/Test.java b/tests/features160/parameterAnnotationMatching/Test.java
new file mode 100644 (file)
index 0000000..2a5aa24
--- /dev/null
@@ -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
index 97e6c92227675a703e494b11a310d6b5fbae3b75..4e66778794a6d3e9f4b2c2ef05593d6334163b11 100644 (file)
@@ -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"); }
index 540307665c3ed5e86f112a780f564e62e8ed29f9..47d8598b3c9bf7e5dde3fff4ea4adf01a5bc8599 100644 (file)
@@ -4,6 +4,27 @@
 <suite>
 
 
+   <ajc-test dir="features160/parameterAnnotationMatching" title="deow">
+     <compile options="-1.5" files="Test.java">
+       <message kind="warning" line="43" text="mOne"/>
+       <message kind="warning" line="45" text="mOne"/>
+       <message kind="warning" line="43" text="mThree"/> 
+       <message kind="warning" line="47" text="mFour"/> 
+       <message kind="warning" line="49" text="mFour"/> 
+       <message kind="warning" line="47" text="mFive"/> 
+       <message kind="warning" line="47" text="mSix"/> 
+       <message kind="warning" line="45" text="mNine"/> 
+       <message kind="warning" line="49" text="mEleven"/> 
+       <message kind="warning" line="49" text="mTwelve"/>
+       <message kind="warning" line="49" text="mTen"/> 
+       <message kind="warning" line="45" text="mEight"/>  
+       <!--
+       <message kind="warning" line="43" text="mTwo"/>
+       <message kind="warning" line="45" text="mSeven"/>
+       -->
+     </compile>
+   </ajc-test>
+   
    <ajc-test dir="features160/parameterAnnotationMatching" title="no xlint for wrong target">
      <compile options="-1.5" files="NonNullAssertionForcer.java"/>
    </ajc-test>