aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.matcher
diff options
context:
space:
mode:
authorAndy Clement <andrew.clement@gmail.com>2013-04-25 13:45:39 -0700
committerAndy Clement <andrew.clement@gmail.com>2013-04-25 13:45:39 -0700
commit6afb281ef0a0f0afcfcf0c77d6b6ebcead15c363 (patch)
tree6cb45d6a764b362497e21ae885e9c3109112b4e0 /org.aspectj.matcher
parent4855f74db6aa5b9ebf4c0e19bb36614929ab3175 (diff)
downloadaspectj-6afb281ef0a0f0afcfcf0c77d6b6ebcead15c363.tar.gz
aspectj-6afb281ef0a0f0afcfcf0c77d6b6ebcead15c363.zip
405016: class literals in annotation matching
Diffstat (limited to 'org.aspectj.matcher')
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java
index c08073580..984b4ee4c 100644
--- a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java
+++ b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java
@@ -201,7 +201,7 @@ public class WildAnnotationTypePattern extends AnnotationTypePattern {
}
} else if (t.equals(ResolvedType.JL_STRING)) {
// nothing to do, it will be OK
- } else if (t.equals(ResolvedType.JL_CLASS)) {
+ } else if (t.equals(ResolvedType.JL_CLASS) || (t.isParameterizedOrGenericType() && t.getRawType().equals(ResolvedType.JL_CLASS))) {
String typename = v.substring(0, v.lastIndexOf('.')); // strip off '.class'
ResolvedType rt = scope.lookupType(typename, this).resolve(scope.getWorld());
if (rt.isMissing()) {
@@ -227,6 +227,17 @@ public class WildAnnotationTypePattern extends AnnotationTypePattern {
}
replacementValues.put(k, rt.getSignature());
break;
+// } else if (t.isArray()) {
+ // Looks like {} aren't pseudotokens in the parser so they don't get through for our pointcut parser
+// // @Foo(value=[Foo.class])
+// String typename = v.substring(0, v.lastIndexOf('.')); // strip off '.class'
+// ResolvedType rt = scope.lookupType(typename, this).resolve(scope.getWorld());
+// if (rt.isMissing()) {
+// IMessage m = MessageUtil.error("Unable to resolve type '" + v + "' specified for value '" + k + "'",
+// getSourceLocation());
+// scope.getWorld().getMessageHandler().handleMessage(m);
+// }
+// replacementValues.put(k, rt.getSignature());
} else {
scope.message(MessageUtil.error(WeaverMessages.format(WeaverMessages.UNSUPPORTED_ANNOTATION_VALUE_TYPE,t), getSourceLocation()));
replacementValues.put(k,"");