Explorar el Código

262905: recursive non matching cflow pointcut: dont report rogue non-matches

tags/pre268419
aclement hace 15 años
padre
commit
04509cc644
Se han modificado 1 ficheros con 9 adiciones y 15 borrados
  1. 9
    15
      weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java

+ 9
- 15
weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java Ver fichero

@@ -54,6 +54,7 @@ import org.aspectj.bridge.context.ContextToken;
import org.aspectj.util.FileUtil;
import org.aspectj.util.FuzzyBoolean;
import org.aspectj.weaver.Advice;
import org.aspectj.weaver.AdviceKind;
import org.aspectj.weaver.AnnotationAJ;
import org.aspectj.weaver.AnnotationOnTypeMunger;
import org.aspectj.weaver.BCException;
@@ -1328,21 +1329,20 @@ public class BcelWeaver {

for (Iterator iter = l.iterator(); iter.hasNext();) {
ShadowMunger element = (ShadowMunger) iter.next();
if (element instanceof BcelAdvice) { // This will stop us
// incorrectly reporting
// deow Checkers
// This will stop us incorrectly reporting deow checkers:
if (element instanceof BcelAdvice) {
BcelAdvice ba = (BcelAdvice) element;
if (ba.getKind() == AdviceKind.CflowEntry || ba.getKind() == AdviceKind.CflowBelowEntry) {
continue;
}
if (!ba.hasMatchedSomething()) {
// Because we implement some features of AJ itself by
// creating our own kind of mungers, you sometimes
// find that ba.getSignature() is not a BcelMethod - for
// example it might be a cflow entry munger.
if (ba.getSignature() != null) {

// check we haven't already warned on this advice
// and line
// (cflow creates multiple mungers for the same
// advice)
// check we haven't already warned on this advice and line
// (cflow creates multiple mungers for the same advice)
AdviceLocation loc = new AdviceLocation(ba);
if (alreadyWarnedLocations.contains(loc)) {
continue;
@@ -1353,13 +1353,7 @@ public class BcelWeaver {
if (!(ba.getSignature() instanceof BcelMethod)
|| !Utility.isSuppressing(ba.getSignature(), "adviceDidNotMatch")) {
world.getLint().adviceDidNotMatch.signal(ba.getDeclaringAspect().toString(), new SourceLocation(
element.getSourceLocation().getSourceFile(), element.getSourceLocation().getLine()));// element
// .
// getSourceLocation
// (
// )
// )
// ;
element.getSourceLocation().getSourceFile(), element.getSourceLocation().getLine()));
}
}
}

Cargando…
Cancelar
Guardar