test/langtools/tools/javac/desugar/BoxingAndSuper.java
changeset 51757 5b033f23aced
parent 51563 de411d537aae
equal deleted inserted replaced
51756:4bd35a5ec694 51757:5b033f23aced
    98                 "     protected Integer i=10;\n" +
    98                 "     protected Integer i=10;\n" +
    99                 "} ",
    99                 "} ",
   100                 "p.Test.dump()java.lang.Integer\n" +
   100                 "p.Test.dump()java.lang.Integer\n" +
   101                 "{\n" +
   101                 "{\n" +
   102                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)super.i " +
   102                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)super.i " +
   103                             "in (let /*synthetic*/ final Integer $le1 = super.i = Integer.valueOf((int)(super.i.intValue() + 1)) " +
   103                             "in (let super.i = Integer.valueOf((int)(super.i.intValue() + 1)); " +
   104                                 "in $le0));\n" +
   104                                 "in $le0));\n" +
   105                 "}\n");
   105                 "}\n");
   106         //qualified super, same package:
   106         //qualified super, same package:
   107         runTest("package p;\n" +
   107         runTest("package p;\n" +
   108                 "class Test extends Parent {\n" +
   108                 "class Test extends Parent {\n" +
   119                 "     protected Integer i=10;\n" +
   119                 "     protected Integer i=10;\n" +
   120                 "} ",
   120                 "} ",
   121                 "p.Test.Inner.dump()java.lang.Integer\n" +
   121                 "p.Test.Inner.dump()java.lang.Integer\n" +
   122                 "{\n" +
   122                 "{\n" +
   123                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)Test.access$001(this$0) " +
   123                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)Test.access$001(this$0) " +
   124                             "in (let /*synthetic*/ final Integer $le1 = Test.access$103(this$0, Integer.valueOf((int)(Test.access$201(this$0).intValue() + 1))) " +
   124                             "in (let Test.access$103(this$0, Integer.valueOf((int)(Test.access$201(this$0).intValue() + 1))); " +
   125                                 "in $le0));\n" +
   125                                 "in $le0));\n" +
   126                 "}\n" +
   126                 "}\n" +
   127                 "p.Test.access$001(p.Test)java.lang.Integer\n" +
   127                 "p.Test.access$001(p.Test)java.lang.Integer\n" +
   128                 "{\n" +
   128                 "{\n" +
   129                 "    return x0.i;\n" +
   129                 "    return x0.i;\n" +
   150                 "     protected Integer i=10;\n" +
   150                 "     protected Integer i=10;\n" +
   151                 "} ",
   151                 "} ",
   152                 "p1.Test.dump()java.lang.Integer\n" +
   152                 "p1.Test.dump()java.lang.Integer\n" +
   153                 "{\n" +
   153                 "{\n" +
   154                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)super.i " +
   154                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)super.i " +
   155                             "in (let /*synthetic*/ final Integer $le1 = super.i = Integer.valueOf((int)(super.i.intValue() + 1)) " +
   155                             "in (let super.i = Integer.valueOf((int)(super.i.intValue() + 1)); " +
   156                                 "in $le0));\n" +
   156                                 "in $le0));\n" +
   157                 "}\n");
   157                 "}\n");
   158         //qualified super, different packages:
   158         //qualified super, different packages:
   159         runTest("package p1;\n" +
   159         runTest("package p1;\n" +
   160                 "class Test extends p2.Parent {\n" +
   160                 "class Test extends p2.Parent {\n" +
   171                 "     protected Integer i=10;\n" +
   171                 "     protected Integer i=10;\n" +
   172                 "} ",
   172                 "} ",
   173                 "p1.Test.Inner.dump()java.lang.Integer\n" +
   173                 "p1.Test.Inner.dump()java.lang.Integer\n" +
   174                 "{\n" +
   174                 "{\n" +
   175                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)Test.access$001(this$0) " +
   175                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)Test.access$001(this$0) " +
   176                             "in (let /*synthetic*/ final Integer $le1 = Test.access$103(this$0, Integer.valueOf((int)(Test.access$201(this$0).intValue() + 1))) " +
   176                             "in (let Test.access$103(this$0, Integer.valueOf((int)(Test.access$201(this$0).intValue() + 1))); " +
   177                                 "in $le0));\n" +
   177                                 "in $le0));\n" +
   178                 "}\n" +
   178                 "}\n" +
   179                 "p1.Test.access$001(p1.Test)java.lang.Integer\n" +
   179                 "p1.Test.access$001(p1.Test)java.lang.Integer\n" +
   180                 "{\n" +
   180                 "{\n" +
   181                 "    return x0.i;\n" +
   181                 "    return x0.i;\n" +
   199                       "    }\n" +
   199                       "    }\n" +
   200                       "}";
   200                       "}";
   201         String expected =
   201         String expected =
   202                 "Test.dump()void\n" +
   202                 "Test.dump()void\n" +
   203                 "{\n" +
   203                 "{\n" +
   204                 "    (let /*synthetic*/ final Integer $le0 = i in (let /*synthetic*/ final Integer $le1 = i = Integer.valueOf((int)(i.intValue() + 1)) in $le0));\n" +
   204                 "    (let /*synthetic*/ final Integer $le0 = i in (let i = Integer.valueOf((int)(i.intValue() + 1)); in $le0));\n" +
   205                 "    (let /*synthetic*/ final Integer $le2 = (Integer)this.i in (let /*synthetic*/ final Integer $le3 = this.i = Integer.valueOf((int)(this.i.intValue() + 1)) in $le2));\n" +
   205                 "    (let /*synthetic*/ final Integer $le1 = (Integer)this.i in (let this.i = Integer.valueOf((int)(this.i.intValue() + 1)); in $le1));\n" +
   206                 "}\n";
   206                 "}\n";
   207         runTest(code, expected);
   207         runTest(code, expected);
   208         //qualified this:
   208         //qualified this:
   209         runTest("public class Test {\n" +
   209         runTest("public class Test {\n" +
   210                 "   Integer i;\n" +
   210                 "   Integer i;\n" +
   217                 "   }\n" +
   217                 "   }\n" +
   218                 "}",
   218                 "}",
   219                 "Test.Inner1.Inner2.dump()java.lang.Integer\n" +
   219                 "Test.Inner1.Inner2.dump()java.lang.Integer\n" +
   220                 "{\n" +
   220                 "{\n" +
   221                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)this$1.this$0.i" +
   221                 "    return (let /*synthetic*/ final Integer $le0 = (Integer)this$1.this$0.i" +
   222                            " in (let /*synthetic*/ final Integer $le1 = this$1.this$0.i = " +
   222                            " in (let this$1.this$0.i = " +
   223                                 "Integer.valueOf((int)(this$1.this$0.i.intValue() + 1)) " +
   223                                 "Integer.valueOf((int)(this$1.this$0.i.intValue() + 1)); " +
   224                                 "in $le0));\n" +
   224                                 "in $le0));\n" +
   225                 "}\n"
   225                 "}\n"
   226         );
   226         );
   227     }
   227     }
   228 
   228 
   327                     JCTree tree = (JCTree) node;
   327                     JCTree tree = (JCTree) node;
   328                     if (tree.hasTag(Tag.LETEXPR)) {
   328                     if (tree.hasTag(Tag.LETEXPR)) {
   329                         LetExpr le = (LetExpr) tree;
   329                         LetExpr le = (LetExpr) tree;
   330 
   330 
   331                         for (JCStatement var : le.defs) {
   331                         for (JCStatement var : le.defs) {
   332                             letExprRemap.put(((JCVariableDecl) var).name.toString(), "$le" + i++);
   332                             if (var.hasTag(Tag.VARDEF))
       
   333                                 letExprRemap.put(((JCVariableDecl) var).name.toString(), "$le" + i++);
   333                         }
   334                         }
   334                     }
   335                     }
   335                     return super.visitOther(node, p);
   336                     return super.visitOther(node, p);
   336                 }
   337                 }
   337 
   338