Browse Source

check errors/xlints for decp'ing on annos/enums

tags/Root_AspectJ5_Development
aclement 19 years ago
parent
commit
f196b3c3ff

+ 28
- 4
tests/src/org/aspectj/systemtest/ajc150/Annotations.java View File

@@ -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
}

+ 26
- 9
tests/src/org/aspectj/systemtest/ajc150/Enums.java View File

@@ -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[]{});
}

}

Loading…
Cancel
Save