aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.lang
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/testsuite/libjava.lang')
-rw-r--r--libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java38
-rw-r--r--libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out1
-rw-r--r--libjava/testsuite/libjava.lang/invoke_from_inner.java37
-rw-r--r--libjava/testsuite/libjava.lang/invoke_from_inner.out2
4 files changed, 78 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
new file mode 100644
index 0000000..1fd16f1
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
@@ -0,0 +1,38 @@
+/* From java/3285, By p.thio@valescom.com */
+
+interface I
+{
+ void print ();
+};
+
+class C1
+implements I
+{
+ public void print () { System.out.println ("C1: Message"); }
+}
+
+abstract
+class C2
+{
+ C2(I i)
+ {
+ i.print ();
+ }
+ abstract void h();
+}
+
+public
+class anon_ctor_itf_arg
+{
+ public static
+ void main(String argv[])
+ {
+ C1 c1 = new C1();
+ new C2(c1)
+ {
+ void h()
+ {
+ }
+ };
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
new file mode 100644
index 0000000..abddf8e
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
@@ -0,0 +1 @@
+C1: Message
diff --git a/libjava/testsuite/libjava.lang/invoke_from_inner.java b/libjava/testsuite/libjava.lang/invoke_from_inner.java
new file mode 100644
index 0000000..8659ac6
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invoke_from_inner.java
@@ -0,0 +1,37 @@
+// This test case once showed that `f[0].execute(x)' woudln't be
+// expanded properly, attempting to retrieve this$0 to be used in
+// place of `f[0]'.
+
+abstract class A {
+ abstract public void execute(C x);
+}
+
+class C {}
+
+class Z extends A {
+ public void execute (C x) {
+ System.out.println ("Z.execute");
+ }
+}
+
+public class invoke_from_inner extends A {
+
+ Z f[] = new Z[1];
+ class D extends C {
+ D (C x) {
+ f[0].execute (x);
+ execute (x);
+ }
+ }
+ public void execute (C x) {
+ System.out.println ("invoke_from_inner.execute");
+ }
+
+ public static void main (String a[]) {
+ new invoke_from_inner().foo();
+ }
+ void foo () {
+ f[0] = new Z();
+ new D(new C());
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/invoke_from_inner.out b/libjava/testsuite/libjava.lang/invoke_from_inner.out
new file mode 100644
index 0000000..1911e2f
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/invoke_from_inner.out
@@ -0,0 +1,2 @@
+Z.execute
+invoke_from_inner.execute