aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-07-02 23:12:18 +0000
committerjhugunin <jhugunin>2003-07-02 23:12:18 +0000
commitba41fae6547688e8714d01be27bc81dbbe850f55 (patch)
tree942e8dfd6ff41b9c2c7d64485734020d9b38b48d /tests
parent2e3c9191a9cb753ff54cf20592dcd0ef14bfc83a (diff)
downloadaspectj-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.xml20
-rw-r--r--tests/ajcTestsFailing.xml1
-rw-r--r--tests/bugs/MissingImport.java22
-rw-r--r--tests/bugs/NewVoid.java33
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