aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2006-09-12 08:47:04 +0000
committeraclement <aclement>2006-09-12 08:47:04 +0000
commit7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6 (patch)
treea0869298ee09c8b8443f0e0de5624ddea1ed9d7c
parent6a20efc0725fa4d87c7766478f5e4f06583762c0 (diff)
downloadaspectj-7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6.tar.gz
aspectj-7a4256df61f2d23aefb855ffb0ad6c6bfb2d36d6.zip
testcode and fixes for 156962: Problems with @Deprecated in method signatures
-rw-r--r--tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java2
-rw-r--r--tests/src/org/aspectj/systemtest/ajc153/ajc153.xml12
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelField.java3
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelMethod.java3
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/HasMemberTypePattern.java4
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;