From 29457c3d6d0b4cd7cca1d2867e6bd80a56a24722 Mon Sep 17 00:00:00 2001 From: jhugunin Date: Mon, 4 Aug 2003 21:04:49 +0000 Subject: fixes for Bugzilla Bug 40858 super-qualified pointcut reference cause weaver stack trace and Bugzilla Bug 40814 no error when defining interface pointcuts --- .../internal/compiler/ast/PointcutDeclaration.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'org.aspectj.ajdt.core') diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDeclaration.java index 9579cc87e..b987c418b 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDeclaration.java @@ -19,6 +19,8 @@ import org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory; import org.aspectj.ajdt.internal.core.builder.EclipseSourceContext; import org.aspectj.weaver.AjAttribute; import org.aspectj.weaver.ResolvedPointcutDefinition; +import org.aspectj.weaver.ResolvedTypeX; +import org.aspectj.weaver.TypeX; import org.aspectj.weaver.patterns.Pointcut; import org.eclipse.jdt.internal.compiler.ClassFile; import org.eclipse.jdt.internal.compiler.CompilationResult; @@ -72,8 +74,20 @@ public class PointcutDeclaration extends MethodDeclaration { this.declaredName = new String(selector); selector = CharOperation.concat(mangledPrefix, '$', selector, '$', Integer.toHexString(sourceStart).toCharArray()); - if (pointcutDesignator == null) return; //XXX - pointcutDesignator.postParse(typeDec, this); + + if (Modifier.isAbstract(this.declaredModifiers) && + !(typeDec instanceof AspectDeclaration)) + { + typeDec.scope.problemReporter().signalError(sourceStart, sourceEnd, + "The abstract pointcut " + new String(declaredName) + + " can only be defined in an aspect"); + ignoreFurtherInvestigation = true; + return; + } + + if (pointcutDesignator != null) { + pointcutDesignator.postParse(typeDec, this); + } } public void resolveStatements() { @@ -86,7 +100,9 @@ public class PointcutDeclaration extends MethodDeclaration { if (Modifier.isAbstract(this.declaredModifiers)&& (pointcutDesignator != null)) { scope.problemReporter().signalError(sourceStart, sourceEnd, "abstract pointcut can't have body"); - } + ignoreFurtherInvestigation = true; + return; + } if (pointcutDesignator != null) { pointcutDesignator.finishResolveTypes(this, this.binding, arguments.length, -- cgit v1.2.3