Browse Source

better infrastructure for checking pointcuts terminate correctly - inactive right now

tags/V1_9_3RC1
Andy Clement 5 years ago
parent
commit
b21a593652

+ 5
- 0
org.aspectj.matcher/src/org/aspectj/weaver/patterns/BasicTokenSource.java View File

@@ -180,4 +180,9 @@ public class BasicTokenSource implements ITokenSource {
this.sourceContext = context;
}

@Override
public boolean hasMoreTokens() {
return index < tokens.length;
}

}

+ 1
- 0
org.aspectj.matcher/src/org/aspectj/weaver/patterns/ITokenSource.java View File

@@ -23,4 +23,5 @@ public interface ITokenSource {
public int getIndex();
public void setIndex(int newIndex);
public ISourceContext getSourceContext();
public boolean hasMoreTokens();
}

+ 15
- 1
org.aspectj.matcher/src/org/aspectj/weaver/patterns/PatternParser.java View File

@@ -97,6 +97,10 @@ public class PatternParser {
eat(")");
return new PerCflow(entry, isBelow);
}
public boolean moreToParse() {
return tokenSource.hasMoreTokens();
}

private PerClause parsePerObject(boolean isThis) {
parseIdentifier();
@@ -330,6 +334,16 @@ public class PatternParser {
String message = parsePossibleStringSequence(true);
return new DeclareErrorOrWarning(isError, pointcut, message);
}
public Pointcut parsePointcut(boolean shouldConsumeAllInput) {
Pointcut p = parsePointcut();
if (shouldConsumeAllInput && tokenSource.hasMoreTokens()) {
throw new ParserException(
"Found unexpected data after parsing pointcut",
tokenSource.next());
}
return p;
}

public Pointcut parsePointcut() {
Pointcut p = parseAtomicPointcut();
@@ -343,7 +357,7 @@ public class PatternParser {

return p;
}
private Pointcut parseNotOrPointcut() {
Pointcut p = parseAtomicPointcut();
if (maybeEat("&&")) {

+ 1
- 1
org.aspectj.matcher/src/org/aspectj/weaver/tools/PointcutParser.java View File

@@ -325,7 +325,7 @@ public class PointcutParser {
try {
PatternParser parser = new PatternParser(expression);
parser.setPointcutDesignatorHandlers(pointcutDesignators, world);
Pointcut pc = parser.parsePointcut();
Pointcut pc = parser.parsePointcut(); // more correctly: parsePointcut(true)
validateAgainstSupportedPrimitives(pc, expression);
IScope resolutionScope = buildResolutionScope((inScope == null ? Object.class : inScope), formalParameters);
pc = pc.resolve(resolutionScope);

Loading…
Cancel
Save