aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2004-01-09 09:21:03 +0000
committerjhugunin <jhugunin>2004-01-09 09:21:03 +0000
commit7b081f2e0bece3414ac4f385cde75d7b54981099 (patch)
tree7c8b7d35d7e84fc1666f6813c30d8cf3520bcb9a
parent8d29495e512cf88357f43a044ec515506bca2768 (diff)
downloadaspectj-7b081f2e0bece3414ac4f385cde75d7b54981099.tar.gz
aspectj-7b081f2e0bece3414ac4f385cde75d7b54981099.zip
Fix for Bugzilla Bug 49638 exception logging: after() throwing advice can't convert Throwable obj to string and ajc aborts
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/parser/AjParser.java7
-rw-r--r--tests/ajcTests.xml13
-rw-r--r--tests/bugs/AfterThrowingAdviceSyntaxError.java28
3 files changed, 46 insertions, 2 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/parser/AjParser.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/parser/AjParser.java
index 621576e16..819de5523 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/parser/AjParser.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/parser/AjParser.java
@@ -737,7 +737,12 @@ public class AjParser extends Parser {
} else if (CharOperation.equals(name, "returning".toCharArray())) {
adviceDecl.kind = AdviceKind.AfterReturning;
} else {
- //XXX illegal name here
+ problemReporter().parseError(
+ start,
+ end,
+ name,
+ String.valueOf(name),
+ new String[] {"throwing", "returning", ":"});
}
}
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml
index 241d59ccc..c99ab74c6 100644
--- a/tests/ajcTests.xml
+++ b/tests/ajcTests.xml
@@ -6897,5 +6897,16 @@
</message>
</compile>
</ajc-test>
-
+
+ <ajc-test dir="bugs"
+ title="Appropriate message for 'after() thowing(Throwable th)' syntax error"
+ pr="49638"
+ >
+ <compile
+ files="AfterThrowingAdviceSyntaxError.java" >
+ <message kind="error" line="21" />
+ <message kind="error" line="23" />
+ </compile>
+ </ajc-test>
+
</suite>
diff --git a/tests/bugs/AfterThrowingAdviceSyntaxError.java b/tests/bugs/AfterThrowingAdviceSyntaxError.java
new file mode 100644
index 000000000..088dcdc9a
--- /dev/null
+++ b/tests/bugs/AfterThrowingAdviceSyntaxError.java
@@ -0,0 +1,28 @@
+import org.aspectj.lang.*;
+
+public class AfterThrowingAdviceSyntaxError {
+
+ public static void main(String[] args) {
+ perform();
+ }
+
+ private static void perform() {
+ Object nullObj = null;
+ nullObj.toString();
+ }
+}
+
+aspect ExceptionLoggerAspectV2
+{
+
+ pointcut exceptionLogMethods()
+ : call(* *.*(..)) && !within(ExceptionLoggerAspectV2);
+
+ after() thowing(Throwable ex) : exceptionLogMethods() {
+ Signature sig = thisJoinPointStaticPart.getSignature();
+ System.out.printl("WARNING: "
+ + sig.getDeclaringType().getName() + " "
+ + sig.getName() + " "
+ + "Exception logger aspect " + ex);
+ }
+} \ No newline at end of file