summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authoraclement <aclement>2004-12-10 13:34:15 +0000
committeraclement <aclement>2004-12-10 13:34:15 +0000
commitf196b3c3ffead3f78403329bf8792f3b24cf18bb (patch)
tree3fb27e3baa83f952740d53b1e25f1312e1a2a213 /tests
parent09bd5866f9f2bf1e4c9a9e8e5bfc3f2a7497ecfc (diff)
downloadaspectj-f196b3c3ffead3f78403329bf8792f3b24cf18bb.tar.gz
aspectj-f196b3c3ffead3f78403329bf8792f3b24cf18bb.zip
check errors/xlints for decp'ing on annos/enums
Diffstat (limited to 'tests')
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/Annotations.java32
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/Enums.java35
2 files changed, 54 insertions, 13 deletions
diff --git a/tests/src/org/aspectj/systemtest/ajc150/Annotations.java b/tests/src/org/aspectj/systemtest/ajc150/Annotations.java
index 3a6e2ee5a..419c4e39f 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/Annotations.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/Annotations.java
@@ -20,8 +20,6 @@ import org.aspectj.tools.ajc.CompilationResult;
* Annotations, the rules/tests:
*
* 1. cannot make ITD (C,M or F) on an annotation
- *
- * XXXAJ5: The rest of these can't be tested (and so can't be attempted by users!) until the binary decp thing is fixed:
* 2. cannot use declare parents to change the super type of an annotation
* 3. cannot use decp to make an annotation type implement an interface
* 4. cannot use decp to dec java.lang.annotation.Annotation as the parent of any type
@@ -53,11 +51,37 @@ public class Annotations extends TestUtils {
msg3_field.toString().indexOf("can't make inter-type field declarations")!=-1);
verifyWeavingMessagesOutput(cR,new String[]{});
}
-
+
+ // Deals with the cases where an explicit type is specified and it is an annotation type
+ public void test002_decpOnAnnotationNotAllowed_errors() {
+ CompilationResult cR = binaryWeave("testcode.jar","AnnotationAspect04.aj",3,0,true);
+ IMessage msg = (IMessage)cR.getErrorMessages().get(0);
+ assertTrue("Expected a message about can't use decp to alter supertype of an annotation: "+msg,
+ msg.toString().indexOf("to alter supertype of annotation type")!=-1);
+ msg = (IMessage)cR.getErrorMessages().get(1);
+ assertTrue("Expected a message about can't use decp to make annotation implement interface: "+msg,
+ msg.toString().indexOf("implement an interface")!=-1);
+ msg = (IMessage)cR.getErrorMessages().get(2);
+ assertTrue("Expected a message about can't use decp to make Annotation parent of another type: "+msg,
+ msg.toString().indexOf("the parent of type")!=-1);
+ verifyWeavingMessagesOutput(cR,new String[]{});
+ }
+
+ //Deals with the cases where an wild type pattern is specified and it hits an annotation type
+ public void test004_decpOnAnnotationNotAllowed_xlints() {
+ CompilationResult cR = binaryWeave("testcode.jar","AnnotationAspect05.aj",0,2,false);
+ IMessage msg = (IMessage)cR.getWarningMessages().get(0);
+ assertTrue("Expected a message about an annotation type matching a declare parents but being ignored: "+msg,
+ msg.toString().indexOf("matches a declare parents type pattern")!=-1);
+ msg = (IMessage)cR.getWarningMessages().get(1);
+ assertTrue("Expected a message about an annotation type matching a declare parents but being ignored: "+msg,
+ msg.toString().indexOf("matches a declare parents type pattern")!=-1);
+ verifyWeavingMessagesOutput(cR,new String[]{});
+ }
+
// TODO extra tests:
// declare parents with annotation pattern
// declare soft with annotation pattern
// declare warning with annotation pattern
// declare precedence with annotation pattern
-
} \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc150/Enums.java b/tests/src/org/aspectj/systemtest/ajc150/Enums.java
index a71f58c8e..87927e158 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/Enums.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/Enums.java
@@ -21,8 +21,6 @@ import org.aspectj.tools.ajc.CompilationResult;
*
* 1. cannot make ITDC on an enum
* 2. cannot make ITDM or ITDF on an enum
- *
- * XXXAJ5: The rest of these can't be tested (and so can't be attempted by users!) until the binary decp thing is fixed:
* 3. cannot use declare parents to change the super type of an enum
* 4. cannot use decp to make an enum type implement an interface
* 5. cannot use decp to dec java.lang.Enum as the parent of any type
@@ -59,12 +57,31 @@ public class Enums extends TestUtils {
verifyWeavingMessagesOutput(cR,new String[]{});
}
-// public void test003_decpOnEnumNotAllowed() {
-// CompilationResult cR = binaryWeave("testcode.jar","EnumAspect03.aj",0,0);
-//// IMessage msg = (IMessage)cR.getErrorMessages().get(0);
-//// assertTrue("Expected a message about ITDCs not allowed on enums but got: "+msg,
-//// msg.toString().indexOf("not allowed on enum types")!=-1);
-// verifyWeavingMessagesOutput(cR,new String[]{});
-// }
+ // Deals with the cases where an explicit type is specified and it is an enum type
+ public void test003_decpOnEnumNotAllowed_errors() {
+ CompilationResult cR = binaryWeave("testcode.jar","EnumAspect03.aj",3,0,true);
+ IMessage msg = (IMessage)cR.getErrorMessages().get(0);
+ assertTrue("Expected a message about can't use decp to alter supertype of an enum: "+msg,
+ msg.toString().indexOf("to alter supertype of enum type")!=-1);
+ msg = (IMessage)cR.getErrorMessages().get(1);
+ assertTrue("Expected a message about can't use decp to make enum implement interface: "+msg,
+ msg.toString().indexOf("implement an interface")!=-1);
+ msg = (IMessage)cR.getErrorMessages().get(2);
+ assertTrue("Expected a message about can't use decp to make Enum parent of another type: "+msg,
+ msg.toString().indexOf("the parent of type")!=-1);
+ verifyWeavingMessagesOutput(cR,new String[]{});
+ }
+
+ //Deals with the cases where an wild type pattern is specified and it hits an enum type
+ public void test004_decpOnEnumNotAllowed_xlints() {
+ CompilationResult cR = binaryWeave("testcode.jar","EnumAspect04.aj",0,2,false);
+ IMessage msg = (IMessage)cR.getWarningMessages().get(0);
+ assertTrue("Expected a message about an enum type matching a declare parents but being ignored: "+msg,
+ msg.toString().indexOf("matches a declare parents type pattern")!=-1);
+ msg = (IMessage)cR.getWarningMessages().get(1);
+ assertTrue("Expected a message about an enum type matching a declare parents but being ignored: "+msg,
+ msg.toString().indexOf("matches a declare parents type pattern")!=-1);
+ verifyWeavingMessagesOutput(cR,new String[]{});
+ }
} \ No newline at end of file