@@ -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 {} |
@@ -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()); | |||
} |
@@ -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..... | |||
@@ -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> |