summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-03-14 02:17:51 +0000
committeracolyer <acolyer>2005-03-14 02:17:51 +0000
commit204274dc0529ecbbaa20d72eec49a14ddf4ba34c (patch)
tree69ab15251122235278acaf91a2ff9158121870f9
parente35d9ee62484336a691cfc3990c507c482a2d06a (diff)
downloadaspectj-204274dc0529ecbbaa20d72eec49a14ddf4ba34c.tar.gz
aspectj-204274dc0529ecbbaa20d72eec49a14ddf4ba34c.zip
test cases for Bugzilla Bug 42743: declare soft limitation
-rw-r--r--tests/decs/DeclareSoftRuntimeException.aj41
-rw-r--r--tests/decs/VerifyError.aj23
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java10
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ajc150.xml19
4 files changed, 92 insertions, 1 deletions
diff --git a/tests/decs/DeclareSoftRuntimeException.aj b/tests/decs/DeclareSoftRuntimeException.aj
new file mode 100644
index 000000000..379ba645c
--- /dev/null
+++ b/tests/decs/DeclareSoftRuntimeException.aj
@@ -0,0 +1,41 @@
+public aspect DeclareSoftRuntimeException {
+
+ declare soft : MyRuntimeException : execution(* *(..));
+ declare soft : MyException : execution(* *(..));
+ declare soft : Exception : execution(void throwMyExceptionButNotReally());
+
+ public static void main(String[] args) {
+ try {
+ throwMyRuntimeException();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ try {
+ throwMyException();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ try {
+ throwMyExceptionButNotReally();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ }
+
+ private static void throwMyRuntimeException() {
+ throw new MyRuntimeException();
+ }
+
+ private static void throwMyException() throws MyException {
+ throw new MyException();
+ }
+
+ private static void throwMyExceptionButNotReally() throws MyException {
+ throw new MyRuntimeException();
+ }
+
+}
+
+class MyRuntimeException extends RuntimeException {}
+
+class MyException extends Exception {}
diff --git a/tests/decs/VerifyError.aj b/tests/decs/VerifyError.aj
new file mode 100644
index 000000000..835748770
--- /dev/null
+++ b/tests/decs/VerifyError.aj
@@ -0,0 +1,23 @@
+import java.io.IOException;
+import org.aspectj.lang.SoftException;
+
+public class VerifyError {
+
+ static void foo() throws IOException {
+ throw new IOException();
+ }
+
+ public static void main(String[] args) throws Exception{
+ try {
+ foo();
+ } catch (SoftException sEx) {
+ //
+ }
+ }
+}
+
+
+aspect Soften {
+
+ declare soft : IOException : call(* foo());
+} \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
index 82e1aed27..a1aeb6d77 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
@@ -111,7 +111,7 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void test051_arrayCloningInJava5() {
runTest("AJC possible bug with static nested classes");
}
-
+
public void testBadASMforEnums() throws IOException {
runTest("bad asm for enums");
@@ -128,6 +128,14 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void npeOnTypeNotFound() {
runTest("structure model npe on type not found");
}
+
+ public void testNoRuntimeExceptionSoftening() {
+ runTest("declare soft of runtime exception");
+ }
+
+ public void testRuntimeNoSoftenWithHandler() {
+ runTest("declare soft w. catch block");
+ }
// helper methods.....
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
index 666ad0d33..2e165f3a8 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
@@ -54,6 +54,25 @@
<run class="B"/>
</ajc-test>
+ <ajc-test dir="decs" pr="42743" title="declare soft of runtime exception">
+ <compile files="DeclareSoftRuntimeException.aj">
+ <message kind="warning" line="3" text="MyRuntimeException will not be softened as it is already a RuntimeException"/>
+ </compile>
+ <run class="DeclareSoftRuntimeException">
+ <stdout>
+ <line text="MyRuntimeException"/>
+ <line text="org.aspectj.lang.SoftException"/>
+ <line text="MyRuntimeException"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="decs" pr="42743" title="declare soft w. catch block">
+ <compile files="VerifyError.aj">
+ </compile>
+ <run class="VerifyError"/>
+ </ajc-test>
+
<ajc-test dir="bugs" pr="61568" title="Various kinds of ambiguous bindings">
<compile files="AmbiguousBindings.aj">
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message>