diff options
author | aclement <aclement> | 2006-09-12 08:47:04 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-09-12 08:47:04 +0000 |
commit | 7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6 (patch) | |
tree | a0869298ee09c8b8443f0e0de5624ddea1ed9d7c | |
parent | 6a20efc0725fa4d87c7766478f5e4f06583762c0 (diff) | |
download | aspectj-7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6.tar.gz aspectj-7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6.zip |
testcode and fixes for 156962: Problems with @Deprecated in method signatures
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 @@ <!-- AspectJ v1.5.3 Tests --> <suite> + <ajc-test dir="bugs153/pr156962" title="Test Annot Method"> + <compile files="Sample.java, WarnDeprecatedMethod.aj" options="-1.5"> + <message kind="warning" line="2" text="deprecated method"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs153/pr156962" title="Test Annot Method Has Member"> + <compile files="Sample.java, LiftDeprecation.aj" options="-1.5 -XhasMember -showWeaveInfo -Xlint:ignore"> + <message kind="weave" text="'Sample' (Sample.java:1) is annotated with @Deprecated type annotation from 'LiftDeprecation' (LiftDeprecation.aj:2)"/> + </compile> + </ajc-test> + <ajc-test dir="bugs153/pr152848" title="mixing generics"> <compile files="PairGeneric.java" options="-1.5" outjar="pair.jar"/> <compile files="BaseType.java" options="-1.5" outjar="basetype.jar" classpath="pair.jar"/> 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; |