From 7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6 Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 12 Sep 2006 08:47:04 +0000 Subject: [PATCH] testcode and fixes for 156962: Problems with @Deprecated in method signatures --- .../org/aspectj/systemtest/ajc153/Ajc153Tests.java | 2 ++ tests/src/org/aspectj/systemtest/ajc153/ajc153.xml | 12 ++++++++++++ weaver/src/org/aspectj/weaver/bcel/BcelField.java | 3 +-- weaver/src/org/aspectj/weaver/bcel/BcelMethod.java | 3 +-- .../weaver/patterns/HasMemberTypePattern.java | 4 ++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java index c5181da45..01d75bedb 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java @@ -27,6 +27,8 @@ public class Ajc153Tests extends org.aspectj.testing.XMLBasedAjcTestCase { // public void testArgnamesAndJavac_pr148381() { runTest("argNames and javac");} // public void testCFlowXMLAspectLTW_pr149096() { runTest("cflow xml concrete aspect"); } // public void testAmbiguousBinding_pr121805() { runTest("ambiguous binding");} + public void testAnnotMethod_pr156962() { runTest("Test Annot Method");} + public void testAnnotMethodHasMember_pr156962() { runTest("Test Annot Method Has Member"); } public void testMixingGenerics_pr152848() { runTest("mixing generics"); } public void testIncorrectStaticinitializationWeaving_pr149560_1() { runTest("incorrect staticinitialization weaving - codestyle");} public void testIncorrectStaticinitializationWeaving_pr149560_2() { runTest("incorrect staticinitialization weaving - annstyle");} diff --git a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml index 3df82bc33..e672d8c06 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml +++ b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml @@ -3,6 +3,18 @@ + + + + + + + + + + + + diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelField.java b/weaver/src/org/aspectj/weaver/bcel/BcelField.java index efb7d1f51..b2a7e6b0d 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelField.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelField.java @@ -131,8 +131,7 @@ final class BcelField extends ResolvedMemberImpl { annotations = new AnnotationX[annos.length]; for (int i = 0; i < annos.length; i++) { Annotation annotation = annos[i]; - ResolvedType rtx = world.resolve(UnresolvedType.forName(annotation.getTypeName())); - annotationTypes.add(rtx); + annotationTypes.add(world.resolve(UnresolvedType.forSignature(annotation.getTypeSignature()))); annotations[i] = new AnnotationX(annotation,world); } } diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java b/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java index d5c604863..2a2c94b1d 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java @@ -281,8 +281,7 @@ final class BcelMethod extends ResolvedMemberImpl { annotations = new AnnotationX[annos.length]; for (int i = 0; i < annos.length; i++) { Annotation annotation = annos[i]; - ResolvedType rtx = world.resolve(UnresolvedType.forName(annotation.getTypeName())); - annotationTypes.add(rtx); + annotationTypes.add(world.resolve(UnresolvedType.forSignature(annotation.getTypeSignature()))); annotations[i] = new AnnotationX(annotation,world); } } diff --git a/weaver/src/org/aspectj/weaver/patterns/HasMemberTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/HasMemberTypePattern.java index 49d9fb937..9c966e6c7 100644 --- a/weaver/src/org/aspectj/weaver/patterns/HasMemberTypePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/HasMemberTypePattern.java @@ -49,12 +49,15 @@ public class HasMemberTypePattern extends TypePattern { return hasMethod(type); } } + + private final static String declareAtPrefix = "ajc$declare_at"; private boolean hasField(ResolvedType type) { // TODO what about ITDs World world = type.getWorld(); for (Iterator iter = type.getFields(); iter.hasNext();) { Member field = (Member) iter.next(); + if (field.getName().startsWith(declareAtPrefix)) continue; if (signaturePattern.matches(field, type.getWorld(), false)) { if (field.getDeclaringType().resolve(world) != type) { if (Modifier.isPrivate(field.getModifiers())) continue; @@ -70,6 +73,7 @@ public class HasMemberTypePattern extends TypePattern { World world = type.getWorld(); for (Iterator iter = type.getMethods(); iter.hasNext();) { Member method = (Member) iter.next(); + if (method.getName().startsWith(declareAtPrefix)) continue; if (signaturePattern.matches(method, type.getWorld(), false)) { if (method.getDeclaringType().resolve(world) != type) { if (Modifier.isPrivate(method.getModifiers())) continue; -- 2.39.5