public ResolvedPointcutDefinition makeResolvedPointcutDefinition(EclipseFactory inWorld) {
if (resolvedPointcutDeclaration != null)
return resolvedPointcutDeclaration;
+ if (binding == null) {
+ // other errors exist that will be reported separately
+ return null;
+ }
// System.out.println("pc: " + getPointcut() + ", " + getPointcut().state);
ReferenceBinding declaringClass = binding.declaringClass;
TypeBinding[] parameters = binding.parameters;
ResolvedMember[] pointcuts = getDeclaredPointcuts();
boolean sawError = false;
for (int i = 0, len = pointcuts.length; i < len; i++) {
+ if (pointcuts[i]==null) {
+ // Something else is broken in this file and will be reported separately
+ continue;
+ }
if (pointcuts[i].isAbstract()) {
if (!this.isAspect()) {
eclipseWorld().showMessage(IMessage.ERROR, "abstract pointcut only allowed in aspect" + pointcuts[i].getName(),
}
for (int j = i + 1; j < len; j++) {
+ if (pointcuts[j]==null) {
+ // Something else is broken in this file and will be reported separately
+ continue;
+ }
if (pointcuts[i].getName().equals(pointcuts[j].getName())) {
eclipseWorld().showMessage(IMessage.ERROR, "duplicate pointcut name: " + pointcuts[j].getName(),
pointcuts[i].getSourceLocation(), pointcuts[j].getSourceLocation());