--- /dev/null
+package TestRequirements;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface AnnotatedMethod {}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface NewAnnotatedMethod {
+ boolean newValue();
+}
+
+aspect X {
+ declare @method: !@AnnotatedMethod * TestRequirements.*(..) : @NewAnnotatedMethod(newValue = true);
+}
+
+public class TestRequirements {
+ @AnnotatedMethod
+ public void dontMatchMe() {}
+
+ public void matchMe() {}
+
+ public static void foo() throws Exception {
+ if (TestRequirements.class.getDeclaredMethod("dontMatchMe").getAnnotation(NewAnnotatedMethod.class)!=null) {
+ throw new IllegalStateException();
+ }
+ if (TestRequirements.class.getDeclaredMethod("matchMe").getAnnotation(NewAnnotatedMethod.class)==null) {
+ throw new IllegalStateException();
+ }
+ }
+}
*/
public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementalAjdeInteractionTestbed {
+ public void testMissingRel_328121() throws Exception {
+ String p = "pr328121";
+ initialiseProject(p);
+ build(p);
+ checkWasFullBuild();
+ assertNoErrors(p);
+ // Check the annotations:
+ runMethod(p,"TestRequirements.TestRequirements","foo");
+ assertEquals(4,getRelationshipCount(p));
+ }
+
public void testEncoding_pr290741() throws Exception {
String p = "pr290741";
initialiseProject(p);