aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java5
-rw-r--r--tests/bugs171/pr384401/X.java15
-rw-r--r--tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java4
-rw-r--r--tests/src/org/aspectj/systemtest/ajc171/ajc171.xml6
4 files changed, 30 insertions, 0 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
index 506aabfbf..fa63a3393 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
@@ -385,6 +385,11 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
try {
// +1 to give first char of pointcut string
ISourceContext context = new EclipseSourceContext(unit.compilationResult, pcLocation[0] + 1);
+ if (pointcutExpression == null) {
+ methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,
+ methodDeclaration.sourceEnd, "the advice annotation must specify a pointcut value");
+ return;
+ }
PatternParser pp = new PatternParser(pointcutExpression, context);
Pointcut pc = pp.parsePointcut();
pp.checkEof();
diff --git a/tests/bugs171/pr384401/X.java b/tests/bugs171/pr384401/X.java
new file mode 100644
index 000000000..e9a70eedb
--- /dev/null
+++ b/tests/bugs171/pr384401/X.java
@@ -0,0 +1,15 @@
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+
+@Aspect
+public class X {
+// @AfterThrowing(pointcut="execution(* *(..))",throwing = "e")
+ @AfterThrowing(throwing = "e")
+ public void bizLoggerWithException(JoinPoint thisJoinPoint,Throwable e) {
+ // .....// do some stuff
+ }
+
+}
+
+class BizLoggable {}
diff --git a/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java b/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java
index 95d459a5d..c21fc77b2 100644
--- a/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java
@@ -21,6 +21,10 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
*/
public class Ajc171Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+ public void testNpe_pr384401() {
+ runTest("npe");
+ }
+
public void testUnresolvableEnum_pr387568() {
runTest("unresolvable enum");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml b/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml
index 4f09f7c84..d9a7651f3 100644
--- a/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml
+++ b/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml
@@ -2,6 +2,12 @@
<suite>
+ <ajc-test dir="bugs171/pr384401" title="npe">
+ <compile files="X.java" options="-1.5">
+ <message kind="error" line="9" text="the advice annotation must specify a pointcut value"/>
+ </compile>
+ </ajc-test>
+
<ajc-test dir="bugs171/pr387444" title="soft 17">
<compile files="Code.java" options="-1.7"/>
</ajc-test>