Ver código fonte

fix for bug 98952: @AJ if pointcut

tags/V1_5_0M3
acolyer 19 anos atrás
pai
commit
0f181ac687

+ 10
- 9
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java Ver arquivo

@@ -444,15 +444,16 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
pcDecl.setGenerateSyntheticPointcutMethod();
TypeDeclaration onType = (TypeDeclaration) typeStack.peek();
pcDecl.postParse(onType);
EclipseFactory factory = EclipseFactory.fromScopeLookupEnvironment(methodDeclaration.scope);
int argsLength = methodDeclaration.arguments == null ? 0 : methodDeclaration.arguments.length;
FormalBinding[] bindings = new FormalBinding[argsLength];
for (int i = 0, len = bindings.length; i < len; i++) {
Argument arg = methodDeclaration.arguments[i];
String name = new String(arg.name);
UnresolvedType type = factory.fromBinding(methodDeclaration.binding.parameters[i]);
bindings[i] = new FormalBinding(type, name, i, arg.sourceStart, arg.sourceEnd, "unknown");
}
// EclipseFactory factory = EclipseFactory.fromScopeLookupEnvironment(methodDeclaration.scope);
// int argsLength = methodDeclaration.arguments == null ? 0 : methodDeclaration.arguments.length;
FormalBinding[] bindings = buildFormalAdviceBindingsFrom(methodDeclaration);
// FormalBinding[] bindings = new FormalBinding[argsLength];
// for (int i = 0, len = bindings.length; i < len; i++) {
// Argument arg = methodDeclaration.arguments[i];
// String name = new String(arg.name);
// UnresolvedType type = factory.fromBinding(methodDeclaration.binding.parameters[i]);
// bindings[i] = new FormalBinding(type, name, i, arg.sourceStart, arg.sourceEnd, "unknown");
// }
swap(onType,methodDeclaration,pcDecl);
pc.resolve(new EclipseScope(bindings,methodDeclaration.scope));
HasIfPCDVisitor ifFinder = new HasIfPCDVisitor();

+ 3
- 3
weaver/src/org/aspectj/weaver/patterns/IfPointcut.java Ver arquivo

@@ -17,6 +17,7 @@ import java.io.IOException;
import java.lang.reflect.Member;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -289,9 +290,8 @@ public class IfPointcut extends Pointcut {
ResolvedPointcutDefinition def = bindings.peekEnclosingDefinitition();
if (def != null) {
ResolvedType aspect = inAspect.getWorld().resolve(def.getDeclaringType());
ResolvedMember[] methods = aspect.getDeclaredJavaMethods();
for (int i = 0; i < methods.length; i++) {
ResolvedMember method = methods[i];
for (Iterator memberIter = aspect.getMethods(); memberIter.hasNext();) {
ResolvedMember method = (ResolvedMember) memberIter.next();
if (def.getName().equals(method.getName())
&& def.getParameterTypes().length == method.getParameterTypes().length) {
boolean sameSig = true;

Carregando…
Cancelar
Salvar