From f196b3c3ffead3f78403329bf8792f3b24cf18bb Mon Sep 17 00:00:00 2001 From: aclement Date: Fri, 10 Dec 2004 13:34:15 +0000 Subject: [PATCH] check errors/xlints for decp'ing on annos/enums --- .../systemtest/ajc150/Annotations.java | 32 ++++++++++++++--- .../org/aspectj/systemtest/ajc150/Enums.java | 35 ++++++++++++++----- 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 -- 2.39.5