diff options
author | jhugunin <jhugunin> | 2003-07-02 23:12:18 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-07-02 23:12:18 +0000 |
commit | ba41fae6547688e8714d01be27bc81dbbe850f55 (patch) | |
tree | 942e8dfd6ff41b9c2c7d64485734020d9b38b48d /tests | |
parent | 2e3c9191a9cb753ff54cf20592dcd0ef14bfc83a (diff) | |
download | aspectj-ba41fae6547688e8714d01be27bc81dbbe850f55.tar.gz aspectj-ba41fae6547688e8714d01be27bc81dbbe850f55.zip |
tests and fixes for two awful error message bugs:
[Bug 39458] New: Compiler crash in ajc 1.1
[Bug 39460] New: Missing import crashes compiler
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ajcTests.xml | 20 | ||||
-rw-r--r-- | tests/ajcTestsFailing.xml | 1 | ||||
-rw-r--r-- | tests/bugs/MissingImport.java | 22 | ||||
-rw-r--r-- | tests/bugs/NewVoid.java | 33 |
4 files changed, 76 insertions, 0 deletions
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index 1419fc198..8cf4bbc76 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -6388,4 +6388,24 @@ <compile files="TrySwitch.java"/> <run class="TrySwitch"/> </ajc-test> + + <ajc-test dir="bugs" pr="39458" + title="Compiler crash in ajc 1.1 - terrible error for inaccessible constructor"> + <compile files="NewVoid.java"> + <message kind="error" line="17"/> + <message kind="error" line="20"/> + <message kind="error" line="21"/> + + <message kind="error" line="28"/> + <message kind="warning" line="29"/> + <message kind="warning" line="30"/> + </compile> + </ajc-test> + + <ajc-test dir="bugs" pr="39460" + title="Missing import crashes compiler"> + <compile files="MissingImport.java"> + <message kind="error" line="13"/> + </compile> + </ajc-test> </suite> diff --git a/tests/ajcTestsFailing.xml b/tests/ajcTestsFailing.xml index 50d4ab090..cb741c1e0 100644 --- a/tests/ajcTestsFailing.xml +++ b/tests/ajcTestsFailing.xml @@ -4,4 +4,5 @@ <!-- contains valid tests that the compiler has never passed --> <suite> + </suite> diff --git a/tests/bugs/MissingImport.java b/tests/bugs/MissingImport.java new file mode 100644 index 000000000..c70129e50 --- /dev/null +++ b/tests/bugs/MissingImport.java @@ -0,0 +1,22 @@ +import org.aspectj.lang.*; +import org.aspectj.lang.reflect.*; +import java.lang.reflect.Method; +//import java.lang.reflect.InvocationTargetException; <- crash with this line commented out + +public aspect MissingImport { + Object around() : + call(* *(..)) && !within(ImposterProcessing+) { + MethodSignature sig = (MethodSignature)thisJoinPoint.getSignature(); + try { + Method meth = ImposterProcessing.class.getMethod("dynamicThrow", new Class[] { Throwable.class }); + meth.invoke(this, new Object[] { null }); + } catch (InvocationTargetException e) { // expect CE + throw new RuntimeException("framework error in throwing test exception ", e); + } catch (IllegalAccessException e) { + throw new RuntimeException("framework error in throwing test exception ", e); + } + return null; + } +} + +class ImposterProcessing { }
\ No newline at end of file diff --git a/tests/bugs/NewVoid.java b/tests/bugs/NewVoid.java new file mode 100644 index 000000000..0162b5313 --- /dev/null +++ b/tests/bugs/NewVoid.java @@ -0,0 +1,33 @@ +import org.aspectj.lang.*; +import org.aspectj.lang.reflect.*; +import java.lang.reflect.Method; + +public aspect NewVoid { + Object around() : + call(new(..)) { + return proceed(); + } + + + Object around() : + call(* *(..)) { + MethodSignature sig = (MethodSignature)thisJoinPoint.getSignature(); + Class returnType = sig.getReturnType(); + if (returnType == java.lang.Void.TYPE) { + return new java.lang.Void(); // expect CE here + } else { + String s = "hi"; + Xyz xyz = null; // expect CE here + int x = s.count; // expect CE here + return proceed(); + } + } +} +privileged aspect PrivCheck { + Object around() : call(* *(..)) { + Xyz xyz = null; // expect CE here + Object o = new Void(); // expect warning here + int x = "goo".count; // expect warning here + return null; + } +}
\ No newline at end of file |