summaryrefslogtreecommitdiffstats
path: root/weaver/src
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-03-10 13:00:42 +0000
committeracolyer <acolyer>2005-03-10 13:00:42 +0000
commit922aeaa57dcb071c5a3007827c2268d707e557f2 (patch)
treed321aa33c41841eb9853d131f0eb5d1dd11162db /weaver/src
parent074251e1666235f1eb62e5406821e8d05178ce9a (diff)
downloadaspectj-922aeaa57dcb071c5a3007827c2268d707e557f2.tar.gz
aspectj-922aeaa57dcb071c5a3007827c2268d707e557f2.zip
fixes for annotation type pattern bugs uncovered in 150 tests
Diffstat (limited to 'weaver/src')
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java13
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java1
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java2
3 files changed, 10 insertions, 6 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
index 1c2f7f443..42635aa78 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
@@ -900,11 +900,14 @@ public class BcelWeaver implements IWeaver {
if (element instanceof BcelAdvice) { // This will stop us incorrectly reporting deow Checkers
BcelAdvice ba = (BcelAdvice)element;
if (!ba.hasMatchedSomething()) {
- Annotation[] anns = ((BcelMethod)ba.getSignature()).getAnnotations();
- // Check if they want to suppress the warning on this piece of advice
- if (!Utility.isSuppressing(anns,"adviceDidNotMatch")) {
- world.getLint().adviceDidNotMatch.signal(ba.getDeclaringAspect().getNameAsIdentifier(),element.getSourceLocation());
- }
+ BcelMethod meth = ((BcelMethod)ba.getSignature());
+ if (meth != null) {
+ Annotation[] anns = meth.getAnnotations();
+ // Check if they want to suppress the warning on this piece of advice
+ if (!Utility.isSuppressing(anns,"adviceDidNotMatch")) {
+ world.getLint().adviceDidNotMatch.signal(ba.getDeclaringAspect().getNameAsIdentifier(),element.getSourceLocation());
+ }
+ }
}
}
}
diff --git a/weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java b/weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java
index cca0c32c3..df3833009 100644
--- a/weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java
+++ b/weaver/src/org/aspectj/weaver/patterns/AnnotationPatternList.java
@@ -82,6 +82,7 @@ public class AnnotationPatternList extends PatternNode {
} else {
// match the argument type at argsIndex with the ExactAnnotationTypePattern
// we know it is exact because nothing else is allowed in args
+ if (someArgs[argsIndex].isPrimitive()) return FuzzyBoolean.NO; // can never match
ExactAnnotationTypePattern ap = (ExactAnnotationTypePattern)typePatterns[i];
FuzzyBoolean matches = ap.matchesRuntimeType(someArgs[argsIndex]);
if (matches == FuzzyBoolean.NO) {
diff --git a/weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java b/weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java
index fdc09557d..dfb97e743 100644
--- a/weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java
+++ b/weaver/src/org/aspectj/weaver/patterns/ArgsAnnotationPointcut.java
@@ -147,7 +147,7 @@ public class ArgsAnnotationPointcut extends NameBindingPointcut {
if (ap instanceof BindingAnnotationTypePattern) {
BindingAnnotationTypePattern btp = (BindingAnnotationTypePattern)ap;
Var annvar = shadow.getArgAnnotationVar(argsIndex,rAnnType);
- state.set(argsIndex,annvar);
+ state.set(btp.getFormalIndex(),annvar);
ret = Test.makeAnd(ret,Test.makeHasAnnotation(shadow.getArgVar(argsIndex),rAnnType));
argsIndex++;
} else {