Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8024809

javac, some lambda programs are rejected by flow analysis

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 8
    • 8
    • tools
    • b115
    • Verified

      This compiles

      public class Tmp
      {
          final Runnable r1 = ()->System.out.println(r1);
      }

      This does NOT . . . . . . . . . . . . . . . . . . . . . . . . .

      public class Tmp
      {
          final Runnable r1;

          final Runnable r2 = ()-> System.out.println(r1); // Error: r1 not
      initialized

          Tmp()
          {
              r1 = ()->System.out.println(r1); // Error: r1 not initialized
          }
      }

      This compiles . . . . . . . . . . . . . . . . . . . . . . . . .

      public class Tmp
      {
          final Object lock = new Object();

          final Runnable r2 = ()->{
              System.out.println(r2);
              synchronized (lock){
              }
          };
      }

      This does NOT . . . . . . . . . . . . . . . . . . . . . . . . .

      public class Tmp
      {
          final Object lock = new Object();

          final Runnable r2 = ()->{
              synchronized (lock){
                  System.out.println(r2); // Error: self-reference in initializer
              }
          };
      }


      reported by Zhong Yu in lambda-dev list.

            vromero Vicente Arturo Romero Zaldivar
            vromero Vicente Arturo Romero Zaldivar
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: