Fix another inner class bug: an inner class which is declared in a *static context...
[IRC.git] / Robust / src / Tests / inner.java
index 39ca0bd11314116ba35ac1bdaa36fefad62e4215..89e42a473a082c9acb1f536c0634e06e1e4bcb28 100644 (file)
@@ -1,31 +1,80 @@
-public class inner {
+public class inner extends innerp {
   int outer;
+  int f2;
 
+  public inner() {
+    super.outer=31;
+  }
 
   public static void main(String x[]) {
     inner i=new inner();
     i.dotest();
+    outerAnonymousInnerStatic(20, 30);
   }
 
   public void dotest() {
     outer=35;
+    outerprint();
     t tmp=new t();
     tmp.print();
+    outerAnonymousInner(100);
+  }
+  
+  public void outerprint() {
+      System.out.println("Outer class print: " + this.outer + "; " + this.f2);
+  }
+  
+  public void outerprintInnerp(innerCallback c) {
+      c.call();
+  }
+  
+  public void outerAnonymousInner(final int value) {
+      int j = 0; // this should not be included into the following anonymous inner class
+      this.outerprintInnerp(new innerCallback() {
+         public void call() {
+             System.out.println("innerCallback: " + value);
+         }
+      });
+  }
+  
+  public static void outerprintInnerpStatic(innerCallback c) {
+      c.call();
+  }
+  
+  public static void outerAnonymousInnerStatic(final int value, final int value1) {
+      outerprintInnerpStatic(new innerCallback() {
+         public void call() {
+             System.out.println("innerCallbackStatic: " + value + ", " + value1);
+         }
+      });
   }
 
   public class t extends innerpt {
     int outer;
+    int f3;
     public t() {
       t.this.outer=4;
+      f1=2;
+      f2=3;
+      f3=4;
+
     }
 
     public void print() {
       //should print 4 0 35
-
+      System.out.println("\t Inner class print: ");
       System.out.println(outer);
       System.out.println(super.outer);
+      t.super.outer = 1;
+      System.out.println(outer);
+      System.out.println(t.super.outer);
       System.out.println(inner.this.outer);
+      System.out.println(inner.super.outer);
+      System.out.println(f1);
+      System.out.println(f2);
+      System.out.println(f3);
+      outerprint();
     }
   }
 
-}
\ No newline at end of file
+}