diff options
author | jhugunin <jhugunin> | 2004-01-09 09:21:03 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2004-01-09 09:21:03 +0000 |
commit | 7b081f2e0bece3414ac4f385cde75d7b54981099 (patch) | |
tree | 7c8b7d35d7e84fc1666f6813c30d8cf3520bcb9a | |
parent | 8d29495e512cf88357f43a044ec515506bca2768 (diff) | |
download | aspectj-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.java | 7 | ||||
-rw-r--r-- | tests/ajcTests.xml | 13 | ||||
-rw-r--r-- | tests/bugs/AfterThrowingAdviceSyntaxError.java | 28 |
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 |