summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2010-05-31 17:38:07 +0000
committeraclement <aclement>2010-05-31 17:38:07 +0000
commit540672aeba6bceadb44b381b49dcae14825b0d13 (patch)
tree991015e4c75d1e00af10612221ef84b517eb4821
parenta580a6fff505b5e8d725060ec969d7d43f19ed03 (diff)
downloadaspectj-540672aeba6bceadb44b381b49dcae14825b0d13.tar.gz
aspectj-540672aeba6bceadb44b381b49dcae14825b0d13.zip
314695
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypePattern.java4
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildAnnotationTypePattern.java2
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildTypePattern.java6
3 files changed, 11 insertions, 1 deletions
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypePattern.java b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypePattern.java
index bc3d6712f..023a259de 100644
--- a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypePattern.java
+++ b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypePattern.java
@@ -351,6 +351,10 @@ public abstract class TypePattern extends PatternNode {
return false;
}
+ public boolean hasFailedResolution() {
+ return false;
+ }
+
}
class EllipsisTypePattern extends TypePattern {
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 f988ed500..8934a7512 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 {
if (!resolved) {
throw new IllegalStateException("Can't match on an unresolved annotation type pattern");
}
- if (annotationValues != null) {
+ if (annotationValues != null && !typePattern.hasFailedResolution()) {
// PVAL improve this restriction, would allow '*(value=Color.RED)'
throw new IllegalStateException("Cannot use annotationvalues with a wild annotation pattern");
}
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildTypePattern.java b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildTypePattern.java
index 7cdfd0c23..0bedfcb65 100644
--- a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildTypePattern.java
+++ b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/WildTypePattern.java
@@ -76,6 +76,7 @@ public class WildTypePattern extends TypePattern {
private static final String GENERIC_WILDCARD_CHARACTER = "?"; // signature of ? is *
private static final String GENERIC_WILDCARD_SIGNATURE_CHARACTER = "*"; // signature of ? is *
private NamePattern[] namePatterns;
+ private boolean failedResolution = false;
int ellipsisCount;
String[] importedPrefixes;
String[] knownMatches;
@@ -915,6 +916,7 @@ public class WildTypePattern extends TypePattern {
// Only put the lint warning out if we can't find it in the world
if (typeFoundInWholeWorldSearch.isMissing()) {
scope.getWorld().getLint().invalidAbsoluteTypeName.signal(nameWeLookedFor, getSourceLocation());
+ this.failedResolution = true;
}
}
importedPrefixes = scope.getImportedPrefixes();
@@ -1396,4 +1398,8 @@ public class WildTypePattern extends TypePattern {
return visitor.visit(this, data);
}
+ public boolean hasFailedResolution() {
+ return failedResolution;
+ }
+
}