From: aclement Date: Mon, 31 May 2010 17:38:07 +0000 (+0000) Subject: 314695 X-Git-Tag: PRE_PUSHIN~9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=540672aeba6bceadb44b381b49dcae14825b0d13;p=aspectj.git 314695 --- 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; + } + }