aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2004-01-14 15:24:06 +0000
committerjhugunin <jhugunin>2004-01-14 15:24:06 +0000
commit5834de97836ebcc056415736c17c46e8b1dfaf5a (patch)
treea7b87ccc35e25aafe73d24d17f08cc33f62b22c4 /tests/bugs
parent7bbd1f419239dc9e8b46e7fd912b2bc007bbd76a (diff)
downloadaspectj-5834de97836ebcc056415736c17c46e8b1dfaf5a.tar.gz
aspectj-5834de97836ebcc056415736c17c46e8b1dfaf5a.zip
Fix for Bugzilla Bug 44587
Erroneous exception conversion and Bugzilla Bug 34206 before():execution(new(..)) does not throw NoAspectBoundException All exceptions that occur during the static intialization of a persingleton aspect will be swallowed. When using that aspect (via aspectOf()) a NoAspectBoundException will be thrown with the original exception from the staitc initializer as the cause.
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/ErroneousExceptionConversion.java44
-rw-r--r--tests/bugs/ErroneousExceptionConversion1.java26
2 files changed, 70 insertions, 0 deletions
diff --git a/tests/bugs/ErroneousExceptionConversion.java b/tests/bugs/ErroneousExceptionConversion.java
new file mode 100644
index 000000000..13db17a18
--- /dev/null
+++ b/tests/bugs/ErroneousExceptionConversion.java
@@ -0,0 +1,44 @@
+// pr 44587
+import org.aspectj.testing.Tester;
+import org.aspectj.lang.NoAspectBoundException;
+public class ErroneousExceptionConversion {
+
+ public static void main(String[] args) {
+ try {
+ new ErroneousExceptionConversion();
+ Tester.checkFailed("Wanted an exception in initializer error");
+ } catch (NoAspectBoundException nabEx) {
+ // good
+ // check nabEx.getCause instanceof RuntimeException and has explanation "boom..."
+ Throwable cause = nabEx.getCause();
+ if (!(cause instanceof RuntimeException)) {
+ Tester.checkFailed("Should have a RuntimeException as cause");
+ }
+ } catch(Throwable t) {
+ Tester.checkFailed("Wanted an ExceptionInInitializerError but got " + t);
+ }
+ }
+
+
+}
+
+aspect A {
+
+ int ErroneousExceptionConversion.someField = throwIt();
+
+ public static int throwIt() {
+ throw new RuntimeException("Exception during aspect initialization");
+ }
+
+ public A() {
+ System.err.println("boom in 5...");
+ throw new RuntimeException("boom");
+ }
+
+ // if I change this to execution the test passes...
+ after() throwing : initialization(ErroneousExceptionConversion.new(..)) {
+ System.out.println("After throwing");
+ }
+
+}
+
diff --git a/tests/bugs/ErroneousExceptionConversion1.java b/tests/bugs/ErroneousExceptionConversion1.java
new file mode 100644
index 000000000..9a8f0e2ab
--- /dev/null
+++ b/tests/bugs/ErroneousExceptionConversion1.java
@@ -0,0 +1,26 @@
+import org.aspectj.lang.*;
+import org.aspectj.testing.Tester;
+
+aspect Watchcall {
+ pointcut myConstructor(): execution(new(..));
+
+ before(): myConstructor() {
+ System.err.println("Entering Constructor");
+ }
+
+ after(): myConstructor() {
+ System.err.println("Leaving Constructor");
+ }
+}
+
+public class ErroneousExceptionConversion1 {
+ public static void main(String[] args) {
+ try {
+ ErroneousExceptionConversion1 c = new ErroneousExceptionConversion1();
+ Tester.checkFailed("shouldn't get here");
+ } catch (NoAspectBoundException nab) {
+ // expected
+ }
+
+ }
+}