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

javac is generating let expressions unnecessarily

    XMLWordPrintable

Details

    • b132
    • x86
    • generic
    • Verified

    Backports

      Description

        FULL PRODUCT VERSION :
        javac 1.8.0_45

        ADDITIONAL OS VERSION INFORMATION :
        Darwin 14.5.0 Darwin Kernel Version 14.5.0

        A DESCRIPTION OF THE PROBLEM :
        NPE

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        compile the code given below

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        compile successfully
        ACTUAL -
        fail because of NPE


        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        java.lang.NullPointerException
        at com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:1020)
        at com.sun.tools.javac.comp.Lower.accessClass(Lower.java:1108)
        at com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:983)
        at com.sun.tools.javac.comp.Lower.access(Lower.java:1220)
        at com.sun.tools.javac.comp.Lower.access(Lower.java:1253)
        at com.sun.tools.javac.comp.Lower.visitAssignop(Lower.java:3218)
        at com.sun.tools.javac.tree.JCTree$JCAssignOp.accept(JCTree.java:1716)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
        at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
        at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
        at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
        at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
        at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.comp.Lower.visitNewClass(Lower.java:2915)
        at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1516)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2382)
        at com.sun.tools.javac.comp.Lower.visitAssign(Lower.java:3203)
        at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1686)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:245)
        at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1296)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
        at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:162)
        at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3561)
        at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:145)
        at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2828)
        at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2737)
        at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2508)
        at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
        at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2371)
        at com.sun.tools.javac.comp.Lower.translate(Lower.java:2390)
        at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3932)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1512)
        at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1356)
        at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860)
        at com.sun.tools.javac.main.Main.compile(Main.java:523)
        at com.sun.tools.javac.main.Main.compile(Main.java:381)
        at com.sun.tools.javac.main.Main.compile(Main.java:370)
        at com.sun.tools.javac.main.Main.compile(Main.java:361)
        at com.sun.tools.javac.Main.compile(Main.java:56)
        at com.sun.tools.javac.Main.main(Main.java:42)

        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        package base;

        public abstract class Base {
            protected int i = 1;
        }



        package sub;
        import base.Base;
        public class Sub extends Base{
            private Runnable r;
            private int i = 4;

            public void func(){
                r = new Runnable(){
                    public void run(){
                        Sub.super.i+=10;
                    }
                };
                r.run();
            }

        }
        ---------- END SOURCE ----------

        Attachments

          Issue Links

            Activity

              People

                vromero Vicente Arturo Romero Zaldivar
                webbuggrp Webbug Group
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: