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

compiler crashes with exception on unary operation on float variable in lambda method invocation

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P1 P1
    • None
    • 9.1
    • tools

      Code:

      y$ cat LambdaUnary.java
      public class LambdaUnary {
          public static void main(String argv[]) {
              float f = 7;
              simp_float.method(~f);
          }

          interface SAM_float {
              int method (float arg);
          }

          static float f = 7;
          static SAM_float simp_float = (x) -> 7;
      }

      Java version:

      $ javac -version
      javac 1.9.0-ea

        Actual compilation result:

      $ javac LambdaUnary.java
      An exception has occurred in the compiler (1.9.0-ea). Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you.
      java.lang.NullPointerException
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1237)
      at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1598)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
      at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
      at com.sun.tools.javac.tree.TreeScanner.visitExec(TreeScanner.java:178)
      at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1416)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
      at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitBlock(Flow.java:999)
      at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:984)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
      at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitMethodDef(Flow.java:966)
      at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:836)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
      at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitClassDef(Flow.java:929)
      at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:744)
      at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
      at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:404)
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1325)
      at com.sun.tools.javac.comp.Flow$FlowAnalyzer.analyzeTree(Flow.java:1315)
      at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:212)
      at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1297)
      at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1266)
      at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:871)
      at com.sun.tools.javac.main.Main.compile(Main.java:254)
      at com.sun.tools.javac.main.Main.compile(Main.java:142)
      at com.sun.tools.javac.Main.compile(Main.java:56)
      at com.sun.tools.javac.Main.main(Main.java:42)

      Expected result:

      Have compiler.err.operator.cant.be.applied: ~, float, null error.

      It's regression, java 8 works fine.

            Unassigned Unassigned
            spikalev Sergei Pikalev (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: