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

Unary post-increment with type variables crash javac during lowering

XMLWordPrintable

    • b39
    • x86
    • windows_xp, windows_7
    • Not verified

      FULL PRODUCT VERSION :
      java version "1.6.0_07"
      Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
      Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows XP [Version 5.1.2600]

      A DESCRIPTION OF THE PROBLEM :
      javac on
      import javax.xml.ws.Holder;

      public class testclass
      {

         private int CompareN( Holder<Integer> nMatch )
         {
            nMatch.value = 0;
            (nMatch.value)++ ;

      return 0;
         }


      }

      produces
      An exception has occurred in the compiler (1.6.0_07). Please file a bug at the Java Developer Connection (http://java.sun.com/webapp
      s/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank
       you.
      java.lang.AssertionError: (Integer)nMatch.value
              at com.sun.tools.javac.comp.Lower.abstractLval(Lower.java:1873)
              at com.sun.tools.javac.comp.Lower.lowerBoxedPostop(Lower.java:2699)
              at com.sun.tools.javac.comp.Lower.visitUnary(Lower.java:2739)
              at com.sun.tools.javac.tree.JCTree$JCUnary.accept(JCTree.java:1392)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:228)
              at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1074)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
              at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
              at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:2967)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:130)
              at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2290)
              at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2209)
              at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2013)
              at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:575)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1921)
              at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3104)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1199)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1118)
              at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
              at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
              at com.sun.tools.javac.main.Main.compile(Main.java:353)
              at com.sun.tools.javac.main.Main.compile(Main.java:279)
              at com.sun.tools.javac.main.Main.compile(Main.java:270)
              at com.sun.tools.javac.Main.compile(Main.java:69)
              at com.sun.tools.javac.Main.main(Main.java:54)


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      javac on
      import javax.xml.ws.Holder;

      public class testclass
      {

         private int CompareN( Holder<Integer> nMatch )
         {
            nMatch.value = 0;
            (nMatch.value)++ ;

      return 0;
         }


      }

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Either an error indicating the problem, or successful compilation.
      ACTUAL -
      failure above

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      An exception has occurred in the compiler (1.6.0_07). Please file a bug at the Java Developer Connection (http://java.sun.com/webapp
      s/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank
       you.
      java.lang.AssertionError: (Integer)nMatch.value
              at com.sun.tools.javac.comp.Lower.abstractLval(Lower.java:1873)
              at com.sun.tools.javac.comp.Lower.lowerBoxedPostop(Lower.java:2699)
              at com.sun.tools.javac.comp.Lower.visitUnary(Lower.java:2739)
              at com.sun.tools.javac.tree.JCTree$JCUnary.accept(JCTree.java:1392)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:228)
              at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1074)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:56)
              at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:146)
              at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:2967)
              at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:739)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:130)
              at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2290)
              at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2209)
              at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:639)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2013)
              at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:575)
              at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:44)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
              at com.sun.tools.javac.comp.Lower.translate(Lower.java:1921)
              at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3104)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1199)
              at com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1118)
              at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:765)
              at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:730)
              at com.sun.tools.javac.main.Main.compile(Main.java:353)
              at com.sun.tools.javac.main.Main.compile(Main.java:279)
              at com.sun.tools.javac.main.Main.compile(Main.java:270)
              at com.sun.tools.javac.Main.compile(Main.java:69)
              at com.sun.tools.javac.Main.main(Main.java:54)


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      public class testclass
      {

         private int CompareN( Holder<Integer> nMatch )
         {
            nMatch.value = 0;
            (nMatch.value)++ ;

      return 0;
         }


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

      CUSTOMER SUBMITTED WORKAROUND :
      change (nMatch.value)++ ;
      to nMatch.value = nMatch.value +1 ;

            mcimadamore Maurizio Cimadamore
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: